blob: 36a62d280df0d8b14780be326e7d7999883d4d04 [file] [log] [blame]
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01001# SPDX-License-Identifier: LGPL-2.1+
2#
3# Copyright 2017 Zbigniew Jędrzejewski-Szmek
4#
5# systemd is free software; you can redistribute it and/or modify it
6# under the terms of the GNU Lesser General Public License as published by
7# the Free Software Foundation; either version 2.1 of the License, or
8# (at your option) any later version.
9#
10# systemd is distributed in the hope that it will be useful, but
11# WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13# Lesser General Public License for more details.
14#
15# You should have received a copy of the GNU Lesser General Public License
16# along with systemd; If not, see <http://www.gnu.org/licenses/>.
17
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040018project('systemd', 'c',
Lennart Poettering69cd51d2018-01-25 14:18:14 +010019 version : '237',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040020 license : 'LGPLv2+',
21 default_options: [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040022 'c_std=gnu99',
23 'prefix=/usr',
24 'sysconfdir=/etc',
25 'localstatedir=/var',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040026 ],
Zbigniew Jędrzejewski-Szmek86ea8d72017-11-20 08:08:43 +010027 meson_version : '>= 0.41',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040028 )
29
Lennart Poettering69cd51d2018-01-25 14:18:14 +010030libsystemd_version = '0.21.0'
31libudev_version = '1.6.9'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020032
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040033# We need the same data in three different formats, ugh!
34# Also, for hysterical reasons, we use different variable
35# names, sometimes. Not all variables are included in every
36# set. Ugh, ugh, ugh!
37conf = configuration_data()
38conf.set_quoted('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version())
39conf.set_quoted('PACKAGE_VERSION', meson.project_version())
40
41substs = configuration_data()
42substs.set('PACKAGE_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
43substs.set('PACKAGE_VERSION', meson.project_version())
44
45m4_defines = []
46
47#####################################################################
48
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040049# Try to install the git pre-commit hook
50git_hook = run_command(join_paths(meson.source_root(), 'tools/add-git-hook.sh'))
51if git_hook.returncode() == 0
52 message(git_hook.stdout().strip())
53endif
54
55#####################################################################
56
Zbigniew Jędrzejewski-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
Björn Esser9f555bb2018-01-25 15:30:15 +0100608foreach header : ['crypt.h',
609 'linux/btrfs.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400610 'linux/memfd.h',
611 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200612 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400613 'valgrind/memcheck.h',
614 'valgrind/valgrind.h',
615 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400616
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200617 conf.set10('HAVE_' + header.underscorify().to_upper(),
618 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400619endforeach
620
621############################################################
622
623conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400624conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
625gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400626
627default_hierarchy = get_option('default-hierarchy')
628conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
629 description : 'default cgroup hierarchy as string')
630if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400631 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400632elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400633 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400634else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400635 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400636endif
637
638time_epoch = get_option('time-epoch')
639if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400640 NEWS = files('NEWS')
641 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400642endif
643time_epoch = time_epoch.to_int()
644conf.set('TIME_EPOCH', time_epoch)
645
646system_uid_max = get_option('system-uid-max')
647if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400648 system_uid_max = run_command(
649 awk,
650 'BEGIN { uid=999 } /^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
651 '/etc/login.defs').stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400652endif
653system_uid_max = system_uid_max.to_int()
654conf.set('SYSTEM_UID_MAX', system_uid_max)
655substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400656message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400657
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400658system_gid_max = get_option('system-gid-max')
659if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400660 system_gid_max = run_command(
661 awk,
662 'BEGIN { gid=999 } /^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
663 '/etc/login.defs').stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400664endif
665system_gid_max = system_gid_max.to_int()
666conf.set('SYSTEM_GID_MAX', system_gid_max)
667substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400668message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400669
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100670dynamic_uid_min = get_option('dynamic-uid-min').to_int()
671dynamic_uid_max = get_option('dynamic-uid-max').to_int()
672conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
673conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
674substs.set('dynamicuidmin', dynamic_uid_min)
675substs.set('dynamicuidmax', dynamic_uid_max)
676
677container_uid_base_min = get_option('container-uid-base-min').to_int()
678container_uid_base_max = get_option('container-uid-base-max').to_int()
679conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
680conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
681substs.set('containeruidbasemin', container_uid_base_min)
682substs.set('containeruidbasemax', container_uid_base_max)
683
Lennart Poetteringafde4572017-12-05 11:00:24 +0100684nobody_user = get_option('nobody-user')
685nobody_group = get_option('nobody-group')
686
687getent_result = run_command('getent', 'passwd', '65534')
688if getent_result.returncode() == 0
689 name = getent_result.stdout().split(':')[0]
690 if name != nobody_user
691 message('WARNING:\n' +
692 ' 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) +
693 ' Your build will result in an user table setup that is incompatible with the local system.')
694 endif
695endif
696id_result = run_command('id', '-u', nobody_user)
697if id_result.returncode() == 0
698 id = id_result.stdout().to_int()
699 if id != 65534
700 message('WARNING:\n' +
701 ' 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) +
702 ' Your build will result in an user table setup that is incompatible with the local system.')
703 endif
704endif
705
706getent_result = run_command('getent', 'group', '65534')
707if getent_result.returncode() == 0
708 name = getent_result.stdout().split(':')[0]
709 if name != nobody_group
710 message('WARNING:\n' +
711 ' 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) +
712 ' Your build will result in an group table setup that is incompatible with the local system.')
713 endif
714endif
715id_result = run_command('id', '-g', nobody_group)
716if id_result.returncode() == 0
717 id = id_result.stdout().to_int()
718 if id != 65534
719 message('WARNING:\n' +
720 ' 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) +
721 ' Your build will result in an group table setup that is incompatible with the local system.')
722 endif
723endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900724if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
725 message('WARNING:\n' +
726 ' The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
727 ' Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
728endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100729
730conf.set_quoted('NOBODY_USER_NAME', nobody_user)
731conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900732substs.set('NOBODY_USER_NAME', nobody_user)
733substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100734
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400735tty_gid = get_option('tty-gid')
736conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400737substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400738
Ikey Doherty84786b82017-12-03 12:28:23 +0000739# Ensure provided GID argument is numeric, otherwise fallback to default assignment
740if get_option('users-gid') != ''
Yu Watanabed6806872017-12-05 14:01:39 +0900741 users_gid = get_option('users-gid').to_int()
Ikey Doherty84786b82017-12-03 12:28:23 +0000742else
Yu Watanabed6806872017-12-05 14:01:39 +0900743 users_gid = '-'
Ikey Doherty84786b82017-12-03 12:28:23 +0000744endif
745substs.set('USERS_GID', users_gid)
746
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400747if get_option('adm-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400748 m4_defines += ['-DENABLE_ADM_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400749endif
750
751if get_option('wheel-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400752 m4_defines += ['-DENABLE_WHEEL_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400753endif
754
755substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700756substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400757
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400758kill_user_processes = get_option('default-kill-user-processes')
759conf.set10('KILL_USER_PROCESSES', kill_user_processes)
760substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400761
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400762dns_servers = get_option('dns-servers')
763conf.set_quoted('DNS_SERVERS', dns_servers)
764substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400765
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400766ntp_servers = get_option('ntp-servers')
767conf.set_quoted('NTP_SERVERS', ntp_servers)
768substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400769
770conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
771
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400772substs.set('SUSHELL', get_option('debug-shell'))
773substs.set('DEBUGTTY', get_option('debug-tty'))
774
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400775debug = get_option('debug')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200776enable_debug_hashmap = false
777enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400778if debug != ''
779 foreach name : debug.split(',')
780 if name == 'hashmap'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200781 enable_debug_hashmap = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400782 elif name == 'mmap-cache'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200783 enable_debug_mmap_cache = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400784 else
785 message('unknown debug option "@0@", ignoring'.format(name))
786 endif
787 endforeach
788endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200789conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
790conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400791
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400792#####################################################################
793
794threads = dependency('threads')
795librt = cc.find_library('rt')
796libm = cc.find_library('m')
797libdl = cc.find_library('dl')
798libcrypt = cc.find_library('crypt')
799
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400800libcap = dependency('libcap', required : false)
801if not libcap.found()
802 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
803 libcap = cc.find_library('cap')
804endif
805
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400806libmount = dependency('mount',
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -0500807 version : '>= 2.30',
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500808 required : not fuzzer_build)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400809
810want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500811if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400812 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400813 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400814 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200815 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400816else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200817 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400818 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400819endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200820conf.set10('HAVE_SECCOMP', have)
821m4_defines += have ? ['-DHAVE_SECCOMP'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400822
823want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500824if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400825 libselinux = dependency('libselinux',
826 version : '>= 2.1.9',
827 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200828 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400829else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200830 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400831 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400832endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200833conf.set10('HAVE_SELINUX', have)
834m4_defines += have ? ['-DHAVE_SELINUX'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400835
836want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500837if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400838 libapparmor = dependency('libapparmor',
839 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200840 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400841else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200842 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400843 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400844endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200845conf.set10('HAVE_APPARMOR', have)
846m4_defines += have ? ['-DHAVE_APPARMOR'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400847
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400848smack_run_label = get_option('smack-run-label')
849if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400850 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
851 m4_defines += ['-DHAVE_SMACK_RUN_LABEL']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400852endif
853
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400854want_polkit = get_option('polkit')
855install_polkit = false
856install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500857if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400858 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400859
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400860 libpolkit = dependency('polkit-gobject-1',
861 required : false)
862 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
863 message('Old polkit detected, will install pkla files')
864 install_polkit_pkla = true
865 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400866endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200867conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400868
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400869want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500870if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400871 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200872 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400873else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200874 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400875 libacl = []
876endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200877conf.set10('HAVE_ACL', have)
878m4_defines += have ? ['-DHAVE_ACL'] : []
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400879
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400880want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500881if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400882 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200883 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400884else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200885 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400886 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400887endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200888conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400889
890want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500891if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400892 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200893 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400894else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200895 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400896 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400897endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200898conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400899
900want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500901if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400902 libkmod = dependency('libkmod',
903 version : '>= 15',
904 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200905 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400906else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200907 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400908 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400909endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200910conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400911
912want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500913if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400914 libpam = cc.find_library('pam', required : want_pam == 'true')
915 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200916 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400917else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200918 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400919 libpam = []
920 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400921endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200922conf.set10('HAVE_PAM', have)
923m4_defines += have ? ['-DHAVE_PAM'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400924
925want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500926if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400927 libmicrohttpd = dependency('libmicrohttpd',
928 version : '>= 0.9.33',
929 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200930 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400931else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200932 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400933 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400934endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200935conf.set10('HAVE_MICROHTTPD', have)
936m4_defines += have ? ['-DHAVE_MICROHTTPD'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400937
938want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500939if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400940 libcryptsetup = dependency('libcryptsetup',
941 version : '>= 1.6.0',
942 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200943 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400944else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200945 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400946 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400947endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200948conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400949
950want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500951if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400952 libcurl = dependency('libcurl',
953 version : '>= 7.32.0',
954 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200955 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400956else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200957 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400958 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400959endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200960conf.set10('HAVE_LIBCURL', have)
961m4_defines += have ? ['-DHAVE_LIBCURL'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400962
963want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400964want_libidn2 = get_option('libidn2')
965if want_libidn == 'true' and want_libidn2 == 'true'
966 error('libidn and libidn2 cannot be requested simultaneously')
967endif
968
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500969if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400970 libidn = dependency('libidn',
971 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200972 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400973else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200974 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400975 libidn = []
976endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200977conf.set10('HAVE_LIBIDN', have)
978m4_defines += have ? ['-DHAVE_LIBIDN'] : []
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500979if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400980 # libidn is used for both libidn and libidn2 objects
981 libidn = dependency('libidn2',
982 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200983 have = libidn.found()
984else
985 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400986endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200987conf.set10('HAVE_LIBIDN2', have)
988m4_defines += have ? ['-DHAVE_LIBIDN2'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400989
990want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500991if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400992 libiptc = dependency('libiptc',
993 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200994 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400995else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200996 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400997 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400998endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200999conf.set10('HAVE_LIBIPTC', have)
1000m4_defines += have ? ['-DHAVE_LIBIPTC'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001001
1002want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001003if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001004 libqrencode = dependency('libqrencode',
1005 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001006 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001007else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001008 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001009 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001010endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001011conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001012
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001013want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001014if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001015 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1016 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001017 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001018else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001019 have = false
1020endif
1021if not have
1022 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001023 libgcrypt = []
1024 libgpg_error = []
1025endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001026conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001027
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001028want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001029if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001030 libgnutls = dependency('gnutls',
1031 version : '>= 3.1.4',
1032 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001033 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001034else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001035 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001036 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001037endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001038conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001039
1040want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001041if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001042 libdw = dependency('libdw',
1043 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001044 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001045else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001046 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001047 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001048endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001049conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001050
1051want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001052if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001053 libz = dependency('zlib',
1054 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001055 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001056else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001057 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001058 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001059endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001060conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001061
1062want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001063if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001064 libbzip2 = cc.find_library('bz2',
1065 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001066 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001067else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001068 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001069 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001070endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001071conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001072
1073want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001074if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001075 libxz = dependency('liblzma',
1076 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001077 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001078else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001079 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001080 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001081endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001082conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001083
1084want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001085if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001086 liblz4 = dependency('liblz4',
1087 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001088 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001089else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001090 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001091 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001092endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001093conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001094
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001095want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001096if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001097 libxkbcommon = dependency('xkbcommon',
1098 version : '>= 0.3.0',
1099 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001100 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001101else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001102 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001103 libxkbcommon = []
1104endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001105conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001106
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001107want_pcre2 = get_option('pcre2')
1108if want_pcre2 != 'false'
1109 libpcre2 = dependency('libpcre2-8',
1110 required : want_pcre2 == 'true')
1111 have = libpcre2.found()
1112else
1113 have = false
1114 libpcre2 = []
1115endif
1116conf.set10('HAVE_PCRE2', have)
1117
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001118want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001119if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001120 libglib = dependency('glib-2.0',
1121 version : '>= 2.22.0',
1122 required : want_glib == 'true')
1123 libgobject = dependency('gobject-2.0',
1124 version : '>= 2.22.0',
1125 required : want_glib == 'true')
1126 libgio = dependency('gio-2.0',
1127 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001128 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001129else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001130 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001131 libglib = []
1132 libgobject = []
1133 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001134endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001135conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001136
1137want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001138if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001139 libdbus = dependency('dbus-1',
1140 version : '>= 1.3.2',
1141 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001142 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001143else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001144 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001145 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001146endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001147conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001148
Yu Watanabe42303dc2017-06-18 05:22:32 +09001149default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001150if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001151 default_dnssec = 'no'
1152endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001153if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001154 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1155 default_dnssec = 'no'
1156endif
1157conf.set('DEFAULT_DNSSEC_MODE',
1158 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1159substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1160
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001161want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001162if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001163 have = (conf.get('HAVE_LIBCURL') == 1 and
1164 conf.get('HAVE_ZLIB') == 1 and
1165 conf.get('HAVE_BZIP2') == 1 and
1166 conf.get('HAVE_XZ') == 1 and
1167 conf.get('HAVE_GCRYPT') == 1)
1168 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001169 error('importd support was requested, but dependencies are not available')
1170 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001171else
1172 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001173endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001174conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001175
1176want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001177if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001178 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1179 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001180 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1181 # it's possible to build one without the other. Complain only if
1182 # support was explictly requested. The auxiliary files like sysusers
1183 # config should be installed when any of the programs are built.
1184 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1185 error('remote support was requested, but dependencies are not available')
1186 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001187 have = have_deps[0] or have_deps[1]
1188else
1189 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001190endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001191conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001192
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001193foreach term : ['utmp',
1194 'hibernate',
1195 'environment-d',
1196 'binfmt',
1197 'coredump',
1198 'resolve',
1199 'logind',
1200 'hostnamed',
1201 'localed',
1202 'machined',
1203 'networkd',
1204 'timedated',
1205 'timesyncd',
1206 'myhostname',
1207 'firstboot',
1208 'randomseed',
1209 'backlight',
1210 'vconsole',
1211 'quotacheck',
1212 'sysusers',
1213 'tmpfiles',
1214 'hwdb',
1215 'rfkill',
1216 'ldconfig',
1217 'efi',
1218 'tpm',
1219 'ima',
1220 'smack',
1221 'gshadow',
1222 'idn',
1223 'nss-systemd']
1224 have = get_option(term)
1225 name = 'ENABLE_' + term.underscorify().to_upper()
1226 conf.set10(name, have)
1227 m4_defines += have ? ['-D' + name] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001228endforeach
1229
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001230want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001231install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001232slow_tests = get_option('slow-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001233tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001234fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001235
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001236conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001237
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001238#####################################################################
1239
1240if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001241 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001242
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001243 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001244 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001245 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001246 elif efi_arch == 'x86_64'
1247 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001248 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001249 elif efi_arch == 'arm'
1250 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001251 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001252 elif efi_arch == 'aarch64'
1253 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001254 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001255 else
1256 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001257 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001258 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001259
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001260 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001261 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001262
1263 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001264else
1265 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001266endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001267conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001268
1269#####################################################################
1270
1271config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001272 output : 'config.h',
1273 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001274
1275includes = include_directories('src/basic',
1276 'src/shared',
1277 'src/systemd',
1278 'src/journal',
1279 'src/resolve',
1280 'src/timesync',
1281 'src/login',
1282 'src/udev',
1283 'src/libudev',
1284 'src/core',
1285 'src/libsystemd/sd-bus',
1286 'src/libsystemd/sd-device',
1287 'src/libsystemd/sd-hwdb',
1288 'src/libsystemd/sd-id128',
1289 'src/libsystemd/sd-netlink',
1290 'src/libsystemd/sd-network',
1291 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001292 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001293
1294add_project_arguments('-include', 'config.h', language : 'c')
1295
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001296subdir('po')
1297subdir('catalog')
1298subdir('src/systemd')
1299subdir('src/basic')
1300subdir('src/libsystemd')
1301subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001302subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001303subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001304
1305libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001306 'journal-core',
1307 libjournal_core_sources,
1308 journald_gperf_c,
1309 include_directories : includes,
1310 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001311
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001312libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001313libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001314 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001315 '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 +02001316 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001317 include_directories : includes,
1318 link_args : ['-shared',
1319 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001320 link_with : [libbasic,
1321 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001322 link_whole : [libsystemd_static,
1323 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001324 dependencies : [threads,
1325 librt,
1326 libxz,
1327 liblz4],
1328 link_depends : libsystemd_sym,
1329 install : true,
1330 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001331
1332############################################################
1333
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001334# binaries that have --help and are intended for use by humans,
1335# usually, but not always, installed in /bin.
1336public_programs = []
1337
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001338subdir('src/libudev')
1339subdir('src/shared')
1340subdir('src/core')
1341subdir('src/udev')
1342subdir('src/network')
1343
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001344subdir('src/analyze')
1345subdir('src/journal-remote')
1346subdir('src/coredump')
1347subdir('src/hostname')
1348subdir('src/import')
1349subdir('src/kernel-install')
1350subdir('src/locale')
1351subdir('src/machine')
1352subdir('src/nspawn')
1353subdir('src/resolve')
1354subdir('src/timedate')
1355subdir('src/timesync')
1356subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001357subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001358
1359subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001360subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001361subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001362subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001363
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001364############################################################
1365
1366# only static linking apart from libdl, to make sure that the
1367# module is linked to all libraries that it uses.
1368test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001369 'test-dlopen',
1370 test_dlopen_c,
1371 include_directories : includes,
1372 link_with : [libbasic],
1373 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001374
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001375foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001376 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001377 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001378 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001379
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001380 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001381 if condition
1382 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001383
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001384 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1385 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001386
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001387 nss = shared_library(
1388 'nss_' + module,
1389 'src/nss-@0@/nss-@0@.c'.format(module),
1390 version : '2',
1391 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001392 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1393 link_args : ['-Wl,-z,nodelete',
1394 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001395 '-Wl,--version-script=' + version_script_arg,
1396 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001397 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001398 libbasic],
1399 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001400 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001401 link_depends : sym,
1402 install : true,
1403 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001404
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001405 # We cannot use shared_module because it does not support version suffix.
1406 # Unfortunately shared_library insists on creating the symlink…
1407 meson.add_install_script('sh', '-c',
1408 'rm $DESTDIR@0@/libnss_@1@.so'
1409 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001410
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001411 test('dlopen-nss_' + module,
1412 test_dlopen,
1413 args : [nss.full_path()]) # path to dlopen must include a slash
1414 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001415endforeach
1416
1417############################################################
1418
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001419executable('systemd',
1420 systemd_sources,
1421 include_directories : includes,
1422 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001423 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001424 dependencies : [threads,
1425 librt,
1426 libseccomp,
1427 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001428 libmount,
1429 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001430 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001431 install : true,
1432 install_dir : rootlibexecdir)
1433
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001434exe = executable('systemd-analyze',
1435 systemd_analyze_sources,
1436 include_directories : includes,
1437 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001438 libshared],
1439 dependencies : [threads,
1440 librt,
1441 libseccomp,
1442 libselinux,
1443 libmount,
1444 libblkid],
1445 install_rpath : rootlibexecdir,
1446 install : true)
1447public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001448
1449executable('systemd-journald',
1450 systemd_journald_sources,
1451 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001452 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001453 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001454 dependencies : [threads,
1455 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001456 liblz4,
1457 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001458 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001459 install : true,
1460 install_dir : rootlibexecdir)
1461
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001462exe = executable('systemd-cat',
1463 systemd_cat_sources,
1464 include_directories : includes,
1465 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001466 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001467 dependencies : [threads],
1468 install_rpath : rootlibexecdir,
1469 install : true)
1470public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001471
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001472exe = executable('journalctl',
1473 journalctl_sources,
1474 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001475 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001476 dependencies : [threads,
1477 libqrencode,
1478 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001479 liblz4,
1480 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001481 install_rpath : rootlibexecdir,
1482 install : true,
1483 install_dir : rootbindir)
1484public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001485
1486executable('systemd-getty-generator',
1487 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001488 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001489 link_with : [libshared],
1490 install_rpath : rootlibexecdir,
1491 install : true,
1492 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001493
1494executable('systemd-debug-generator',
1495 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001496 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001497 link_with : [libshared],
1498 install_rpath : rootlibexecdir,
1499 install : true,
1500 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001501
1502executable('systemd-fstab-generator',
1503 'src/fstab-generator/fstab-generator.c',
1504 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001505 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001506 link_with : [libshared],
1507 install_rpath : rootlibexecdir,
1508 install : true,
1509 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001510
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001511if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001512 executable('30-systemd-environment-d-generator',
1513 'src/environment-d-generator/environment-d-generator.c',
1514 include_directories : includes,
1515 link_with : [libshared],
1516 install_rpath : rootlibexecdir,
1517 install : true,
1518 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001519
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001520 meson.add_install_script(meson_make_symlink,
1521 join_paths(sysconfdir, 'environment'),
1522 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001523endif
1524
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001525if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001526 executable('systemd-hibernate-resume-generator',
1527 'src/hibernate-resume/hibernate-resume-generator.c',
1528 include_directories : includes,
1529 link_with : [libshared],
1530 install_rpath : rootlibexecdir,
1531 install : true,
1532 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001533
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001534 executable('systemd-hibernate-resume',
1535 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001536 include_directories : includes,
1537 link_with : [libshared],
1538 install_rpath : rootlibexecdir,
1539 install : true,
1540 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001541endif
1542
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001543if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001544 executable('systemd-gpt-auto-generator',
1545 'src/gpt-auto-generator/gpt-auto-generator.c',
1546 'src/basic/blkid-util.h',
1547 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001548 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001549 dependencies : libblkid,
1550 install_rpath : rootlibexecdir,
1551 install : true,
1552 install_dir : systemgeneratordir)
1553
1554 exe = executable('systemd-dissect',
1555 'src/dissect/dissect.c',
1556 include_directories : includes,
1557 link_with : [libshared],
1558 install_rpath : rootlibexecdir,
1559 install : true,
1560 install_dir : rootlibexecdir)
1561 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001562endif
1563
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001564if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001565 executable('systemd-resolved',
1566 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001567 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001568 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001569 libbasic_gcrypt,
1570 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001571 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001572 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001573 libm,
1574 libidn],
1575 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001576 install : true,
1577 install_dir : rootlibexecdir)
1578
1579 exe = executable('systemd-resolve',
1580 systemd_resolve_sources,
1581 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001582 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001583 libbasic_gcrypt,
1584 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001585 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001586 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001587 libm,
1588 libidn],
1589 install_rpath : rootlibexecdir,
1590 install : true)
1591 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001592endif
1593
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001594if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001595 executable('systemd-logind',
1596 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001597 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001598 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001599 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001600 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001601 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001602 install_rpath : rootlibexecdir,
1603 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001604 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001605
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001606 exe = executable('loginctl',
1607 loginctl_sources,
1608 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001609 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001610 dependencies : [threads,
1611 liblz4,
1612 libxz],
1613 install_rpath : rootlibexecdir,
1614 install : true,
1615 install_dir : rootbindir)
1616 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001617
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001618 exe = executable('systemd-inhibit',
1619 'src/login/inhibit.c',
1620 include_directories : includes,
1621 link_with : [libshared],
1622 install_rpath : rootlibexecdir,
1623 install : true,
1624 install_dir : rootbindir)
1625 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001626
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001627 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001628 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1629 pam_systemd = shared_library(
1630 'pam_systemd',
1631 pam_systemd_c,
1632 name_prefix : '',
1633 include_directories : includes,
1634 link_args : ['-shared',
1635 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001636 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001637 libshared_static],
1638 dependencies : [threads,
1639 libpam,
1640 libpam_misc],
1641 link_depends : pam_systemd_sym,
1642 install : true,
1643 install_dir : pamlibdir)
1644
1645 test('dlopen-pam_systemd',
1646 test_dlopen,
1647 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1648 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001649endif
1650
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001651if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001652 executable('systemd-user-sessions',
1653 'src/user-sessions/user-sessions.c',
1654 include_directories : includes,
1655 link_with : [libshared],
1656 install_rpath : rootlibexecdir,
1657 install : true,
1658 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001659endif
1660
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001661if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001662 exe = executable('bootctl',
1663 'src/boot/bootctl.c',
1664 include_directories : includes,
1665 link_with : [libshared],
1666 dependencies : [libblkid],
1667 install_rpath : rootlibexecdir,
1668 install : true)
1669 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001670endif
1671
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001672exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1673 include_directories : includes,
1674 link_with : [libshared],
1675 dependencies : [threads],
1676 install_rpath : rootlibexecdir,
1677 install : true)
1678public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001679
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001680exe = executable('systemctl', 'src/systemctl/systemctl.c',
1681 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001682 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001683 dependencies : [threads,
1684 libcap,
1685 libselinux,
1686 libxz,
1687 liblz4],
1688 install_rpath : rootlibexecdir,
1689 install : true,
1690 install_dir : rootbindir)
1691public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001692
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001693if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001694 executable('systemd-backlight',
1695 'src/backlight/backlight.c',
1696 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001697 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001698 install_rpath : rootlibexecdir,
1699 install : true,
1700 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001701endif
1702
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001703if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001704 executable('systemd-rfkill',
1705 'src/rfkill/rfkill.c',
1706 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001707 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001708 install_rpath : rootlibexecdir,
1709 install : true,
1710 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001711endif
1712
1713executable('systemd-system-update-generator',
1714 'src/system-update-generator/system-update-generator.c',
1715 include_directories : includes,
1716 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001717 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001718 install : true,
1719 install_dir : systemgeneratordir)
1720
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001721if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001722 executable('systemd-cryptsetup',
1723 'src/cryptsetup/cryptsetup.c',
1724 include_directories : includes,
1725 link_with : [libshared],
1726 dependencies : [libcryptsetup],
1727 install_rpath : rootlibexecdir,
1728 install : true,
1729 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001730
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001731 executable('systemd-cryptsetup-generator',
1732 'src/cryptsetup/cryptsetup-generator.c',
1733 include_directories : includes,
1734 link_with : [libshared],
1735 dependencies : [libcryptsetup],
1736 install_rpath : rootlibexecdir,
1737 install : true,
1738 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001739
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001740 executable('systemd-veritysetup',
1741 'src/veritysetup/veritysetup.c',
1742 include_directories : includes,
1743 link_with : [libshared],
1744 dependencies : [libcryptsetup],
1745 install_rpath : rootlibexecdir,
1746 install : true,
1747 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001748
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001749 executable('systemd-veritysetup-generator',
1750 'src/veritysetup/veritysetup-generator.c',
1751 include_directories : includes,
1752 link_with : [libshared],
1753 dependencies : [libcryptsetup],
1754 install_rpath : rootlibexecdir,
1755 install : true,
1756 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001757endif
1758
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001759if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001760 executable('systemd-sysv-generator',
1761 'src/sysv-generator/sysv-generator.c',
1762 include_directories : includes,
1763 link_with : [libshared],
1764 install_rpath : rootlibexecdir,
1765 install : true,
1766 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001767
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001768 executable('systemd-rc-local-generator',
1769 'src/rc-local-generator/rc-local-generator.c',
1770 include_directories : includes,
1771 link_with : [libshared],
1772 install_rpath : rootlibexecdir,
1773 install : true,
1774 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001775endif
1776
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001777if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001778 executable('systemd-hostnamed',
1779 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001780 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001781 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001782 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001783 install : true,
1784 install_dir : rootlibexecdir)
1785
1786 exe = executable('hostnamectl',
1787 'src/hostname/hostnamectl.c',
1788 include_directories : includes,
1789 link_with : [libshared],
1790 install_rpath : rootlibexecdir,
1791 install : true)
1792 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001793endif
1794
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001795if conf.get('ENABLE_LOCALED') == 1
1796 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001797 # logind will load libxkbcommon.so dynamically on its own
1798 deps = [libdl]
1799 else
1800 deps = []
1801 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001802
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001803 executable('systemd-localed',
1804 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001805 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001806 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001807 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001808 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001809 install : true,
1810 install_dir : rootlibexecdir)
1811
1812 exe = executable('localectl',
1813 localectl_sources,
1814 include_directories : includes,
1815 link_with : [libshared],
1816 install_rpath : rootlibexecdir,
1817 install : true)
1818 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001819endif
1820
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001821if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001822 executable('systemd-timedated',
1823 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001824 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001825 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001826 install_rpath : rootlibexecdir,
1827 install : true,
1828 install_dir : rootlibexecdir)
1829
1830 exe = executable('timedatectl',
1831 'src/timedate/timedatectl.c',
1832 include_directories : includes,
1833 install_rpath : rootlibexecdir,
1834 link_with : [libshared],
1835 install : true)
1836 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001837endif
1838
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001839if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001840 executable('systemd-timesyncd',
1841 systemd_timesyncd_sources,
1842 include_directories : includes,
1843 link_with : [libshared],
1844 dependencies : [threads,
1845 libm],
1846 install_rpath : rootlibexecdir,
1847 install : true,
1848 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001849endif
1850
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001851if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001852 executable('systemd-machined',
1853 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001854 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001855 link_with : [libmachine_core,
1856 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001857 install_rpath : rootlibexecdir,
1858 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001859 install_dir : rootlibexecdir)
1860
1861 exe = executable('machinectl',
1862 'src/machine/machinectl.c',
1863 include_directories : includes,
1864 link_with : [libshared],
1865 dependencies : [threads,
1866 libxz,
1867 liblz4],
1868 install_rpath : rootlibexecdir,
1869 install : true,
1870 install_dir : rootbindir)
1871 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001872endif
1873
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001874if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001875 executable('systemd-importd',
1876 systemd_importd_sources,
1877 include_directories : includes,
1878 link_with : [libshared],
1879 dependencies : [threads],
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_pull = executable('systemd-pull',
1885 systemd_pull_sources,
1886 include_directories : includes,
1887 link_with : [libshared],
1888 dependencies : [libcurl,
1889 libz,
1890 libbzip2,
1891 libxz,
1892 libgcrypt],
1893 install_rpath : rootlibexecdir,
1894 install : true,
1895 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001896
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001897 systemd_import = executable('systemd-import',
1898 systemd_import_sources,
1899 include_directories : includes,
1900 link_with : [libshared],
1901 dependencies : [libcurl,
1902 libz,
1903 libbzip2,
1904 libxz],
1905 install_rpath : rootlibexecdir,
1906 install : true,
1907 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001908
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001909 systemd_export = executable('systemd-export',
1910 systemd_export_sources,
1911 include_directories : includes,
1912 link_with : [libshared],
1913 dependencies : [libcurl,
1914 libz,
1915 libbzip2,
1916 libxz],
1917 install_rpath : rootlibexecdir,
1918 install : true,
1919 install_dir : rootlibexecdir)
1920 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001921endif
1922
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001923if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001924 exe = executable('systemd-journal-upload',
1925 systemd_journal_upload_sources,
1926 include_directories : includes,
1927 link_with : [libshared],
1928 dependencies : [threads,
1929 libcurl,
1930 libgnutls,
1931 libxz,
1932 liblz4],
1933 install_rpath : rootlibexecdir,
1934 install : true,
1935 install_dir : rootlibexecdir)
1936 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001937endif
1938
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001939if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001940 s_j_remote = executable('systemd-journal-remote',
1941 systemd_journal_remote_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)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001952
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001953 s_j_gatewayd = executable('systemd-journal-gatewayd',
1954 systemd_journal_gatewayd_sources,
1955 include_directories : includes,
1956 link_with : [libshared],
1957 dependencies : [threads,
1958 libmicrohttpd,
1959 libgnutls,
1960 libxz,
1961 liblz4],
1962 install_rpath : rootlibexecdir,
1963 install : true,
1964 install_dir : rootlibexecdir)
1965 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001966endif
1967
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001968if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001969 executable('systemd-coredump',
1970 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001971 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001972 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001973 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001974 libacl,
1975 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001976 libxz,
1977 liblz4],
1978 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001979 install : true,
1980 install_dir : rootlibexecdir)
1981
1982 exe = executable('coredumpctl',
1983 coredumpctl_sources,
1984 include_directories : includes,
1985 link_with : [libshared],
1986 dependencies : [threads,
1987 libxz,
1988 liblz4],
1989 install_rpath : rootlibexecdir,
1990 install : true)
1991 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001992endif
1993
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001994if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001995 exe = executable('systemd-binfmt',
1996 'src/binfmt/binfmt.c',
1997 include_directories : includes,
1998 link_with : [libshared],
1999 install_rpath : rootlibexecdir,
2000 install : true,
2001 install_dir : rootlibexecdir)
2002 public_programs += [exe]
2003
2004 meson.add_install_script('sh', '-c',
2005 mkdir_p.format(binfmtdir))
2006 meson.add_install_script('sh', '-c',
2007 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2008endif
2009
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002010if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002011 executable('systemd-vconsole-setup',
2012 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002013 include_directories : includes,
2014 link_with : [libshared],
2015 install_rpath : rootlibexecdir,
2016 install : true,
2017 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002018endif
2019
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002020if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002021 executable('systemd-random-seed',
2022 'src/random-seed/random-seed.c',
2023 include_directories : includes,
2024 link_with : [libshared],
2025 install_rpath : rootlibexecdir,
2026 install : true,
2027 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002028endif
2029
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002030if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002031 executable('systemd-firstboot',
2032 'src/firstboot/firstboot.c',
2033 include_directories : includes,
2034 link_with : [libshared],
2035 dependencies : [libcrypt],
2036 install_rpath : rootlibexecdir,
2037 install : true,
2038 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002039endif
2040
2041executable('systemd-remount-fs',
2042 'src/remount-fs/remount-fs.c',
2043 'src/core/mount-setup.c',
2044 'src/core/mount-setup.h',
2045 include_directories : includes,
2046 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002047 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002048 install : true,
2049 install_dir : rootlibexecdir)
2050
2051executable('systemd-machine-id-setup',
2052 'src/machine-id-setup/machine-id-setup-main.c',
2053 'src/core/machine-id-setup.c',
2054 'src/core/machine-id-setup.h',
2055 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002056 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002057 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002058 install : true,
2059 install_dir : rootbindir)
2060
2061executable('systemd-fsck',
2062 'src/fsck/fsck.c',
2063 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002064 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002065 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002066 install : true,
2067 install_dir : rootlibexecdir)
2068
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002069executable('systemd-growfs',
2070 'src/partition/growfs.c',
2071 include_directories : includes,
2072 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002073 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002074 install_rpath : rootlibexecdir,
2075 install : true,
2076 install_dir : rootlibexecdir)
2077
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002078executable('systemd-makefs',
2079 'src/partition/makefs.c',
2080 include_directories : includes,
2081 link_with : [libshared],
2082 install_rpath : rootlibexecdir,
2083 install : true,
2084 install_dir : rootlibexecdir)
2085
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002086executable('systemd-sleep',
2087 'src/sleep/sleep.c',
2088 include_directories : includes,
2089 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002090 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002091 install : true,
2092 install_dir : rootlibexecdir)
2093
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002094exe = executable('systemd-sysctl',
2095 'src/sysctl/sysctl.c',
2096 include_directories : includes,
2097 link_with : [libshared],
2098 install_rpath : rootlibexecdir,
2099 install : true,
2100 install_dir : rootlibexecdir)
2101public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002102
2103executable('systemd-ac-power',
2104 'src/ac-power/ac-power.c',
2105 include_directories : includes,
2106 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002107 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002108 install : true,
2109 install_dir : rootlibexecdir)
2110
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002111exe = executable('systemd-detect-virt',
2112 'src/detect-virt/detect-virt.c',
2113 include_directories : includes,
2114 link_with : [libshared],
2115 install_rpath : rootlibexecdir,
2116 install : true)
2117public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002118
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002119exe = executable('systemd-delta',
2120 'src/delta/delta.c',
2121 include_directories : includes,
2122 link_with : [libshared],
2123 install_rpath : rootlibexecdir,
2124 install : true)
2125public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002126
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002127exe = executable('systemd-escape',
2128 'src/escape/escape.c',
2129 include_directories : includes,
2130 link_with : [libshared],
2131 install_rpath : rootlibexecdir,
2132 install : true,
2133 install_dir : rootbindir)
2134public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002135
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002136exe = executable('systemd-notify',
2137 'src/notify/notify.c',
2138 include_directories : includes,
2139 link_with : [libshared],
2140 install_rpath : rootlibexecdir,
2141 install : true,
2142 install_dir : rootbindir)
2143public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002144
2145executable('systemd-volatile-root',
2146 'src/volatile-root/volatile-root.c',
2147 include_directories : includes,
2148 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002149 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002150 install : true,
2151 install_dir : rootlibexecdir)
2152
2153executable('systemd-cgroups-agent',
2154 'src/cgroups-agent/cgroups-agent.c',
2155 include_directories : includes,
2156 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002157 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002158 install : true,
2159 install_dir : rootlibexecdir)
2160
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002161exe = executable('systemd-path',
2162 'src/path/path.c',
2163 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002164 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002165 install_rpath : rootlibexecdir,
2166 install : true)
2167public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002168
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002169exe = executable('systemd-ask-password',
2170 'src/ask-password/ask-password.c',
2171 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002172 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002173 install_rpath : rootlibexecdir,
2174 install : true,
2175 install_dir : rootbindir)
2176public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002177
2178executable('systemd-reply-password',
2179 'src/reply-password/reply-password.c',
2180 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002181 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002182 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002183 install : true,
2184 install_dir : rootlibexecdir)
2185
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002186exe = executable('systemd-tty-ask-password-agent',
2187 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2188 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002189 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002190 install_rpath : rootlibexecdir,
2191 install : true,
2192 install_dir : rootbindir)
2193public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002194
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002195exe = executable('systemd-cgls',
2196 'src/cgls/cgls.c',
2197 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002198 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002199 install_rpath : rootlibexecdir,
2200 install : true)
2201public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002202
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002203exe = executable('systemd-cgtop',
2204 'src/cgtop/cgtop.c',
2205 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002206 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002207 install_rpath : rootlibexecdir,
2208 install : true)
2209public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002210
2211executable('systemd-initctl',
2212 'src/initctl/initctl.c',
2213 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002214 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002215 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002216 install : true,
2217 install_dir : rootlibexecdir)
2218
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002219exe = executable('systemd-mount',
2220 'src/mount/mount-tool.c',
2221 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002222 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002223 install_rpath : rootlibexecdir,
2224 install : true)
2225public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002226
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002227meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002228 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002229
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002230exe = executable('systemd-run',
2231 'src/run/run.c',
2232 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002233 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002234 install_rpath : rootlibexecdir,
2235 install : true)
2236public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002237
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002238exe = executable('systemd-stdio-bridge',
2239 'src/stdio-bridge/stdio-bridge.c',
2240 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002241 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002242 install_rpath : rootlibexecdir,
2243 install : true)
2244public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002245
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002246exe = executable('busctl',
2247 'src/busctl/busctl.c',
2248 'src/busctl/busctl-introspect.c',
2249 'src/busctl/busctl-introspect.h',
2250 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002251 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002252 install_rpath : rootlibexecdir,
2253 install : true)
2254public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002255
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002256if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002257 exe = executable('systemd-sysusers',
2258 'src/sysusers/sysusers.c',
2259 include_directories : includes,
2260 link_with : [libshared],
2261 install_rpath : rootlibexecdir,
2262 install : true,
2263 install_dir : rootbindir)
2264 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002265endif
2266
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002267if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002268 exe = executable('systemd-tmpfiles',
2269 'src/tmpfiles/tmpfiles.c',
2270 include_directories : includes,
2271 link_with : [libshared],
2272 dependencies : [libacl],
2273 install_rpath : rootlibexecdir,
2274 install : true,
2275 install_dir : rootbindir)
2276 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002277
2278 test('test-systemd-tmpfiles',
2279 test_systemd_tmpfiles_py,
2280 args : exe.full_path())
2281 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002282endif
2283
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002284if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002285 exe = executable('systemd-hwdb',
2286 'src/hwdb/hwdb.c',
2287 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2288 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002289 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002290 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002291 install : true,
2292 install_dir : rootbindir)
2293 public_programs += [exe]
2294endif
2295
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002296if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002297 executable('systemd-quotacheck',
2298 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002299 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002300 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002301 install_rpath : rootlibexecdir,
2302 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002303 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002304endif
2305
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002306exe = executable('systemd-socket-proxyd',
2307 'src/socket-proxy/socket-proxyd.c',
2308 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002309 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002310 dependencies : [threads],
2311 install_rpath : rootlibexecdir,
2312 install : true,
2313 install_dir : rootlibexecdir)
2314public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002315
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002316exe = executable('systemd-udevd',
2317 systemd_udevd_sources,
2318 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002319 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002320 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002321 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002322 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002323 dependencies : [threads,
2324 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002325 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002326 libacl,
2327 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002328 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002329 install : true,
2330 install_dir : rootlibexecdir)
2331public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002332
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002333exe = executable('udevadm',
2334 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002335 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002336 include_directories : includes,
2337 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002338 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002339 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002340 dependencies : [threads,
2341 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002342 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002343 libacl,
2344 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002345 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002346 install : true,
2347 install_dir : rootbindir)
2348public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002349
2350executable('systemd-shutdown',
2351 systemd_shutdown_sources,
2352 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002353 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002354 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002355 install : true,
2356 install_dir : rootlibexecdir)
2357
2358executable('systemd-update-done',
2359 'src/update-done/update-done.c',
2360 include_directories : includes,
2361 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002362 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002363 install : true,
2364 install_dir : rootlibexecdir)
2365
2366executable('systemd-update-utmp',
2367 'src/update-utmp/update-utmp.c',
2368 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002369 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002370 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002371 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002372 install : true,
2373 install_dir : rootlibexecdir)
2374
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002375if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002376 executable('systemd-modules-load',
2377 'src/modules-load/modules-load.c',
2378 include_directories : includes,
2379 link_with : [libshared],
2380 dependencies : [libkmod],
2381 install_rpath : rootlibexecdir,
2382 install : true,
2383 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002384
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002385 meson.add_install_script('sh', '-c',
2386 mkdir_p.format(modulesloaddir))
2387 meson.add_install_script('sh', '-c',
2388 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002389endif
2390
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002391exe = executable('systemd-nspawn',
2392 systemd_nspawn_sources,
2393 'src/core/mount-setup.c', # FIXME: use a variable?
2394 'src/core/mount-setup.h',
2395 'src/core/loopback-setup.c',
2396 'src/core/loopback-setup.h',
2397 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002398 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002399 dependencies : [libacl,
2400 libblkid,
2401 libseccomp,
2402 libselinux],
2403 install_rpath : rootlibexecdir,
2404 install : true)
2405public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002406
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002407if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002408 executable('systemd-networkd',
2409 systemd_networkd_sources,
2410 include_directories : includes,
2411 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002412 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002413 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002414 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002415 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002416 install_rpath : rootlibexecdir,
2417 install : true,
2418 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002419
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002420 executable('systemd-networkd-wait-online',
2421 systemd_networkd_wait_online_sources,
2422 include_directories : includes,
2423 link_with : [libnetworkd_core,
2424 libshared],
2425 install_rpath : rootlibexecdir,
2426 install : true,
2427 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002428
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002429 exe = executable('networkctl',
2430 networkctl_sources,
2431 include_directories : includes,
2432 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002433 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002434 install_rpath : rootlibexecdir,
2435 install : true,
2436 install_dir : rootbindir)
2437 public_programs += [exe]
2438endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002439
2440executable('systemd-sulogin-shell',
2441 ['src/sulogin-shell/sulogin-shell.c'],
2442 include_directories : includes,
2443 link_with : [libshared],
2444 install_rpath : rootlibexecdir,
2445 install : true,
2446 install_dir : rootlibexecdir)
2447
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002448############################################################
2449
2450foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002451 sources = tuple[0]
2452 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2453 dependencies = tuple[2]
2454 condition = tuple.length() >= 4 ? tuple[3] : ''
2455 type = tuple.length() >= 5 ? tuple[4] : ''
2456 defs = tuple.length() >= 6 ? tuple[5] : []
2457 incs = tuple.length() >= 7 ? tuple[6] : includes
2458 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002459
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002460 name = sources[0].split('/')[-1].split('.')[0]
2461 if type.startswith('timeout=')
2462 timeout = type.split('=')[1].to_int()
2463 type = ''
2464 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002465 if want_tests == 'false'
2466 message('Not compiling @0@ because tests is set to false'.format(name))
2467 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002468 exe = executable(
2469 name,
2470 sources,
2471 include_directories : incs,
2472 link_with : link_with,
2473 dependencies : dependencies,
2474 c_args : defs,
2475 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002476 install : install_tests,
2477 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002478
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002479 if type == 'manual'
2480 message('@0@ is a manual test'.format(name))
2481 elif type == 'unsafe' and want_tests != 'unsafe'
2482 message('@0@ is an unsafe test'.format(name))
2483 else
2484 test(name, exe,
2485 env : test_env,
2486 timeout : timeout)
2487 endif
2488 else
2489 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2490 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002491endforeach
2492
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002493test_libsystemd_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002494 'test-libsystemd-sym',
2495 test_libsystemd_sym_c,
2496 include_directories : includes,
2497 link_with : [libsystemd],
2498 install : install_tests,
2499 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002500test('test-libsystemd-sym',
2501 test_libsystemd_sym)
2502
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002503test_libudev_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002504 'test-libudev-sym',
2505 test_libudev_sym_c,
2506 include_directories : includes,
2507 c_args : ['-Wno-deprecated-declarations'],
2508 link_with : [libudev],
2509 install : install_tests,
2510 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002511test('test-libudev-sym',
2512 test_libudev_sym)
2513
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002514############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002515
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002516fuzzer_exes = []
2517
2518foreach tuple : fuzzers
2519 sources = tuple[0]
2520 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2521 dependencies = tuple[2]
2522 defs = tuple.length() >= 4 ? tuple[3] : []
2523 incs = tuple.length() >= 5 ? tuple[4] : includes
2524
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002525 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002526 dependencies += fuzzing_engine
2527 else
2528 sources += 'src/fuzz/fuzz-main.c'
2529 endif
2530
2531 name = sources[0].split('/')[-1].split('.')[0]
2532
2533 fuzzer_exes += executable(
2534 name,
2535 sources,
2536 include_directories : [incs, include_directories('src/fuzz')],
2537 link_with : link_with,
2538 dependencies : dependencies,
2539 c_args : defs,
2540 install : false)
2541endforeach
2542
2543run_target('fuzzers',
2544 depends : fuzzer_exes,
2545 command : ['true'])
2546
2547############################################################
2548
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002549make_directive_index_py = find_program('tools/make-directive-index.py')
2550make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002551xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002552hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002553
2554subdir('units')
2555subdir('sysctl.d')
2556subdir('sysusers.d')
2557subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002558subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002559subdir('hwdb')
2560subdir('network')
2561subdir('man')
2562subdir('shell-completion/bash')
2563subdir('shell-completion/zsh')
2564subdir('docs/sysvinit')
2565subdir('docs/var-log')
2566
2567# FIXME: figure out if the warning is true:
2568# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2569install_subdir('factory/etc',
2570 install_dir : factorydir)
2571
2572
2573install_data('xorg/50-systemd-user.sh',
2574 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002575install_data('modprobe.d/systemd.conf',
2576 install_dir : modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002577install_data('README',
2578 'NEWS',
2579 'CODING_STYLE',
2580 'DISTRO_PORTING',
2581 'ENVIRONMENT.md',
2582 'LICENSE.GPL2',
2583 'LICENSE.LGPL2.1',
Felipe Satelerf9f54412017-12-18 10:58:13 -03002584 'TRANSIENT-SETTINGS.md',
2585 'UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002586 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2587 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002588
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002589meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2590meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2591
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002592############################################################
2593
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002594meson_check_help = find_program('tools/meson-check-help.sh')
2595
2596foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002597 name = exec.full_path().split('/')[-1]
2598 test('check-help-' + name,
2599 meson_check_help,
2600 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002601endforeach
2602
2603############################################################
2604
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002605prev = ''
2606foreach p : fuzz_regression_tests
2607 a = p.split('/')[-3]
2608 b = p.split('/')[-2]
2609 c = p.split('/')[-1]
2610
2611 if a == 'address'
2612 build = sanitize_address
2613 else
2614 error('unknown sanitizer @0@'.format(a))
2615 endif
2616
2617 name = '@1@:@0@'.format(a, b)
2618
2619 if name != prev
2620 if want_tests == 'false'
2621 message('Not compiling @0@ because tests is set to false'.format(name))
2622 elif not sanitizers.contains(a)
2623 message('Not compiling @0@ because @1@ sanitizer is not available'.format(name, a))
2624 elif slow_tests
2625 exe = custom_target(
2626 name,
2627 output : name,
2628 depends : build,
2629 command : [env, 'ln', '-fs',
2630 join_paths(build.full_path(), b),
2631 '@OUTPUT@'],
2632 build_by_default : true)
2633 else
2634 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2635 endif
2636 endif
2637 prev = name
2638
2639 if want_tests != 'false' and slow_tests
2640 test(c, env, args : [exe.full_path(),
2641 join_paths(meson.source_root(),
2642 'test/fuzz-regressions',
2643 p)])
2644 endif
2645endforeach
2646
2647############################################################
2648
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002649if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002650 all_files = run_command(
2651 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002652 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002653 'ls-files',
2654 ':/*.[ch]'])
2655 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002656
userwithuide85a6902017-08-09 13:41:44 +00002657 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002658 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002659 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002660 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002661 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002662 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002663 output : 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002664 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002665endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002666
2667if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002668 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002669 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002670 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002671 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002672endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002673
2674if git.found()
2675 git_head = run_command(
2676 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002677 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002678 'rev-parse', 'HEAD']).stdout().strip()
2679 git_head_short = run_command(
2680 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002681 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002682 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2683
2684 run_target(
2685 'git-snapshot',
2686 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002687 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002688 git_head_short),
2689 '--prefix', 'systemd-@0@/'.format(git_head),
2690 'HEAD'])
2691endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002692
2693############################################################
2694
Lennart Poettering51b13862017-12-20 12:51:14 +01002695meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2696run_target(
2697 'check-api-docs',
2698 depends : [man, libsystemd, libudev],
2699 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2700
2701############################################################
2702
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002703status = [
2704 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2705
Yu Watanabe359b4962017-11-25 20:35:24 +09002706 'prefix directory: @0@'.format(prefixdir),
2707 'rootprefix directory: @0@'.format(rootprefixdir),
2708 'sysconf directory: @0@'.format(sysconfdir),
2709 'include directory: @0@'.format(includedir),
2710 'lib directory: @0@'.format(libdir),
2711 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002712 'SysV init scripts: @0@'.format(sysvinit_path),
2713 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002714 'PAM modules directory: @0@'.format(pamlibdir),
2715 'PAM configuration directory: @0@'.format(pamconfdir),
2716 'RPM macros directory: @0@'.format(rpmmacrosdir),
2717 'modprobe.d directory: @0@'.format(modprobedir),
2718 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2719 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2720 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2721 'bash completions directory: @0@'.format(bashcompletiondir),
2722 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002723 'extra start script: @0@'.format(get_option('rc-local')),
2724 'extra stop script: @0@'.format(get_option('halt-local')),
2725 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2726 get_option('debug-tty')),
2727 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002728 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002729 'maximum system UID: @0@'.format(system_uid_max),
2730 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002731 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2732 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2733 'minimum container UID base: @0@'.format(container_uid_base_min),
2734 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002735 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002736 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002737 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002738 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002739 'nobody user name: @0@'.format(nobody_user),
2740 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002741 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002742 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002743
2744 'default DNSSEC mode: @0@'.format(default_dnssec),
2745 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2746 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2747
2748alt_dns_servers = '\n '.join(dns_servers.split(' '))
2749alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2750status += [
2751 'default DNS servers: @0@'.format(alt_dns_servers),
2752 'default NTP servers: @0@'.format(alt_ntp_servers)]
2753
2754alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2755 '@@0@'.format(time_epoch)).stdout().strip()
2756status += [
2757 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2758
2759# TODO:
2760# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2761# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2762# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2763
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002764if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002765 status += [
2766 'efi arch: @0@'.format(efi_arch)]
2767
2768 if have_gnu_efi
2769 status += [
2770 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2771 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002772 'EFI lib directory: @0@'.format(efi_libdir),
2773 'EFI lds directory: @0@'.format(efi_ldsdir),
2774 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002775 endif
2776endif
2777
2778found = []
2779missing = []
2780
2781foreach tuple : [
2782 ['libcryptsetup'],
2783 ['PAM'],
2784 ['AUDIT'],
2785 ['IMA'],
2786 ['AppArmor'],
2787 ['SELinux'],
2788 ['SECCOMP'],
2789 ['SMACK'],
2790 ['zlib'],
2791 ['xz'],
2792 ['lz4'],
2793 ['bzip2'],
2794 ['ACL'],
2795 ['gcrypt'],
2796 ['qrencode'],
2797 ['microhttpd'],
2798 ['gnutls'],
2799 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002800 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002801 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002802 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002803 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002804 ['libiptc'],
2805 ['elfutils'],
2806 ['binfmt'],
2807 ['vconsole'],
2808 ['quotacheck'],
2809 ['tmpfiles'],
2810 ['environment.d'],
2811 ['sysusers'],
2812 ['firstboot'],
2813 ['randomseed'],
2814 ['backlight'],
2815 ['rfkill'],
2816 ['logind'],
2817 ['machined'],
2818 ['importd'],
2819 ['hostnamed'],
2820 ['timedated'],
2821 ['timesyncd'],
2822 ['localed'],
2823 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002824 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002825 ['coredump'],
2826 ['polkit'],
2827 ['legacy pkla', install_polkit_pkla],
2828 ['efi'],
2829 ['gnu-efi', have_gnu_efi],
2830 ['kmod'],
2831 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01002832 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002833 ['blkid'],
2834 ['dbus'],
2835 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002836 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002837 ['hwdb'],
2838 ['tpm'],
2839 ['man pages', want_man],
2840 ['html pages', want_html],
2841 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002842 ['split /usr', conf.get('HAVE_SPLIT_USR') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002843 ['SysV compat'],
2844 ['utmp'],
2845 ['ldconfig'],
2846 ['hibernate'],
2847 ['adm group', get_option('adm-group')],
2848 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002849 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002850 ['debug hashmap'],
2851 ['debug mmap cache'],
2852]
2853
2854 cond = tuple.get(1, '')
2855 if cond == ''
2856 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2857 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002858 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002859 endif
2860 if cond
2861 found += [tuple[0]]
2862 else
2863 missing += [tuple[0]]
2864 endif
2865endforeach
2866
2867status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002868 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002869 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002870 '',
2871 'disabled features: @0@'.format(', '.join(missing)),
2872 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002873message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002874
2875if rootprefixdir != rootprefix_default
2876 message('WARNING:\n' +
2877 ' Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2878 ' systemd used fixed names for unit file directories and other paths, so anything\n' +
2879 ' except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
2880endif