blob: 4af9c7bf97d29ee893cd18e441626697d6045ed3 [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-Szmekb68dfb92018-01-19 17:54:30 +1100262meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400263
Adam Duskett08318a22018-01-15 06:25:46 -0500264if get_option('tests') != 'false'
265 cxx = find_program('c++', required : false)
266 if cxx.found()
267 # Used only for tests
268 add_languages('cpp')
269 endif
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400270endif
271
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500272want_ossfuzz = get_option('oss-fuzz')
273want_libfuzzer = get_option('llvm-fuzz')
274fuzzer_build = want_ossfuzz or want_libfuzzer
275if want_ossfuzz and want_libfuzzer
276 error('only one of oss-fuzz and llvm-fuzz can be specified')
277endif
278if want_libfuzzer
279 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
280endif
281if want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500282 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
283endif
284
Zbigniew Jędrzejewski-Szmek75cf1d62017-07-04 17:59:15 -0400285foreach arg : ['-Wextra',
Zbigniew Jędrzejewski-Szmek70160ce2017-10-03 12:11:49 +0200286 '-Werror=undef',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400287 '-Wlogical-op',
288 '-Wmissing-include-dirs',
289 '-Wold-style-definition',
290 '-Wpointer-arith',
291 '-Winit-self',
292 '-Wdeclaration-after-statement',
293 '-Wfloat-equal',
294 '-Wsuggest-attribute=noreturn',
295 '-Werror=missing-prototypes',
296 '-Werror=implicit-function-declaration',
297 '-Werror=missing-declarations',
298 '-Werror=return-type',
299 '-Werror=incompatible-pointer-types',
300 '-Werror=format=2',
301 '-Wstrict-prototypes',
302 '-Wredundant-decls',
303 '-Wmissing-noreturn',
Zbigniew Jędrzejewski-Szmek97279d82017-11-20 14:23:40 +0100304 '-Wimplicit-fallthrough=5',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400305 '-Wshadow',
306 '-Wendif-labels',
307 '-Wstrict-aliasing=2',
308 '-Wwrite-strings',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400309 '-Werror=overflow',
310 '-Wdate-time',
311 '-Wnested-externs',
312 '-ffast-math',
313 '-fno-common',
314 '-fdiagnostics-show-option',
315 '-fno-strict-aliasing',
316 '-fvisibility=hidden',
317 '-fstack-protector',
318 '-fstack-protector-strong',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400319 '--param=ssp-buffer-size=4',
320 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400321 if cc.has_argument(arg)
322 add_project_arguments(arg, language : 'c')
323 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400324endforeach
325
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500326# the oss-fuzz fuzzers are not built with -fPIE, so don't
327# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500328if not fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500329 if cc.has_argument('-fPIE')
330 add_project_arguments('-fPIE', language : 'c')
331 endif
332endif
333
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400334# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
335# arguments, just emits a warnings. So test for the "positive" version instead.
336foreach arg : ['unused-parameter',
337 'missing-field-initializers',
338 'unused-result',
Zbigniew Jędrzejewski-Szmekfb1b5882017-09-04 19:49:12 +0300339 'format-signedness',
340 'error=nonnull', # work-around for gcc 7.1 turning this on on its own
341 ]
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400342 if cc.has_argument('-W' + arg)
343 add_project_arguments('-Wno-' + arg, language : 'c')
344 endif
345endforeach
346
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400347if cc.compiles('
348 #include <time.h>
349 #include <inttypes.h>
350 typedef uint64_t usec_t;
351 usec_t now(clockid_t clock);
352 int main(void) {
353 struct timespec now;
354 return 0;
355 }
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400356', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400357 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400358endif
359
360if cc.get_id() == 'clang'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400361 foreach arg : ['-Wno-typedef-redefinition',
362 '-Wno-gnu-variable-sized-type-not-at-end',
363 ]
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400364 if cc.has_argument(arg,
365 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400366 add_project_arguments(arg, language : 'c')
367 endif
368 endforeach
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400369endif
370
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400371link_test_c = files('tools/meson-link-test.c')
372
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400373# --as-needed and --no-undefined are provided by meson by default,
374# run mesonconf to see what is enabled
375foreach arg : ['-Wl,-z,relro',
376 '-Wl,-z,now',
377 '-pie',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400378 ]
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400379
380 have = run_command(check_compilation_sh,
381 cc.cmd_array(), '-x', 'c', arg,
382 '-include', link_test_c).returncode() == 0
383 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500384 if have and (arg != '-pie' or not fuzzer_build)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400385 add_project_link_arguments(arg, language : 'c')
386 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400387endforeach
388
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100389# Check if various sanitizers are supported
390sanitizers = []
391foreach arg : ['address']
392
393 have = run_command(check_compilation_sh,
394 cc.cmd_array(), '-x', 'c',
395 '-fsanitize=@0@'.format(arg),
396 '-include', link_test_c).returncode() == 0
397 message('@0@ sanitizer supported: @1@'.format(arg, have ? 'yes' : 'no'))
398 if have
399 sanitizers += arg
400 endif
401endforeach
402
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400403if get_option('buildtype') != 'debug'
404 foreach arg : ['-ffunction-sections',
405 '-fdata-sections']
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400406 if cc.has_argument(arg,
407 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400408 add_project_arguments(arg, language : 'c')
409 endif
410 endforeach
411
412 foreach arg : ['-Wl,--gc-sections']
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400413 have = run_command(check_compilation_sh,
414 cc.cmd_array(), '-x', 'c', arg,
415 '-include', link_test_c).returncode() == 0
416 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
417 if have
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400418 add_project_link_arguments(arg, language : 'c')
419 endif
420 endforeach
421endif
422
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400423cpp = ' '.join(cc.cmd_array()) + ' -E'
424
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400425#####################################################################
426# compilation result tests
427
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400428conf.set('_GNU_SOURCE', true)
429conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400430
431conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
432conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
433conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
434conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
435conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
436conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
437conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
438
439decl_headers = '''
440#include <uchar.h>
441#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000442#include <linux/fib_rules.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400443'''
444# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
445
446foreach decl : ['char16_t',
447 'char32_t',
448 'key_serial_t',
449 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000450 'struct fib_rule_uid_range',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400451 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400452
453 # We get -1 if the size cannot be determined
454 have = cc.sizeof(decl, prefix : decl_headers) > 0
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200455 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400456endforeach
457
458foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
459 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
460 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
461 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530462 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400463 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
464 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
465 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
466 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
467 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530468 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400469 # if_tunnel.h is buggy and cannot be included on its own
470 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
471 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
472 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
473 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
474 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
475 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
476 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530477 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400478 ['NDA_IFINDEX', 'linux/neighbour.h'],
479 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000480 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400481 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530482 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400483 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400484 prefix = decl.length() > 2 ? decl[2] : ''
485 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200486 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400487endforeach
488
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400489foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200490 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400491endforeach
492
493foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100494 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100495 ['gettid', '''#include <sys/types.h>
496 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100497 ['pivot_root', '''#include <stdlib.h>
498 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100499 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400500 #include <sys/stat.h>
501 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100502 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100503 ['renameat2', '''#include <stdio.h>
504 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400505 ['kcmp', '''#include <linux/kcmp.h>'''],
506 ['keyctl', '''#include <sys/types.h>
507 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100508 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400509 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200510 ['bpf', '''#include <sys/syscall.h>
511 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmek38f1ae02017-04-19 16:14:16 -0400512 ['explicit_bzero' , '''#include <string.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400513]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400514
Lennart Poettering85db59b2017-12-25 12:01:14 +0100515 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200516 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400517endforeach
518
Lennart Poettering85db59b2017-12-25 12:01:14 +0100519if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200520 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200521 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400522else
523 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200524 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200525 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400526endif
527
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400528#####################################################################
529
530sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400531awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400532m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400533stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400534git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100535env = find_program('env')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400536
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400537meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400538mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400539test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
540splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400541
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400542# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
543# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500544progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400545 ['quotacheck', '/usr/sbin/quotacheck' ],
546 ['kill', '/usr/bin/kill' ],
547 ['kmod', '/usr/bin/kmod' ],
548 ['kexec', '/usr/sbin/kexec' ],
549 ['sulogin', '/usr/sbin/sulogin' ],
550 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
551 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
552 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
553 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
554 ]
555foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400556 path = get_option(prog[0] + '-path')
557 if path != ''
558 message('Using @1@ for @0@'.format(prog[0], path))
559 else
560 exe = find_program(prog[0],
561 '/usr/sbin/' + prog[0],
562 '/sbin/' + prog[0],
563 required: false)
564 path = exe.found() ? exe.path() : prog[1]
565 endif
566 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
567 conf.set_quoted(name, path)
568 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400569endforeach
570
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500571conf.set_quoted('TELINIT', get_option('telinit-path'))
572
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400573if run_command('ln', '--relative', '--help').returncode() != 0
574 error('ln does not support --relative')
575endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400576
577############################################################
578
579gperf = find_program('gperf')
580
581gperf_test_format = '''
582#include <string.h>
583const char * in_word_set(const char *, @0@);
584@1@
585'''
586gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
587gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
588gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
589if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400590 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400591else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400592 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
593 if cc.compiles(gperf_test)
594 gperf_len_type = 'unsigned'
595 else
596 error('unable to determine gperf len type')
597 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400598endif
599message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400600conf.set('GPERF_LEN_TYPE', gperf_len_type,
601 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400602
603############################################################
604
605if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400606 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400607endif
608foreach header : ['linux/btrfs.h',
609 'linux/memfd.h',
610 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200611 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400612 'valgrind/memcheck.h',
613 'valgrind/valgrind.h',
614 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400615
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200616 conf.set10('HAVE_' + header.underscorify().to_upper(),
617 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400618endforeach
619
620############################################################
621
622conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400623conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
624gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400625
626default_hierarchy = get_option('default-hierarchy')
627conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
628 description : 'default cgroup hierarchy as string')
629if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400630 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400631elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400632 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400633else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400634 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400635endif
636
637time_epoch = get_option('time-epoch')
638if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400639 NEWS = files('NEWS')
640 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400641endif
642time_epoch = time_epoch.to_int()
643conf.set('TIME_EPOCH', time_epoch)
644
645system_uid_max = get_option('system-uid-max')
646if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400647 system_uid_max = run_command(
648 awk,
649 'BEGIN { uid=999 } /^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
650 '/etc/login.defs').stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400651endif
652system_uid_max = system_uid_max.to_int()
653conf.set('SYSTEM_UID_MAX', system_uid_max)
654substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400655message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400656
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400657system_gid_max = get_option('system-gid-max')
658if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400659 system_gid_max = run_command(
660 awk,
661 'BEGIN { gid=999 } /^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
662 '/etc/login.defs').stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400663endif
664system_gid_max = system_gid_max.to_int()
665conf.set('SYSTEM_GID_MAX', system_gid_max)
666substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400667message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400668
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100669dynamic_uid_min = get_option('dynamic-uid-min').to_int()
670dynamic_uid_max = get_option('dynamic-uid-max').to_int()
671conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
672conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
673substs.set('dynamicuidmin', dynamic_uid_min)
674substs.set('dynamicuidmax', dynamic_uid_max)
675
676container_uid_base_min = get_option('container-uid-base-min').to_int()
677container_uid_base_max = get_option('container-uid-base-max').to_int()
678conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
679conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
680substs.set('containeruidbasemin', container_uid_base_min)
681substs.set('containeruidbasemax', container_uid_base_max)
682
Lennart Poetteringafde4572017-12-05 11:00:24 +0100683nobody_user = get_option('nobody-user')
684nobody_group = get_option('nobody-group')
685
686getent_result = run_command('getent', 'passwd', '65534')
687if getent_result.returncode() == 0
688 name = getent_result.stdout().split(':')[0]
689 if name != nobody_user
690 message('WARNING:\n' +
691 ' The local user with the UID 65534 does not match the configured user name "@0@" of the nobody user (its name is @1@).\n'.format(nobody_user, name) +
692 ' Your build will result in an user table setup that is incompatible with the local system.')
693 endif
694endif
695id_result = run_command('id', '-u', nobody_user)
696if id_result.returncode() == 0
697 id = id_result.stdout().to_int()
698 if id != 65534
699 message('WARNING:\n' +
700 ' The local user with the configured user name "@0@" of the nobody user does not have UID 65534 (it has @1@).\n'.format(nobody_user, id) +
701 ' Your build will result in an user table setup that is incompatible with the local system.')
702 endif
703endif
704
705getent_result = run_command('getent', 'group', '65534')
706if getent_result.returncode() == 0
707 name = getent_result.stdout().split(':')[0]
708 if name != nobody_group
709 message('WARNING:\n' +
710 ' The local group with the GID 65534 does not match the configured group name "@0@" of the nobody group (its name is @1@).\n'.format(nobody_group, name) +
711 ' Your build will result in an group table setup that is incompatible with the local system.')
712 endif
713endif
714id_result = run_command('id', '-g', nobody_group)
715if id_result.returncode() == 0
716 id = id_result.stdout().to_int()
717 if id != 65534
718 message('WARNING:\n' +
719 ' The local group with the configured group name "@0@" of the nobody group does not have UID 65534 (it has @1@).\n'.format(nobody_group, id) +
720 ' Your build will result in an group table setup that is incompatible with the local system.')
721 endif
722endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900723if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
724 message('WARNING:\n' +
725 ' The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
726 ' Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
727endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100728
729conf.set_quoted('NOBODY_USER_NAME', nobody_user)
730conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900731substs.set('NOBODY_USER_NAME', nobody_user)
732substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100733
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400734tty_gid = get_option('tty-gid')
735conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400736substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400737
Ikey Doherty84786b82017-12-03 12:28:23 +0000738# Ensure provided GID argument is numeric, otherwise fallback to default assignment
739if get_option('users-gid') != ''
Yu Watanabed6806872017-12-05 14:01:39 +0900740 users_gid = get_option('users-gid').to_int()
Ikey Doherty84786b82017-12-03 12:28:23 +0000741else
Yu Watanabed6806872017-12-05 14:01:39 +0900742 users_gid = '-'
Ikey Doherty84786b82017-12-03 12:28:23 +0000743endif
744substs.set('USERS_GID', users_gid)
745
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400746if get_option('adm-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400747 m4_defines += ['-DENABLE_ADM_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400748endif
749
750if get_option('wheel-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400751 m4_defines += ['-DENABLE_WHEEL_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400752endif
753
754substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700755substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400756
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400757kill_user_processes = get_option('default-kill-user-processes')
758conf.set10('KILL_USER_PROCESSES', kill_user_processes)
759substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400760
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400761dns_servers = get_option('dns-servers')
762conf.set_quoted('DNS_SERVERS', dns_servers)
763substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400764
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400765ntp_servers = get_option('ntp-servers')
766conf.set_quoted('NTP_SERVERS', ntp_servers)
767substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400768
769conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
770
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400771substs.set('SUSHELL', get_option('debug-shell'))
772substs.set('DEBUGTTY', get_option('debug-tty'))
773
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400774debug = get_option('debug')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200775enable_debug_hashmap = false
776enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400777if debug != ''
778 foreach name : debug.split(',')
779 if name == 'hashmap'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200780 enable_debug_hashmap = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400781 elif name == 'mmap-cache'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200782 enable_debug_mmap_cache = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400783 else
784 message('unknown debug option "@0@", ignoring'.format(name))
785 endif
786 endforeach
787endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200788conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
789conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400790
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400791#####################################################################
792
793threads = dependency('threads')
794librt = cc.find_library('rt')
795libm = cc.find_library('m')
796libdl = cc.find_library('dl')
797libcrypt = cc.find_library('crypt')
798
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400799libcap = dependency('libcap', required : false)
800if not libcap.found()
801 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
802 libcap = cc.find_library('cap')
803endif
804
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400805libmount = dependency('mount',
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -0500806 version : '>= 2.30',
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500807 required : not fuzzer_build)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400808
809want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500810if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400811 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400812 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400813 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200814 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400815else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200816 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400817 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400818endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200819conf.set10('HAVE_SECCOMP', have)
820m4_defines += have ? ['-DHAVE_SECCOMP'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400821
822want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500823if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400824 libselinux = dependency('libselinux',
825 version : '>= 2.1.9',
826 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200827 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400828else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200829 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400830 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400831endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200832conf.set10('HAVE_SELINUX', have)
833m4_defines += have ? ['-DHAVE_SELINUX'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400834
835want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500836if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400837 libapparmor = dependency('libapparmor',
838 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200839 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400840else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200841 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400842 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400843endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200844conf.set10('HAVE_APPARMOR', have)
845m4_defines += have ? ['-DHAVE_APPARMOR'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400846
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400847smack_run_label = get_option('smack-run-label')
848if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400849 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
850 m4_defines += ['-DHAVE_SMACK_RUN_LABEL']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400851endif
852
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400853want_polkit = get_option('polkit')
854install_polkit = false
855install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500856if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400857 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400858
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400859 libpolkit = dependency('polkit-gobject-1',
860 required : false)
861 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
862 message('Old polkit detected, will install pkla files')
863 install_polkit_pkla = true
864 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400865endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200866conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400867
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400868want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500869if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400870 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200871 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400872else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200873 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400874 libacl = []
875endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200876conf.set10('HAVE_ACL', have)
877m4_defines += have ? ['-DHAVE_ACL'] : []
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400878
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400879want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500880if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400881 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200882 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400883else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200884 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400885 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400886endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200887conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400888
889want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500890if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400891 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200892 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400893else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200894 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400895 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400896endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200897conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400898
899want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500900if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400901 libkmod = dependency('libkmod',
902 version : '>= 15',
903 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200904 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400905else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200906 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400907 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400908endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200909conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400910
911want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500912if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400913 libpam = cc.find_library('pam', required : want_pam == 'true')
914 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200915 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400916else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200917 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400918 libpam = []
919 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400920endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200921conf.set10('HAVE_PAM', have)
922m4_defines += have ? ['-DHAVE_PAM'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400923
924want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500925if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400926 libmicrohttpd = dependency('libmicrohttpd',
927 version : '>= 0.9.33',
928 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200929 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400930else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200931 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400932 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400933endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200934conf.set10('HAVE_MICROHTTPD', have)
935m4_defines += have ? ['-DHAVE_MICROHTTPD'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400936
937want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500938if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400939 libcryptsetup = dependency('libcryptsetup',
940 version : '>= 1.6.0',
941 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200942 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400943else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200944 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400945 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400946endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200947conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400948
949want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500950if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400951 libcurl = dependency('libcurl',
952 version : '>= 7.32.0',
953 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200954 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400955else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200956 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400957 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400958endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200959conf.set10('HAVE_LIBCURL', have)
960m4_defines += have ? ['-DHAVE_LIBCURL'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400961
962want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400963want_libidn2 = get_option('libidn2')
964if want_libidn == 'true' and want_libidn2 == 'true'
965 error('libidn and libidn2 cannot be requested simultaneously')
966endif
967
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500968if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400969 libidn = dependency('libidn',
970 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200971 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400972else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200973 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400974 libidn = []
975endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200976conf.set10('HAVE_LIBIDN', have)
977m4_defines += have ? ['-DHAVE_LIBIDN'] : []
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500978if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400979 # libidn is used for both libidn and libidn2 objects
980 libidn = dependency('libidn2',
981 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200982 have = libidn.found()
983else
984 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400985endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200986conf.set10('HAVE_LIBIDN2', have)
987m4_defines += have ? ['-DHAVE_LIBIDN2'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400988
989want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500990if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400991 libiptc = dependency('libiptc',
992 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200993 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400994else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200995 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400996 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400997endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200998conf.set10('HAVE_LIBIPTC', have)
999m4_defines += have ? ['-DHAVE_LIBIPTC'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001000
1001want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001002if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001003 libqrencode = dependency('libqrencode',
1004 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001005 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001006else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001007 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001008 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001009endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001010conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001011
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001012want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001013if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001014 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1015 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001016 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001017else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001018 have = false
1019endif
1020if not have
1021 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001022 libgcrypt = []
1023 libgpg_error = []
1024endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001025conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001026
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001027want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001028if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001029 libgnutls = dependency('gnutls',
1030 version : '>= 3.1.4',
1031 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001032 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001033else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001034 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001035 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001036endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001037conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001038
1039want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001040if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001041 libdw = dependency('libdw',
1042 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001043 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001044else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001045 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001046 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001047endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001048conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001049
1050want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001051if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001052 libz = dependency('zlib',
1053 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001054 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001055else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001056 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001057 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001058endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001059conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001060
1061want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001062if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001063 libbzip2 = cc.find_library('bz2',
1064 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001065 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001066else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001067 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001068 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001069endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001070conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001071
1072want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001073if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001074 libxz = dependency('liblzma',
1075 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001076 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001077else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001078 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001079 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001080endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001081conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001082
1083want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001084if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001085 liblz4 = dependency('liblz4',
1086 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001087 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001088else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001089 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001090 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001091endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001092conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001093
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001094want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001095if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001096 libxkbcommon = dependency('xkbcommon',
1097 version : '>= 0.3.0',
1098 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001099 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001100else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001101 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001102 libxkbcommon = []
1103endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001104conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001105
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001106want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001107if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001108 libglib = dependency('glib-2.0',
1109 version : '>= 2.22.0',
1110 required : want_glib == 'true')
1111 libgobject = dependency('gobject-2.0',
1112 version : '>= 2.22.0',
1113 required : want_glib == 'true')
1114 libgio = dependency('gio-2.0',
1115 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001116 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001117else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001118 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001119 libglib = []
1120 libgobject = []
1121 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001122endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001123conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001124
1125want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001126if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001127 libdbus = dependency('dbus-1',
1128 version : '>= 1.3.2',
1129 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001130 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001131else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001132 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001133 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001134endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001135conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001136
Yu Watanabe42303dc2017-06-18 05:22:32 +09001137default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001138if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001139 default_dnssec = 'no'
1140endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001141if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001142 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1143 default_dnssec = 'no'
1144endif
1145conf.set('DEFAULT_DNSSEC_MODE',
1146 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1147substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1148
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001149want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001150if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001151 have = (conf.get('HAVE_LIBCURL') == 1 and
1152 conf.get('HAVE_ZLIB') == 1 and
1153 conf.get('HAVE_BZIP2') == 1 and
1154 conf.get('HAVE_XZ') == 1 and
1155 conf.get('HAVE_GCRYPT') == 1)
1156 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001157 error('importd support was requested, but dependencies are not available')
1158 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001159else
1160 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001161endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001162conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001163
1164want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001165if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001166 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1167 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001168 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1169 # it's possible to build one without the other. Complain only if
1170 # support was explictly requested. The auxiliary files like sysusers
1171 # config should be installed when any of the programs are built.
1172 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1173 error('remote support was requested, but dependencies are not available')
1174 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001175 have = have_deps[0] or have_deps[1]
1176else
1177 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001178endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001179conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001180
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001181foreach term : ['utmp',
1182 'hibernate',
1183 'environment-d',
1184 'binfmt',
1185 'coredump',
1186 'resolve',
1187 'logind',
1188 'hostnamed',
1189 'localed',
1190 'machined',
1191 'networkd',
1192 'timedated',
1193 'timesyncd',
1194 'myhostname',
1195 'firstboot',
1196 'randomseed',
1197 'backlight',
1198 'vconsole',
1199 'quotacheck',
1200 'sysusers',
1201 'tmpfiles',
1202 'hwdb',
1203 'rfkill',
1204 'ldconfig',
1205 'efi',
1206 'tpm',
1207 'ima',
1208 'smack',
1209 'gshadow',
1210 'idn',
1211 'nss-systemd']
1212 have = get_option(term)
1213 name = 'ENABLE_' + term.underscorify().to_upper()
1214 conf.set10(name, have)
1215 m4_defines += have ? ['-D' + name] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001216endforeach
1217
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001218want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001219install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001220slow_tests = get_option('slow-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001221tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001222fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001223
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001224conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001225
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001226#####################################################################
1227
1228if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001229 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001230
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001231 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001232 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001233 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001234 elif efi_arch == 'x86_64'
1235 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001236 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001237 elif efi_arch == 'arm'
1238 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001239 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001240 elif efi_arch == 'aarch64'
1241 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001242 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001243 else
1244 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001245 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001246 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001247
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001248 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001249 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001250
1251 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001252else
1253 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001254endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001255conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001256
1257#####################################################################
1258
1259config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001260 output : 'config.h',
1261 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001262
1263includes = include_directories('src/basic',
1264 'src/shared',
1265 'src/systemd',
1266 'src/journal',
1267 'src/resolve',
1268 'src/timesync',
1269 'src/login',
1270 'src/udev',
1271 'src/libudev',
1272 'src/core',
1273 'src/libsystemd/sd-bus',
1274 'src/libsystemd/sd-device',
1275 'src/libsystemd/sd-hwdb',
1276 'src/libsystemd/sd-id128',
1277 'src/libsystemd/sd-netlink',
1278 'src/libsystemd/sd-network',
1279 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001280 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001281
1282add_project_arguments('-include', 'config.h', language : 'c')
1283
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001284subdir('po')
1285subdir('catalog')
1286subdir('src/systemd')
1287subdir('src/basic')
1288subdir('src/libsystemd')
1289subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001290subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001291subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001292
1293libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001294 'journal-core',
1295 libjournal_core_sources,
1296 journald_gperf_c,
1297 include_directories : includes,
1298 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001299
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001300libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001301libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001302 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001303 '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 +02001304 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001305 include_directories : includes,
1306 link_args : ['-shared',
1307 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001308 link_with : [libbasic,
1309 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001310 link_whole : [libsystemd_static,
1311 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001312 dependencies : [threads,
1313 librt,
1314 libxz,
1315 liblz4],
1316 link_depends : libsystemd_sym,
1317 install : true,
1318 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001319
1320############################################################
1321
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001322# binaries that have --help and are intended for use by humans,
1323# usually, but not always, installed in /bin.
1324public_programs = []
1325
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001326subdir('src/libudev')
1327subdir('src/shared')
1328subdir('src/core')
1329subdir('src/udev')
1330subdir('src/network')
1331
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001332subdir('src/analyze')
1333subdir('src/journal-remote')
1334subdir('src/coredump')
1335subdir('src/hostname')
1336subdir('src/import')
1337subdir('src/kernel-install')
1338subdir('src/locale')
1339subdir('src/machine')
1340subdir('src/nspawn')
1341subdir('src/resolve')
1342subdir('src/timedate')
1343subdir('src/timesync')
1344subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001345subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001346
1347subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001348subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001349subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001350subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001351
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001352############################################################
1353
1354# only static linking apart from libdl, to make sure that the
1355# module is linked to all libraries that it uses.
1356test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001357 'test-dlopen',
1358 test_dlopen_c,
1359 include_directories : includes,
1360 link_with : [libbasic],
1361 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001362
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001363foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001364 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001365 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001366 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001367
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001368 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001369 if condition
1370 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001371
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001372 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1373 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001374
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001375 nss = shared_library(
1376 'nss_' + module,
1377 'src/nss-@0@/nss-@0@.c'.format(module),
1378 version : '2',
1379 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001380 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1381 link_args : ['-Wl,-z,nodelete',
1382 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001383 '-Wl,--version-script=' + version_script_arg,
1384 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001385 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001386 libbasic],
1387 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001388 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001389 link_depends : sym,
1390 install : true,
1391 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001392
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001393 # We cannot use shared_module because it does not support version suffix.
1394 # Unfortunately shared_library insists on creating the symlink…
1395 meson.add_install_script('sh', '-c',
1396 'rm $DESTDIR@0@/libnss_@1@.so'
1397 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001398
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001399 test('dlopen-nss_' + module,
1400 test_dlopen,
1401 args : [nss.full_path()]) # path to dlopen must include a slash
1402 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001403endforeach
1404
1405############################################################
1406
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001407executable('systemd',
1408 systemd_sources,
1409 include_directories : includes,
1410 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001411 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001412 dependencies : [threads,
1413 librt,
1414 libseccomp,
1415 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001416 libmount,
1417 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001418 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001419 install : true,
1420 install_dir : rootlibexecdir)
1421
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001422exe = executable('systemd-analyze',
1423 systemd_analyze_sources,
1424 include_directories : includes,
1425 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001426 libshared],
1427 dependencies : [threads,
1428 librt,
1429 libseccomp,
1430 libselinux,
1431 libmount,
1432 libblkid],
1433 install_rpath : rootlibexecdir,
1434 install : true)
1435public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001436
1437executable('systemd-journald',
1438 systemd_journald_sources,
1439 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001440 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001441 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001442 dependencies : [threads,
1443 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001444 liblz4,
1445 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001446 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001447 install : true,
1448 install_dir : rootlibexecdir)
1449
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001450exe = executable('systemd-cat',
1451 systemd_cat_sources,
1452 include_directories : includes,
1453 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001454 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001455 dependencies : [threads],
1456 install_rpath : rootlibexecdir,
1457 install : true)
1458public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001459
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001460exe = executable('journalctl',
1461 journalctl_sources,
1462 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001463 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001464 dependencies : [threads,
1465 libqrencode,
1466 libxz,
1467 liblz4],
1468 install_rpath : rootlibexecdir,
1469 install : true,
1470 install_dir : rootbindir)
1471public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001472
1473executable('systemd-getty-generator',
1474 'src/getty-generator/getty-generator.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
1481executable('systemd-debug-generator',
1482 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001483 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001484 link_with : [libshared],
1485 install_rpath : rootlibexecdir,
1486 install : true,
1487 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001488
1489executable('systemd-fstab-generator',
1490 'src/fstab-generator/fstab-generator.c',
1491 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001492 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001493 link_with : [libshared],
1494 install_rpath : rootlibexecdir,
1495 install : true,
1496 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001497
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001498if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001499 executable('30-systemd-environment-d-generator',
1500 'src/environment-d-generator/environment-d-generator.c',
1501 include_directories : includes,
1502 link_with : [libshared],
1503 install_rpath : rootlibexecdir,
1504 install : true,
1505 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001506
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001507 meson.add_install_script(meson_make_symlink,
1508 join_paths(sysconfdir, 'environment'),
1509 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001510endif
1511
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001512if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001513 executable('systemd-hibernate-resume-generator',
1514 'src/hibernate-resume/hibernate-resume-generator.c',
1515 include_directories : includes,
1516 link_with : [libshared],
1517 install_rpath : rootlibexecdir,
1518 install : true,
1519 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001520
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001521 executable('systemd-hibernate-resume',
1522 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001523 include_directories : includes,
1524 link_with : [libshared],
1525 install_rpath : rootlibexecdir,
1526 install : true,
1527 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001528endif
1529
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001530if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001531 executable('systemd-gpt-auto-generator',
1532 'src/gpt-auto-generator/gpt-auto-generator.c',
1533 'src/basic/blkid-util.h',
1534 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001535 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001536 dependencies : libblkid,
1537 install_rpath : rootlibexecdir,
1538 install : true,
1539 install_dir : systemgeneratordir)
1540
1541 exe = executable('systemd-dissect',
1542 'src/dissect/dissect.c',
1543 include_directories : includes,
1544 link_with : [libshared],
1545 install_rpath : rootlibexecdir,
1546 install : true,
1547 install_dir : rootlibexecdir)
1548 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001549endif
1550
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001551if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001552 executable('systemd-resolved',
1553 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001554 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001555 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001556 libbasic_gcrypt,
1557 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001558 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001559 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001560 libm,
1561 libidn],
1562 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001563 install : true,
1564 install_dir : rootlibexecdir)
1565
1566 exe = executable('systemd-resolve',
1567 systemd_resolve_sources,
1568 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001569 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001570 libbasic_gcrypt,
1571 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001572 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001573 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001574 libm,
1575 libidn],
1576 install_rpath : rootlibexecdir,
1577 install : true)
1578 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001579endif
1580
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001581if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001582 executable('systemd-logind',
1583 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001584 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001585 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001586 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001587 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001588 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001589 install_rpath : rootlibexecdir,
1590 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001591 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001592
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001593 exe = executable('loginctl',
1594 loginctl_sources,
1595 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001596 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001597 dependencies : [threads,
1598 liblz4,
1599 libxz],
1600 install_rpath : rootlibexecdir,
1601 install : true,
1602 install_dir : rootbindir)
1603 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001604
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001605 exe = executable('systemd-inhibit',
1606 'src/login/inhibit.c',
1607 include_directories : includes,
1608 link_with : [libshared],
1609 install_rpath : rootlibexecdir,
1610 install : true,
1611 install_dir : rootbindir)
1612 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001613
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001614 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001615 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1616 pam_systemd = shared_library(
1617 'pam_systemd',
1618 pam_systemd_c,
1619 name_prefix : '',
1620 include_directories : includes,
1621 link_args : ['-shared',
1622 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001623 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001624 libshared_static],
1625 dependencies : [threads,
1626 libpam,
1627 libpam_misc],
1628 link_depends : pam_systemd_sym,
1629 install : true,
1630 install_dir : pamlibdir)
1631
1632 test('dlopen-pam_systemd',
1633 test_dlopen,
1634 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1635 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001636endif
1637
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001638if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001639 executable('systemd-user-sessions',
1640 'src/user-sessions/user-sessions.c',
1641 include_directories : includes,
1642 link_with : [libshared],
1643 install_rpath : rootlibexecdir,
1644 install : true,
1645 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001646endif
1647
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001648if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001649 exe = executable('bootctl',
1650 'src/boot/bootctl.c',
1651 include_directories : includes,
1652 link_with : [libshared],
1653 dependencies : [libblkid],
1654 install_rpath : rootlibexecdir,
1655 install : true)
1656 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001657endif
1658
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001659exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1660 include_directories : includes,
1661 link_with : [libshared],
1662 dependencies : [threads],
1663 install_rpath : rootlibexecdir,
1664 install : true)
1665public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001666
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001667exe = executable('systemctl', 'src/systemctl/systemctl.c',
1668 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001669 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001670 dependencies : [threads,
1671 libcap,
1672 libselinux,
1673 libxz,
1674 liblz4],
1675 install_rpath : rootlibexecdir,
1676 install : true,
1677 install_dir : rootbindir)
1678public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001679
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001680if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001681 executable('systemd-backlight',
1682 'src/backlight/backlight.c',
1683 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001684 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001685 install_rpath : rootlibexecdir,
1686 install : true,
1687 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001688endif
1689
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001690if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001691 executable('systemd-rfkill',
1692 'src/rfkill/rfkill.c',
1693 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001694 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001695 install_rpath : rootlibexecdir,
1696 install : true,
1697 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001698endif
1699
1700executable('systemd-system-update-generator',
1701 'src/system-update-generator/system-update-generator.c',
1702 include_directories : includes,
1703 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001704 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001705 install : true,
1706 install_dir : systemgeneratordir)
1707
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001708if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001709 executable('systemd-cryptsetup',
1710 'src/cryptsetup/cryptsetup.c',
1711 include_directories : includes,
1712 link_with : [libshared],
1713 dependencies : [libcryptsetup],
1714 install_rpath : rootlibexecdir,
1715 install : true,
1716 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001717
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001718 executable('systemd-cryptsetup-generator',
1719 'src/cryptsetup/cryptsetup-generator.c',
1720 include_directories : includes,
1721 link_with : [libshared],
1722 dependencies : [libcryptsetup],
1723 install_rpath : rootlibexecdir,
1724 install : true,
1725 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001726
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001727 executable('systemd-veritysetup',
1728 'src/veritysetup/veritysetup.c',
1729 include_directories : includes,
1730 link_with : [libshared],
1731 dependencies : [libcryptsetup],
1732 install_rpath : rootlibexecdir,
1733 install : true,
1734 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001735
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001736 executable('systemd-veritysetup-generator',
1737 'src/veritysetup/veritysetup-generator.c',
1738 include_directories : includes,
1739 link_with : [libshared],
1740 dependencies : [libcryptsetup],
1741 install_rpath : rootlibexecdir,
1742 install : true,
1743 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001744endif
1745
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001746if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001747 executable('systemd-sysv-generator',
1748 'src/sysv-generator/sysv-generator.c',
1749 include_directories : includes,
1750 link_with : [libshared],
1751 install_rpath : rootlibexecdir,
1752 install : true,
1753 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001754
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001755 executable('systemd-rc-local-generator',
1756 'src/rc-local-generator/rc-local-generator.c',
1757 include_directories : includes,
1758 link_with : [libshared],
1759 install_rpath : rootlibexecdir,
1760 install : true,
1761 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001762endif
1763
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001764if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001765 executable('systemd-hostnamed',
1766 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001767 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001768 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001769 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001770 install : true,
1771 install_dir : rootlibexecdir)
1772
1773 exe = executable('hostnamectl',
1774 'src/hostname/hostnamectl.c',
1775 include_directories : includes,
1776 link_with : [libshared],
1777 install_rpath : rootlibexecdir,
1778 install : true)
1779 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001780endif
1781
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001782if conf.get('ENABLE_LOCALED') == 1
1783 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001784 # logind will load libxkbcommon.so dynamically on its own
1785 deps = [libdl]
1786 else
1787 deps = []
1788 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001789
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001790 executable('systemd-localed',
1791 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001792 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001793 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001794 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001795 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001796 install : true,
1797 install_dir : rootlibexecdir)
1798
1799 exe = executable('localectl',
1800 localectl_sources,
1801 include_directories : includes,
1802 link_with : [libshared],
1803 install_rpath : rootlibexecdir,
1804 install : true)
1805 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001806endif
1807
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001808if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001809 executable('systemd-timedated',
1810 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001811 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001812 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001813 install_rpath : rootlibexecdir,
1814 install : true,
1815 install_dir : rootlibexecdir)
1816
1817 exe = executable('timedatectl',
1818 'src/timedate/timedatectl.c',
1819 include_directories : includes,
1820 install_rpath : rootlibexecdir,
1821 link_with : [libshared],
1822 install : true)
1823 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001824endif
1825
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001826if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001827 executable('systemd-timesyncd',
1828 systemd_timesyncd_sources,
1829 include_directories : includes,
1830 link_with : [libshared],
1831 dependencies : [threads,
1832 libm],
1833 install_rpath : rootlibexecdir,
1834 install : true,
1835 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001836endif
1837
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001838if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001839 executable('systemd-machined',
1840 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001841 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001842 link_with : [libmachine_core,
1843 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001844 install_rpath : rootlibexecdir,
1845 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001846 install_dir : rootlibexecdir)
1847
1848 exe = executable('machinectl',
1849 'src/machine/machinectl.c',
1850 include_directories : includes,
1851 link_with : [libshared],
1852 dependencies : [threads,
1853 libxz,
1854 liblz4],
1855 install_rpath : rootlibexecdir,
1856 install : true,
1857 install_dir : rootbindir)
1858 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001859endif
1860
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001861if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001862 executable('systemd-importd',
1863 systemd_importd_sources,
1864 include_directories : includes,
1865 link_with : [libshared],
1866 dependencies : [threads],
1867 install_rpath : rootlibexecdir,
1868 install : true,
1869 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001870
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001871 systemd_pull = executable('systemd-pull',
1872 systemd_pull_sources,
1873 include_directories : includes,
1874 link_with : [libshared],
1875 dependencies : [libcurl,
1876 libz,
1877 libbzip2,
1878 libxz,
1879 libgcrypt],
1880 install_rpath : rootlibexecdir,
1881 install : true,
1882 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001883
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001884 systemd_import = executable('systemd-import',
1885 systemd_import_sources,
1886 include_directories : includes,
1887 link_with : [libshared],
1888 dependencies : [libcurl,
1889 libz,
1890 libbzip2,
1891 libxz],
1892 install_rpath : rootlibexecdir,
1893 install : true,
1894 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001895
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001896 systemd_export = executable('systemd-export',
1897 systemd_export_sources,
1898 include_directories : includes,
1899 link_with : [libshared],
1900 dependencies : [libcurl,
1901 libz,
1902 libbzip2,
1903 libxz],
1904 install_rpath : rootlibexecdir,
1905 install : true,
1906 install_dir : rootlibexecdir)
1907 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001908endif
1909
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001910if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001911 exe = executable('systemd-journal-upload',
1912 systemd_journal_upload_sources,
1913 include_directories : includes,
1914 link_with : [libshared],
1915 dependencies : [threads,
1916 libcurl,
1917 libgnutls,
1918 libxz,
1919 liblz4],
1920 install_rpath : rootlibexecdir,
1921 install : true,
1922 install_dir : rootlibexecdir)
1923 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001924endif
1925
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001926if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001927 s_j_remote = executable('systemd-journal-remote',
1928 systemd_journal_remote_sources,
1929 include_directories : includes,
1930 link_with : [libshared],
1931 dependencies : [threads,
1932 libmicrohttpd,
1933 libgnutls,
1934 libxz,
1935 liblz4],
1936 install_rpath : rootlibexecdir,
1937 install : true,
1938 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001939
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001940 s_j_gatewayd = executable('systemd-journal-gatewayd',
1941 systemd_journal_gatewayd_sources,
1942 include_directories : includes,
1943 link_with : [libshared],
1944 dependencies : [threads,
1945 libmicrohttpd,
1946 libgnutls,
1947 libxz,
1948 liblz4],
1949 install_rpath : rootlibexecdir,
1950 install : true,
1951 install_dir : rootlibexecdir)
1952 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001953endif
1954
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001955if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001956 executable('systemd-coredump',
1957 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001958 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001959 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001960 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001961 libacl,
1962 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001963 libxz,
1964 liblz4],
1965 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001966 install : true,
1967 install_dir : rootlibexecdir)
1968
1969 exe = executable('coredumpctl',
1970 coredumpctl_sources,
1971 include_directories : includes,
1972 link_with : [libshared],
1973 dependencies : [threads,
1974 libxz,
1975 liblz4],
1976 install_rpath : rootlibexecdir,
1977 install : true)
1978 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001979endif
1980
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001981if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001982 exe = executable('systemd-binfmt',
1983 'src/binfmt/binfmt.c',
1984 include_directories : includes,
1985 link_with : [libshared],
1986 install_rpath : rootlibexecdir,
1987 install : true,
1988 install_dir : rootlibexecdir)
1989 public_programs += [exe]
1990
1991 meson.add_install_script('sh', '-c',
1992 mkdir_p.format(binfmtdir))
1993 meson.add_install_script('sh', '-c',
1994 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
1995endif
1996
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001997if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001998 executable('systemd-vconsole-setup',
1999 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002000 include_directories : includes,
2001 link_with : [libshared],
2002 install_rpath : rootlibexecdir,
2003 install : true,
2004 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002005endif
2006
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002007if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002008 executable('systemd-random-seed',
2009 'src/random-seed/random-seed.c',
2010 include_directories : includes,
2011 link_with : [libshared],
2012 install_rpath : rootlibexecdir,
2013 install : true,
2014 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002015endif
2016
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002017if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002018 executable('systemd-firstboot',
2019 'src/firstboot/firstboot.c',
2020 include_directories : includes,
2021 link_with : [libshared],
2022 dependencies : [libcrypt],
2023 install_rpath : rootlibexecdir,
2024 install : true,
2025 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002026endif
2027
2028executable('systemd-remount-fs',
2029 'src/remount-fs/remount-fs.c',
2030 'src/core/mount-setup.c',
2031 'src/core/mount-setup.h',
2032 include_directories : includes,
2033 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002034 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002035 install : true,
2036 install_dir : rootlibexecdir)
2037
2038executable('systemd-machine-id-setup',
2039 'src/machine-id-setup/machine-id-setup-main.c',
2040 'src/core/machine-id-setup.c',
2041 'src/core/machine-id-setup.h',
2042 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002043 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002044 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002045 install : true,
2046 install_dir : rootbindir)
2047
2048executable('systemd-fsck',
2049 'src/fsck/fsck.c',
2050 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002051 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002052 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002053 install : true,
2054 install_dir : rootlibexecdir)
2055
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002056executable('systemd-growfs',
2057 'src/partition/growfs.c',
2058 include_directories : includes,
2059 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002060 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002061 install_rpath : rootlibexecdir,
2062 install : true,
2063 install_dir : rootlibexecdir)
2064
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002065executable('systemd-makefs',
2066 'src/partition/makefs.c',
2067 include_directories : includes,
2068 link_with : [libshared],
2069 install_rpath : rootlibexecdir,
2070 install : true,
2071 install_dir : rootlibexecdir)
2072
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002073executable('systemd-sleep',
2074 'src/sleep/sleep.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-sysctl',
2082 'src/sysctl/sysctl.c',
2083 include_directories : includes,
2084 link_with : [libshared],
2085 install_rpath : rootlibexecdir,
2086 install : true,
2087 install_dir : rootlibexecdir)
2088public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002089
2090executable('systemd-ac-power',
2091 'src/ac-power/ac-power.c',
2092 include_directories : includes,
2093 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002094 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002095 install : true,
2096 install_dir : rootlibexecdir)
2097
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002098exe = executable('systemd-detect-virt',
2099 'src/detect-virt/detect-virt.c',
2100 include_directories : includes,
2101 link_with : [libshared],
2102 install_rpath : rootlibexecdir,
2103 install : true)
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-delta',
2107 'src/delta/delta.c',
2108 include_directories : includes,
2109 link_with : [libshared],
2110 install_rpath : rootlibexecdir,
2111 install : true)
2112public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002113
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002114exe = executable('systemd-escape',
2115 'src/escape/escape.c',
2116 include_directories : includes,
2117 link_with : [libshared],
2118 install_rpath : rootlibexecdir,
2119 install : true,
2120 install_dir : rootbindir)
2121public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002122
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002123exe = executable('systemd-notify',
2124 'src/notify/notify.c',
2125 include_directories : includes,
2126 link_with : [libshared],
2127 install_rpath : rootlibexecdir,
2128 install : true,
2129 install_dir : rootbindir)
2130public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002131
2132executable('systemd-volatile-root',
2133 'src/volatile-root/volatile-root.c',
2134 include_directories : includes,
2135 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002136 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002137 install : true,
2138 install_dir : rootlibexecdir)
2139
2140executable('systemd-cgroups-agent',
2141 'src/cgroups-agent/cgroups-agent.c',
2142 include_directories : includes,
2143 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002144 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002145 install : true,
2146 install_dir : rootlibexecdir)
2147
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002148exe = executable('systemd-path',
2149 'src/path/path.c',
2150 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002151 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002152 install_rpath : rootlibexecdir,
2153 install : true)
2154public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002155
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002156exe = executable('systemd-ask-password',
2157 'src/ask-password/ask-password.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
2165executable('systemd-reply-password',
2166 'src/reply-password/reply-password.c',
2167 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002168 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002169 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002170 install : true,
2171 install_dir : rootlibexecdir)
2172
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002173exe = executable('systemd-tty-ask-password-agent',
2174 'src/tty-ask-password-agent/tty-ask-password-agent.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,
2179 install_dir : rootbindir)
2180public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002181
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002182exe = executable('systemd-cgls',
2183 'src/cgls/cgls.c',
2184 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002185 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002186 install_rpath : rootlibexecdir,
2187 install : true)
2188public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002189
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002190exe = executable('systemd-cgtop',
2191 'src/cgtop/cgtop.c',
2192 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002193 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002194 install_rpath : rootlibexecdir,
2195 install : true)
2196public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002197
2198executable('systemd-initctl',
2199 'src/initctl/initctl.c',
2200 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002201 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002202 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002203 install : true,
2204 install_dir : rootlibexecdir)
2205
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002206exe = executable('systemd-mount',
2207 'src/mount/mount-tool.c',
2208 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002209 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002210 install_rpath : rootlibexecdir,
2211 install : true)
2212public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002213
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002214meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002215 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002216
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002217exe = executable('systemd-run',
2218 'src/run/run.c',
2219 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002220 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002221 install_rpath : rootlibexecdir,
2222 install : true)
2223public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002224
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002225exe = executable('systemd-stdio-bridge',
2226 'src/stdio-bridge/stdio-bridge.c',
2227 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002228 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002229 install_rpath : rootlibexecdir,
2230 install : true)
2231public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002232
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002233exe = executable('busctl',
2234 'src/busctl/busctl.c',
2235 'src/busctl/busctl-introspect.c',
2236 'src/busctl/busctl-introspect.h',
2237 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002238 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002239 install_rpath : rootlibexecdir,
2240 install : true)
2241public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002242
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002243if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002244 exe = executable('systemd-sysusers',
2245 'src/sysusers/sysusers.c',
2246 include_directories : includes,
2247 link_with : [libshared],
2248 install_rpath : rootlibexecdir,
2249 install : true,
2250 install_dir : rootbindir)
2251 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002252endif
2253
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002254if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002255 exe = executable('systemd-tmpfiles',
2256 'src/tmpfiles/tmpfiles.c',
2257 include_directories : includes,
2258 link_with : [libshared],
2259 dependencies : [libacl],
2260 install_rpath : rootlibexecdir,
2261 install : true,
2262 install_dir : rootbindir)
2263 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002264
2265 test('test-systemd-tmpfiles',
2266 test_systemd_tmpfiles_py,
2267 args : exe.full_path())
2268 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002269endif
2270
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002271if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002272 exe = executable('systemd-hwdb',
2273 'src/hwdb/hwdb.c',
2274 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2275 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002276 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002277 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002278 install : true,
2279 install_dir : rootbindir)
2280 public_programs += [exe]
2281endif
2282
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002283if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002284 executable('systemd-quotacheck',
2285 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002286 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002287 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002288 install_rpath : rootlibexecdir,
2289 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002290 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002291endif
2292
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002293exe = executable('systemd-socket-proxyd',
2294 'src/socket-proxy/socket-proxyd.c',
2295 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002296 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002297 dependencies : [threads],
2298 install_rpath : rootlibexecdir,
2299 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('systemd-udevd',
2304 systemd_udevd_sources,
2305 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002306 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002307 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 : rootlibexecdir)
2318public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002319
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002320exe = executable('udevadm',
2321 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002322 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002323 include_directories : includes,
2324 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002325 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002326 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002327 dependencies : [threads,
2328 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002329 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002330 libacl,
2331 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002332 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002333 install : true,
2334 install_dir : rootbindir)
2335public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002336
2337executable('systemd-shutdown',
2338 systemd_shutdown_sources,
2339 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002340 link_with : [libshared],
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
2345executable('systemd-update-done',
2346 'src/update-done/update-done.c',
2347 include_directories : includes,
2348 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002349 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002350 install : true,
2351 install_dir : rootlibexecdir)
2352
2353executable('systemd-update-utmp',
2354 'src/update-utmp/update-utmp.c',
2355 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002356 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002357 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002358 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002359 install : true,
2360 install_dir : rootlibexecdir)
2361
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002362if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002363 executable('systemd-modules-load',
2364 'src/modules-load/modules-load.c',
2365 include_directories : includes,
2366 link_with : [libshared],
2367 dependencies : [libkmod],
2368 install_rpath : rootlibexecdir,
2369 install : true,
2370 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002371
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002372 meson.add_install_script('sh', '-c',
2373 mkdir_p.format(modulesloaddir))
2374 meson.add_install_script('sh', '-c',
2375 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002376endif
2377
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002378exe = executable('systemd-nspawn',
2379 systemd_nspawn_sources,
2380 'src/core/mount-setup.c', # FIXME: use a variable?
2381 'src/core/mount-setup.h',
2382 'src/core/loopback-setup.c',
2383 'src/core/loopback-setup.h',
2384 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002385 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002386 dependencies : [libacl,
2387 libblkid,
2388 libseccomp,
2389 libselinux],
2390 install_rpath : rootlibexecdir,
2391 install : true)
2392public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002393
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002394if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002395 executable('systemd-networkd',
2396 systemd_networkd_sources,
2397 include_directories : includes,
2398 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002399 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002400 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002401 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002402 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002403 install_rpath : rootlibexecdir,
2404 install : true,
2405 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002406
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002407 executable('systemd-networkd-wait-online',
2408 systemd_networkd_wait_online_sources,
2409 include_directories : includes,
2410 link_with : [libnetworkd_core,
2411 libshared],
2412 install_rpath : rootlibexecdir,
2413 install : true,
2414 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002415
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002416 exe = executable('networkctl',
2417 networkctl_sources,
2418 include_directories : includes,
2419 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002420 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002421 install_rpath : rootlibexecdir,
2422 install : true,
2423 install_dir : rootbindir)
2424 public_programs += [exe]
2425endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002426
2427executable('systemd-sulogin-shell',
2428 ['src/sulogin-shell/sulogin-shell.c'],
2429 include_directories : includes,
2430 link_with : [libshared],
2431 install_rpath : rootlibexecdir,
2432 install : true,
2433 install_dir : rootlibexecdir)
2434
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002435############################################################
2436
2437foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002438 sources = tuple[0]
2439 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2440 dependencies = tuple[2]
2441 condition = tuple.length() >= 4 ? tuple[3] : ''
2442 type = tuple.length() >= 5 ? tuple[4] : ''
2443 defs = tuple.length() >= 6 ? tuple[5] : []
2444 incs = tuple.length() >= 7 ? tuple[6] : includes
2445 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002446
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002447 name = sources[0].split('/')[-1].split('.')[0]
2448 if type.startswith('timeout=')
2449 timeout = type.split('=')[1].to_int()
2450 type = ''
2451 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002452 if want_tests == 'false'
2453 message('Not compiling @0@ because tests is set to false'.format(name))
2454 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002455 exe = executable(
2456 name,
2457 sources,
2458 include_directories : incs,
2459 link_with : link_with,
2460 dependencies : dependencies,
2461 c_args : defs,
2462 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002463 install : install_tests,
2464 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002465
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002466 if type == 'manual'
2467 message('@0@ is a manual test'.format(name))
2468 elif type == 'unsafe' and want_tests != 'unsafe'
2469 message('@0@ is an unsafe test'.format(name))
2470 else
2471 test(name, exe,
2472 env : test_env,
2473 timeout : timeout)
2474 endif
2475 else
2476 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2477 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002478endforeach
2479
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002480test_libsystemd_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002481 'test-libsystemd-sym',
2482 test_libsystemd_sym_c,
2483 include_directories : includes,
2484 link_with : [libsystemd],
2485 install : install_tests,
2486 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002487test('test-libsystemd-sym',
2488 test_libsystemd_sym)
2489
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002490test_libudev_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002491 'test-libudev-sym',
2492 test_libudev_sym_c,
2493 include_directories : includes,
2494 c_args : ['-Wno-deprecated-declarations'],
2495 link_with : [libudev],
2496 install : install_tests,
2497 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002498test('test-libudev-sym',
2499 test_libudev_sym)
2500
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002501############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002502
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002503fuzzer_exes = []
2504
2505foreach tuple : fuzzers
2506 sources = tuple[0]
2507 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2508 dependencies = tuple[2]
2509 defs = tuple.length() >= 4 ? tuple[3] : []
2510 incs = tuple.length() >= 5 ? tuple[4] : includes
2511
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002512 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002513 dependencies += fuzzing_engine
2514 else
2515 sources += 'src/fuzz/fuzz-main.c'
2516 endif
2517
2518 name = sources[0].split('/')[-1].split('.')[0]
2519
2520 fuzzer_exes += executable(
2521 name,
2522 sources,
2523 include_directories : [incs, include_directories('src/fuzz')],
2524 link_with : link_with,
2525 dependencies : dependencies,
2526 c_args : defs,
2527 install : false)
2528endforeach
2529
2530run_target('fuzzers',
2531 depends : fuzzer_exes,
2532 command : ['true'])
2533
2534############################################################
2535
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002536make_directive_index_py = find_program('tools/make-directive-index.py')
2537make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002538xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002539hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002540
2541subdir('units')
2542subdir('sysctl.d')
2543subdir('sysusers.d')
2544subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002545subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002546subdir('hwdb')
2547subdir('network')
2548subdir('man')
2549subdir('shell-completion/bash')
2550subdir('shell-completion/zsh')
2551subdir('docs/sysvinit')
2552subdir('docs/var-log')
2553
2554# FIXME: figure out if the warning is true:
2555# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2556install_subdir('factory/etc',
2557 install_dir : factorydir)
2558
2559
2560install_data('xorg/50-systemd-user.sh',
2561 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002562install_data('modprobe.d/systemd.conf',
2563 install_dir : modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002564install_data('README',
2565 'NEWS',
2566 'CODING_STYLE',
2567 'DISTRO_PORTING',
2568 'ENVIRONMENT.md',
2569 'LICENSE.GPL2',
2570 'LICENSE.LGPL2.1',
Felipe Satelerf9f54412017-12-18 10:58:13 -03002571 'TRANSIENT-SETTINGS.md',
2572 'UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002573 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2574 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002575
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002576meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2577meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2578
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002579############################################################
2580
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002581meson_check_help = find_program('tools/meson-check-help.sh')
2582
2583foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002584 name = exec.full_path().split('/')[-1]
2585 test('check-help-' + name,
2586 meson_check_help,
2587 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002588endforeach
2589
2590############################################################
2591
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002592prev = ''
2593foreach p : fuzz_regression_tests
2594 a = p.split('/')[-3]
2595 b = p.split('/')[-2]
2596 c = p.split('/')[-1]
2597
2598 if a == 'address'
2599 build = sanitize_address
2600 else
2601 error('unknown sanitizer @0@'.format(a))
2602 endif
2603
2604 name = '@1@:@0@'.format(a, b)
2605
2606 if name != prev
2607 if want_tests == 'false'
2608 message('Not compiling @0@ because tests is set to false'.format(name))
2609 elif not sanitizers.contains(a)
2610 message('Not compiling @0@ because @1@ sanitizer is not available'.format(name, a))
2611 elif slow_tests
2612 exe = custom_target(
2613 name,
2614 output : name,
2615 depends : build,
2616 command : [env, 'ln', '-fs',
2617 join_paths(build.full_path(), b),
2618 '@OUTPUT@'],
2619 build_by_default : true)
2620 else
2621 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2622 endif
2623 endif
2624 prev = name
2625
2626 if want_tests != 'false' and slow_tests
2627 test(c, env, args : [exe.full_path(),
2628 join_paths(meson.source_root(),
2629 'test/fuzz-regressions',
2630 p)])
2631 endif
2632endforeach
2633
2634############################################################
2635
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002636if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002637 all_files = run_command(
2638 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002639 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002640 'ls-files',
2641 ':/*.[ch]'])
2642 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002643
userwithuide85a6902017-08-09 13:41:44 +00002644 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002645 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002646 output : 'tags',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002647 command : ['env', 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002648 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002649 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002650 output : 'ctags',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002651 command : ['env', 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002652endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002653
2654if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002655 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002656 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002657 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002658 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002659endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002660
2661if git.found()
2662 git_head = run_command(
2663 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002664 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002665 'rev-parse', 'HEAD']).stdout().strip()
2666 git_head_short = run_command(
2667 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002668 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002669 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2670
2671 run_target(
2672 'git-snapshot',
2673 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002674 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002675 git_head_short),
2676 '--prefix', 'systemd-@0@/'.format(git_head),
2677 'HEAD'])
2678endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002679
2680############################################################
2681
Lennart Poettering51b13862017-12-20 12:51:14 +01002682meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2683run_target(
2684 'check-api-docs',
2685 depends : [man, libsystemd, libudev],
2686 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2687
2688############################################################
2689
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002690status = [
2691 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2692
Yu Watanabe359b4962017-11-25 20:35:24 +09002693 'prefix directory: @0@'.format(prefixdir),
2694 'rootprefix directory: @0@'.format(rootprefixdir),
2695 'sysconf directory: @0@'.format(sysconfdir),
2696 'include directory: @0@'.format(includedir),
2697 'lib directory: @0@'.format(libdir),
2698 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002699 'SysV init scripts: @0@'.format(sysvinit_path),
2700 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002701 'PAM modules directory: @0@'.format(pamlibdir),
2702 'PAM configuration directory: @0@'.format(pamconfdir),
2703 'RPM macros directory: @0@'.format(rpmmacrosdir),
2704 'modprobe.d directory: @0@'.format(modprobedir),
2705 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2706 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2707 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2708 'bash completions directory: @0@'.format(bashcompletiondir),
2709 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002710 'extra start script: @0@'.format(get_option('rc-local')),
2711 'extra stop script: @0@'.format(get_option('halt-local')),
2712 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2713 get_option('debug-tty')),
2714 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002715 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002716 'maximum system UID: @0@'.format(system_uid_max),
2717 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002718 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2719 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2720 'minimum container UID base: @0@'.format(container_uid_base_min),
2721 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002722 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002723 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002724 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002725 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002726 'nobody user name: @0@'.format(nobody_user),
2727 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002728 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002729 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002730
2731 'default DNSSEC mode: @0@'.format(default_dnssec),
2732 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2733 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2734
2735alt_dns_servers = '\n '.join(dns_servers.split(' '))
2736alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2737status += [
2738 'default DNS servers: @0@'.format(alt_dns_servers),
2739 'default NTP servers: @0@'.format(alt_ntp_servers)]
2740
2741alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2742 '@@0@'.format(time_epoch)).stdout().strip()
2743status += [
2744 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2745
2746# TODO:
2747# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2748# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2749# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2750
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002751if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002752 status += [
2753 'efi arch: @0@'.format(efi_arch)]
2754
2755 if have_gnu_efi
2756 status += [
2757 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2758 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002759 'EFI lib directory: @0@'.format(efi_libdir),
2760 'EFI lds directory: @0@'.format(efi_ldsdir),
2761 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002762 endif
2763endif
2764
2765found = []
2766missing = []
2767
2768foreach tuple : [
2769 ['libcryptsetup'],
2770 ['PAM'],
2771 ['AUDIT'],
2772 ['IMA'],
2773 ['AppArmor'],
2774 ['SELinux'],
2775 ['SECCOMP'],
2776 ['SMACK'],
2777 ['zlib'],
2778 ['xz'],
2779 ['lz4'],
2780 ['bzip2'],
2781 ['ACL'],
2782 ['gcrypt'],
2783 ['qrencode'],
2784 ['microhttpd'],
2785 ['gnutls'],
2786 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002787 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002788 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002789 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002790 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002791 ['libiptc'],
2792 ['elfutils'],
2793 ['binfmt'],
2794 ['vconsole'],
2795 ['quotacheck'],
2796 ['tmpfiles'],
2797 ['environment.d'],
2798 ['sysusers'],
2799 ['firstboot'],
2800 ['randomseed'],
2801 ['backlight'],
2802 ['rfkill'],
2803 ['logind'],
2804 ['machined'],
2805 ['importd'],
2806 ['hostnamed'],
2807 ['timedated'],
2808 ['timesyncd'],
2809 ['localed'],
2810 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002811 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002812 ['coredump'],
2813 ['polkit'],
2814 ['legacy pkla', install_polkit_pkla],
2815 ['efi'],
2816 ['gnu-efi', have_gnu_efi],
2817 ['kmod'],
2818 ['xkbcommon'],
2819 ['blkid'],
2820 ['dbus'],
2821 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002822 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002823 ['hwdb'],
2824 ['tpm'],
2825 ['man pages', want_man],
2826 ['html pages', want_html],
2827 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002828 ['split /usr', conf.get('HAVE_SPLIT_USR') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002829 ['SysV compat'],
2830 ['utmp'],
2831 ['ldconfig'],
2832 ['hibernate'],
2833 ['adm group', get_option('adm-group')],
2834 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002835 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002836 ['debug hashmap'],
2837 ['debug mmap cache'],
2838]
2839
2840 cond = tuple.get(1, '')
2841 if cond == ''
2842 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2843 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002844 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002845 endif
2846 if cond
2847 found += [tuple[0]]
2848 else
2849 missing += [tuple[0]]
2850 endif
2851endforeach
2852
2853status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002854 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002855 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002856 '',
2857 'disabled features: @0@'.format(', '.join(missing)),
2858 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002859message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002860
2861if rootprefixdir != rootprefix_default
2862 message('WARNING:\n' +
2863 ' Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2864 ' systemd used fixed names for unit file directories and other paths, so anything\n' +
2865 ' except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
2866endif