blob: f3a65b3893238fc72e7a0368c7b8e072a0384406 [file] [log] [blame]
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01001# SPDX-License-Identifier: LGPL-2.1+
2#
3# Copyright 2017 Zbigniew Jędrzejewski-Szmek
4#
5# systemd is free software; you can redistribute it and/or modify it
6# under the terms of the GNU Lesser General Public License as published by
7# the Free Software Foundation; either version 2.1 of the License, or
8# (at your option) any later version.
9#
10# systemd is distributed in the hope that it will be useful, but
11# WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13# Lesser General Public License for more details.
14#
15# You should have received a copy of the GNU Lesser General Public License
16# along with systemd; If not, see <http://www.gnu.org/licenses/>.
17
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040018project('systemd', 'c',
Lennart Poetteringcbd73c62017-12-11 16:10:25 +010019 version : '236',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040020 license : 'LGPLv2+',
21 default_options: [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040022 'c_std=gnu99',
23 'prefix=/usr',
24 'sysconfdir=/etc',
25 'localstatedir=/var',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040026 ],
Zbigniew Jędrzejewski-Szmek86ea8d72017-11-20 08:08:43 +010027 meson_version : '>= 0.41',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040028 )
29
Lennart Poetteringcbd73c62017-12-11 16:10:25 +010030libsystemd_version = '0.20.0'
31libudev_version = '1.6.8'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020032
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040033# We need the same data in three different formats, ugh!
34# Also, for hysterical reasons, we use different variable
35# names, sometimes. Not all variables are included in every
36# set. Ugh, ugh, ugh!
37conf = configuration_data()
38conf.set_quoted('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version())
39conf.set_quoted('PACKAGE_VERSION', meson.project_version())
40
41substs = configuration_data()
42substs.set('PACKAGE_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
43substs.set('PACKAGE_VERSION', meson.project_version())
44
45m4_defines = []
46
47#####################################################################
48
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040049# Try to install the git pre-commit hook
50git_hook = run_command(join_paths(meson.source_root(), 'tools/add-git-hook.sh'))
51if git_hook.returncode() == 0
52 message(git_hook.stdout().strip())
53endif
54
55#####################################################################
56
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010057split_usr = get_option('split-usr')
58conf.set10('HAVE_SPLIT_USR', split_usr)
59
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010060rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010061# Unusual rootprefixdir values are used by some distros
62# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010063rootprefix_default = get_option('split-usr') ? '/' : '/usr'
64if rootprefixdir == ''
65 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010066endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040067
68sysvinit_path = get_option('sysvinit-path')
69sysvrcnd_path = get_option('sysvrcnd-path')
Max Harmathy54248242017-12-15 16:05:25 +010070have = sysvinit_path != '' and sysvrcnd_path != ''
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020071conf.set10('HAVE_SYSV_COMPAT', have,
72 description : 'SysV init scripts and rcN.d links are supported')
73m4_defines += have ? ['-DHAVE_SYSV_COMPAT'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040074
75# join_paths ignore the preceding arguments if an absolute component is
76# encountered, so this should canonicalize various paths when they are
77# absolute or relative.
78prefixdir = get_option('prefix')
79if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040080 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040081endif
82bindir = join_paths(prefixdir, get_option('bindir'))
83libdir = join_paths(prefixdir, get_option('libdir'))
84sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
85includedir = join_paths(prefixdir, get_option('includedir'))
86datadir = join_paths(prefixdir, get_option('datadir'))
87localstatedir = join_paths('/', get_option('localstatedir'))
88
89rootbindir = join_paths(rootprefixdir, 'bin')
90rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
91
92rootlibdir = get_option('rootlibdir')
93if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040094 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040095endif
96
97# Dirs of external packages
Michael Bieble17e5ba2017-04-13 10:30:56 -040098pkgconfigdatadir = join_paths(datadir, 'pkgconfig')
99pkgconfiglibdir = join_paths(libdir, 'pkgconfig')
100polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
101polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
102polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
103varlogdir = join_paths(localstatedir, 'log')
104xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900105rpmmacrosdir = get_option('rpmmacrosdir')
106if rpmmacrosdir != 'no'
107 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
108endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200109modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400110
111# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400112pkgdatadir = join_paths(datadir, 'systemd')
113environmentdir = join_paths(prefixdir, 'lib/environment.d')
114pkgsysconfdir = join_paths(sysconfdir, 'systemd')
115userunitdir = join_paths(prefixdir, 'lib/systemd/user')
116userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
117tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
118sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
119sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
120binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
121modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
122networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
123pkgincludedir = join_paths(includedir, 'systemd')
124systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
125usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
126systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
127userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
128systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
129systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
130systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
131systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
132udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
133udevhomedir = udevlibexecdir
134udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
135udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
136catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
137kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
138factorydir = join_paths(datadir, 'factory')
139docdir = join_paths(datadir, 'doc/systemd')
140bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
141testsdir = join_paths(prefixdir, 'lib/systemd/tests')
142systemdstatedir = join_paths(localstatedir, 'lib/systemd')
143catalogstatedir = join_paths(systemdstatedir, 'catalog')
144randomseeddir = join_paths(localstatedir, 'lib/systemd')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400145
146dbuspolicydir = get_option('dbuspolicydir')
147if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400148 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400149endif
150
151dbussessionservicedir = get_option('dbussessionservicedir')
152if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400153 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400154endif
155
156dbussystemservicedir = get_option('dbussystemservicedir')
157if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400158 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400159endif
160
161pamlibdir = get_option('pamlibdir')
162if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400163 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400164endif
165
166pamconfdir = get_option('pamconfdir')
167if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400168 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400169endif
170
171conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400172conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400173conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
174conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
175conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400176conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
177conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400178conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400179conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
180conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400181conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
182conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
183conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
184conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100185conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100186conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400187conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
188conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
189conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
190conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
191conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100192conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400193conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400194conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
195conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400196conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
197conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
198conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
199conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
200conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
201conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400202conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
203conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400204conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400205conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400206conf.set_quoted('LIBDIR', libdir)
207conf.set_quoted('ROOTLIBDIR', rootlibdir)
208conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
209conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400210conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
211conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
212conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
213conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
214conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
215conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400216
217conf.set_quoted('ABS_BUILD_DIR', meson.build_root())
218conf.set_quoted('ABS_SRC_DIR', meson.source_root())
219
220substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400221substs.set('exec_prefix', prefixdir)
222substs.set('libdir', libdir)
223substs.set('rootlibdir', rootlibdir)
224substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400225substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400226substs.set('bindir', bindir)
227substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400228substs.set('rootlibexecdir', rootlibexecdir)
229substs.set('systemunitdir', systemunitdir)
230substs.set('userunitdir', userunitdir)
231substs.set('systempresetdir', systempresetdir)
232substs.set('userpresetdir', userpresetdir)
233substs.set('udevhwdbdir', udevhwdbdir)
234substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400235substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400236substs.set('catalogdir', catalogdir)
237substs.set('tmpfilesdir', tmpfilesdir)
238substs.set('sysusersdir', sysusersdir)
239substs.set('sysctldir', sysctldir)
240substs.set('binfmtdir', binfmtdir)
241substs.set('modulesloaddir', modulesloaddir)
242substs.set('systemgeneratordir', systemgeneratordir)
243substs.set('usergeneratordir', usergeneratordir)
244substs.set('systemenvgeneratordir', systemenvgeneratordir)
245substs.set('userenvgeneratordir', userenvgeneratordir)
246substs.set('systemshutdowndir', systemshutdowndir)
247substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400248substs.set('VARLOGDIR', varlogdir)
249substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400250substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
251substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400252substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
253substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
254substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
255substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400256
257#####################################################################
258
259cc = meson.get_compiler('c')
260pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400261check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400262
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400263cxx = find_program('c++', required : false)
264if cxx.found()
265 # Used only for tests
266 add_languages('cpp')
267endif
268
Zbigniew Jędrzejewski-Szmek75cf1d62017-07-04 17:59:15 -0400269foreach arg : ['-Wextra',
Zbigniew Jędrzejewski-Szmek70160ce2017-10-03 12:11:49 +0200270 '-Werror=undef',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400271 '-Wlogical-op',
272 '-Wmissing-include-dirs',
273 '-Wold-style-definition',
274 '-Wpointer-arith',
275 '-Winit-self',
276 '-Wdeclaration-after-statement',
277 '-Wfloat-equal',
278 '-Wsuggest-attribute=noreturn',
279 '-Werror=missing-prototypes',
280 '-Werror=implicit-function-declaration',
281 '-Werror=missing-declarations',
282 '-Werror=return-type',
283 '-Werror=incompatible-pointer-types',
284 '-Werror=format=2',
285 '-Wstrict-prototypes',
286 '-Wredundant-decls',
287 '-Wmissing-noreturn',
Zbigniew Jędrzejewski-Szmek97279d82017-11-20 14:23:40 +0100288 '-Wimplicit-fallthrough=5',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400289 '-Wshadow',
290 '-Wendif-labels',
291 '-Wstrict-aliasing=2',
292 '-Wwrite-strings',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400293 '-Werror=overflow',
294 '-Wdate-time',
295 '-Wnested-externs',
296 '-ffast-math',
297 '-fno-common',
298 '-fdiagnostics-show-option',
299 '-fno-strict-aliasing',
300 '-fvisibility=hidden',
301 '-fstack-protector',
302 '-fstack-protector-strong',
303 '-fPIE',
304 '--param=ssp-buffer-size=4',
305 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400306 if cc.has_argument(arg)
307 add_project_arguments(arg, language : 'c')
308 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400309endforeach
310
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400311# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
312# arguments, just emits a warnings. So test for the "positive" version instead.
313foreach arg : ['unused-parameter',
314 'missing-field-initializers',
315 'unused-result',
Zbigniew Jędrzejewski-Szmekfb1b5882017-09-04 19:49:12 +0300316 'format-signedness',
317 'error=nonnull', # work-around for gcc 7.1 turning this on on its own
318 ]
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400319 if cc.has_argument('-W' + arg)
320 add_project_arguments('-Wno-' + arg, language : 'c')
321 endif
322endforeach
323
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400324if cc.compiles('
325 #include <time.h>
326 #include <inttypes.h>
327 typedef uint64_t usec_t;
328 usec_t now(clockid_t clock);
329 int main(void) {
330 struct timespec now;
331 return 0;
332 }
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400333', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400334 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400335endif
336
337if cc.get_id() == 'clang'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400338 foreach arg : ['-Wno-typedef-redefinition',
339 '-Wno-gnu-variable-sized-type-not-at-end',
340 ]
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400341 if cc.has_argument(arg,
342 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400343 add_project_arguments(arg, language : 'c')
344 endif
345 endforeach
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400346endif
347
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400348link_test_c = files('tools/meson-link-test.c')
349
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400350# --as-needed and --no-undefined are provided by meson by default,
351# run mesonconf to see what is enabled
352foreach arg : ['-Wl,-z,relro',
353 '-Wl,-z,now',
354 '-pie',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400355 ]
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400356
357 have = run_command(check_compilation_sh,
358 cc.cmd_array(), '-x', 'c', arg,
359 '-include', link_test_c).returncode() == 0
360 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
361 if have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400362 add_project_link_arguments(arg, language : 'c')
363 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400364endforeach
365
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400366if get_option('buildtype') != 'debug'
367 foreach arg : ['-ffunction-sections',
368 '-fdata-sections']
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400369 if cc.has_argument(arg,
370 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400371 add_project_arguments(arg, language : 'c')
372 endif
373 endforeach
374
375 foreach arg : ['-Wl,--gc-sections']
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400376 have = run_command(check_compilation_sh,
377 cc.cmd_array(), '-x', 'c', arg,
378 '-include', link_test_c).returncode() == 0
379 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
380 if have
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400381 add_project_link_arguments(arg, language : 'c')
382 endif
383 endforeach
384endif
385
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400386cpp = ' '.join(cc.cmd_array()) + ' -E'
387
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400388#####################################################################
389# compilation result tests
390
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400391conf.set('_GNU_SOURCE', true)
392conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400393
394conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
395conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
396conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
397conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
398conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
399conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
400conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
401
402decl_headers = '''
403#include <uchar.h>
404#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000405#include <linux/fib_rules.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400406'''
407# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
408
409foreach decl : ['char16_t',
410 'char32_t',
411 'key_serial_t',
412 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000413 'struct fib_rule_uid_range',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400414 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400415
416 # We get -1 if the size cannot be determined
417 have = cc.sizeof(decl, prefix : decl_headers) > 0
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200418 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400419endforeach
420
421foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
422 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
423 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
424 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530425 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400426 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
427 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
428 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
429 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
430 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530431 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400432 # if_tunnel.h is buggy and cannot be included on its own
433 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
434 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
435 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
436 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
437 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
438 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
439 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530440 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400441 ['NDA_IFINDEX', 'linux/neighbour.h'],
442 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000443 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400444 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530445 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400446 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400447 prefix = decl.length() > 2 ? decl[2] : ''
448 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200449 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400450endforeach
451
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400452foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200453 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400454endforeach
455
456foreach ident : [
Yu Watanabee4816452017-11-26 02:17:06 +0900457 ['memfd_create', '''#define _GNU_SOURCE
458 #include <sys/mman.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400459 ['gettid', '''#include <sys/types.h>'''],
460 ['pivot_root', '''#include <stdlib.h>'''], # no known header declares pivot_root
461 ['name_to_handle_at', '''#define _GNU_SOURCE
462 #include <sys/types.h>
463 #include <sys/stat.h>
464 #include <fcntl.h>'''],
465 ['setns', '''#define _GNU_SOURCE
466 #include <sched.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400467 ['renameat2', '''#include <stdio.h>'''],
468 ['kcmp', '''#include <linux/kcmp.h>'''],
469 ['keyctl', '''#include <sys/types.h>
470 #include <keyutils.h>'''],
Yu Watanabe0e50bfa2017-12-25 19:42:42 +0900471 ['copy_file_range', '''#define _GNU_SOURCE
472 #include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400473 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200474 ['bpf', '''#include <sys/syscall.h>
475 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmek38f1ae02017-04-19 16:14:16 -0400476 ['explicit_bzero' , '''#include <string.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400477]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400478
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400479 have = cc.has_function(ident[0], prefix : ident[1])
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200480 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400481endforeach
482
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400483if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200484 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200485 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400486else
487 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200488 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200489 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400490endif
491
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400492#####################################################################
493
494sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400495awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400496m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400497stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400498git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400499
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400500meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400501mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400502test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
503splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400504
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400505# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
506# /usr/sbin, /sbin, and fall back to the default from middle column.
507progs = [['telinit', '/lib/sysvinit/telinit'],
508 ['quotaon', '/usr/sbin/quotaon' ],
509 ['quotacheck', '/usr/sbin/quotacheck' ],
510 ['kill', '/usr/bin/kill' ],
511 ['kmod', '/usr/bin/kmod' ],
512 ['kexec', '/usr/sbin/kexec' ],
513 ['sulogin', '/usr/sbin/sulogin' ],
514 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
515 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
516 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
517 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
518 ]
519foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400520 path = get_option(prog[0] + '-path')
521 if path != ''
522 message('Using @1@ for @0@'.format(prog[0], path))
523 else
524 exe = find_program(prog[0],
525 '/usr/sbin/' + prog[0],
526 '/sbin/' + prog[0],
527 required: false)
528 path = exe.found() ? exe.path() : prog[1]
529 endif
530 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
531 conf.set_quoted(name, path)
532 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400533endforeach
534
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400535if run_command('ln', '--relative', '--help').returncode() != 0
536 error('ln does not support --relative')
537endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400538
539############################################################
540
541gperf = find_program('gperf')
542
543gperf_test_format = '''
544#include <string.h>
545const char * in_word_set(const char *, @0@);
546@1@
547'''
548gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
549gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
550gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
551if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400552 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400553else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400554 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
555 if cc.compiles(gperf_test)
556 gperf_len_type = 'unsigned'
557 else
558 error('unable to determine gperf len type')
559 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400560endif
561message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400562conf.set('GPERF_LEN_TYPE', gperf_len_type,
563 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400564
565############################################################
566
567if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400568 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400569endif
570foreach header : ['linux/btrfs.h',
571 'linux/memfd.h',
572 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200573 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400574 'valgrind/memcheck.h',
575 'valgrind/valgrind.h',
576 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400577
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200578 conf.set10('HAVE_' + header.underscorify().to_upper(),
579 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400580endforeach
581
582############################################################
583
584conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400585conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
586gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400587
588default_hierarchy = get_option('default-hierarchy')
589conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
590 description : 'default cgroup hierarchy as string')
591if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400592 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400593elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400594 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400595else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400596 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400597endif
598
599time_epoch = get_option('time-epoch')
600if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400601 NEWS = files('NEWS')
602 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400603endif
604time_epoch = time_epoch.to_int()
605conf.set('TIME_EPOCH', time_epoch)
606
607system_uid_max = get_option('system-uid-max')
608if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400609 system_uid_max = run_command(
610 awk,
611 'BEGIN { uid=999 } /^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
612 '/etc/login.defs').stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400613endif
614system_uid_max = system_uid_max.to_int()
615conf.set('SYSTEM_UID_MAX', system_uid_max)
616substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400617message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400618
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400619system_gid_max = get_option('system-gid-max')
620if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400621 system_gid_max = run_command(
622 awk,
623 'BEGIN { gid=999 } /^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
624 '/etc/login.defs').stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400625endif
626system_gid_max = system_gid_max.to_int()
627conf.set('SYSTEM_GID_MAX', system_gid_max)
628substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400629message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400630
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100631dynamic_uid_min = get_option('dynamic-uid-min').to_int()
632dynamic_uid_max = get_option('dynamic-uid-max').to_int()
633conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
634conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
635substs.set('dynamicuidmin', dynamic_uid_min)
636substs.set('dynamicuidmax', dynamic_uid_max)
637
638container_uid_base_min = get_option('container-uid-base-min').to_int()
639container_uid_base_max = get_option('container-uid-base-max').to_int()
640conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
641conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
642substs.set('containeruidbasemin', container_uid_base_min)
643substs.set('containeruidbasemax', container_uid_base_max)
644
Lennart Poetteringafde4572017-12-05 11:00:24 +0100645nobody_user = get_option('nobody-user')
646nobody_group = get_option('nobody-group')
647
648getent_result = run_command('getent', 'passwd', '65534')
649if getent_result.returncode() == 0
650 name = getent_result.stdout().split(':')[0]
651 if name != nobody_user
652 message('WARNING:\n' +
653 ' 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) +
654 ' Your build will result in an user table setup that is incompatible with the local system.')
655 endif
656endif
657id_result = run_command('id', '-u', nobody_user)
658if id_result.returncode() == 0
659 id = id_result.stdout().to_int()
660 if id != 65534
661 message('WARNING:\n' +
662 ' 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) +
663 ' Your build will result in an user table setup that is incompatible with the local system.')
664 endif
665endif
666
667getent_result = run_command('getent', 'group', '65534')
668if getent_result.returncode() == 0
669 name = getent_result.stdout().split(':')[0]
670 if name != nobody_group
671 message('WARNING:\n' +
672 ' 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) +
673 ' Your build will result in an group table setup that is incompatible with the local system.')
674 endif
675endif
676id_result = run_command('id', '-g', nobody_group)
677if id_result.returncode() == 0
678 id = id_result.stdout().to_int()
679 if id != 65534
680 message('WARNING:\n' +
681 ' 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) +
682 ' Your build will result in an group table setup that is incompatible with the local system.')
683 endif
684endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900685if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
686 message('WARNING:\n' +
687 ' The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
688 ' Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
689endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100690
691conf.set_quoted('NOBODY_USER_NAME', nobody_user)
692conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900693substs.set('NOBODY_USER_NAME', nobody_user)
694substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100695
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400696tty_gid = get_option('tty-gid')
697conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400698substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400699
Ikey Doherty84786b82017-12-03 12:28:23 +0000700# Ensure provided GID argument is numeric, otherwise fallback to default assignment
701if get_option('users-gid') != ''
Yu Watanabed6806872017-12-05 14:01:39 +0900702 users_gid = get_option('users-gid').to_int()
Ikey Doherty84786b82017-12-03 12:28:23 +0000703else
Yu Watanabed6806872017-12-05 14:01:39 +0900704 users_gid = '-'
Ikey Doherty84786b82017-12-03 12:28:23 +0000705endif
706substs.set('USERS_GID', users_gid)
707
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400708if get_option('adm-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400709 m4_defines += ['-DENABLE_ADM_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400710endif
711
712if get_option('wheel-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400713 m4_defines += ['-DENABLE_WHEEL_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400714endif
715
716substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700717substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400718
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400719kill_user_processes = get_option('default-kill-user-processes')
720conf.set10('KILL_USER_PROCESSES', kill_user_processes)
721substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400722
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400723dns_servers = get_option('dns-servers')
724conf.set_quoted('DNS_SERVERS', dns_servers)
725substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400726
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400727ntp_servers = get_option('ntp-servers')
728conf.set_quoted('NTP_SERVERS', ntp_servers)
729substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400730
731conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
732
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400733substs.set('SUSHELL', get_option('debug-shell'))
734substs.set('DEBUGTTY', get_option('debug-tty'))
735
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400736debug = get_option('debug')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200737enable_debug_hashmap = false
738enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400739if debug != ''
740 foreach name : debug.split(',')
741 if name == 'hashmap'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200742 enable_debug_hashmap = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400743 elif name == 'mmap-cache'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200744 enable_debug_mmap_cache = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400745 else
746 message('unknown debug option "@0@", ignoring'.format(name))
747 endif
748 endforeach
749endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200750conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
751conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400752
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400753#####################################################################
754
755threads = dependency('threads')
756librt = cc.find_library('rt')
757libm = cc.find_library('m')
758libdl = cc.find_library('dl')
759libcrypt = cc.find_library('crypt')
760
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400761libcap = dependency('libcap', required : false)
762if not libcap.found()
763 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
764 libcap = cc.find_library('cap')
765endif
766
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400767libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekd6e80962017-09-15 14:47:57 +0200768 version : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400769
770want_seccomp = get_option('seccomp')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400771if want_seccomp != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400772 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400773 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400774 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200775 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400776else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200777 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400778 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400779endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200780conf.set10('HAVE_SECCOMP', have)
781m4_defines += have ? ['-DHAVE_SECCOMP'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400782
783want_selinux = get_option('selinux')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400784if want_selinux != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400785 libselinux = dependency('libselinux',
786 version : '>= 2.1.9',
787 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200788 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400789else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200790 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400791 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400792endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200793conf.set10('HAVE_SELINUX', have)
794m4_defines += have ? ['-DHAVE_SELINUX'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400795
796want_apparmor = get_option('apparmor')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400797if want_apparmor != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400798 libapparmor = dependency('libapparmor',
799 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200800 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400801else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200802 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400803 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400804endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200805conf.set10('HAVE_APPARMOR', have)
806m4_defines += have ? ['-DHAVE_APPARMOR'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400807
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400808smack_run_label = get_option('smack-run-label')
809if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400810 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
811 m4_defines += ['-DHAVE_SMACK_RUN_LABEL']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400812endif
813
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400814want_polkit = get_option('polkit')
815install_polkit = false
816install_polkit_pkla = false
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400817if want_polkit != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400818 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400819
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400820 libpolkit = dependency('polkit-gobject-1',
821 required : false)
822 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
823 message('Old polkit detected, will install pkla files')
824 install_polkit_pkla = true
825 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400826endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200827conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400828
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400829want_acl = get_option('acl')
830if want_acl != 'false'
831 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200832 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400833else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200834 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400835 libacl = []
836endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200837conf.set10('HAVE_ACL', have)
838m4_defines += have ? ['-DHAVE_ACL'] : []
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400839
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400840want_audit = get_option('audit')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400841if want_audit != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400842 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200843 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400844else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200845 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400846 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400847endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200848conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400849
850want_blkid = get_option('blkid')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400851if want_blkid != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400852 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200853 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400854else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200855 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400856 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400857endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200858conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400859
860want_kmod = get_option('kmod')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400861if want_kmod != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400862 libkmod = dependency('libkmod',
863 version : '>= 15',
864 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200865 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400866else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200867 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400868 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400869endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200870conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400871
872want_pam = get_option('pam')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400873if want_pam != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400874 libpam = cc.find_library('pam', required : want_pam == 'true')
875 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200876 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400877else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200878 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400879 libpam = []
880 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400881endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200882conf.set10('HAVE_PAM', have)
883m4_defines += have ? ['-DHAVE_PAM'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400884
885want_microhttpd = get_option('microhttpd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400886if want_microhttpd != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400887 libmicrohttpd = dependency('libmicrohttpd',
888 version : '>= 0.9.33',
889 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200890 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400891else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200892 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400893 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400894endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200895conf.set10('HAVE_MICROHTTPD', have)
896m4_defines += have ? ['-DHAVE_MICROHTTPD'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400897
898want_libcryptsetup = get_option('libcryptsetup')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400899if want_libcryptsetup != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400900 libcryptsetup = dependency('libcryptsetup',
901 version : '>= 1.6.0',
902 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200903 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400904else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200905 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400906 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400907endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200908conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400909
910want_libcurl = get_option('libcurl')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400911if want_libcurl != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400912 libcurl = dependency('libcurl',
913 version : '>= 7.32.0',
914 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200915 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400916else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200917 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400918 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400919endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200920conf.set10('HAVE_LIBCURL', have)
921m4_defines += have ? ['-DHAVE_LIBCURL'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400922
923want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400924want_libidn2 = get_option('libidn2')
925if want_libidn == 'true' and want_libidn2 == 'true'
926 error('libidn and libidn2 cannot be requested simultaneously')
927endif
928
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400929if want_libidn != 'false' and want_libidn2 != 'true'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400930 libidn = dependency('libidn',
931 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200932 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400933else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200934 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400935 libidn = []
936endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200937conf.set10('HAVE_LIBIDN', have)
938m4_defines += have ? ['-DHAVE_LIBIDN'] : []
939if not have and want_libidn2 != 'false'
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400940 # libidn is used for both libidn and libidn2 objects
941 libidn = dependency('libidn2',
942 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200943 have = libidn.found()
944else
945 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400946endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200947conf.set10('HAVE_LIBIDN2', have)
948m4_defines += have ? ['-DHAVE_LIBIDN2'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400949
950want_libiptc = get_option('libiptc')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400951if want_libiptc != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400952 libiptc = dependency('libiptc',
953 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200954 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400955else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200956 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400957 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400958endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200959conf.set10('HAVE_LIBIPTC', have)
960m4_defines += have ? ['-DHAVE_LIBIPTC'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400961
962want_qrencode = get_option('qrencode')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400963if want_qrencode != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400964 libqrencode = dependency('libqrencode',
965 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200966 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400967else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200968 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400969 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400970endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200971conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400972
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400973want_gcrypt = get_option('gcrypt')
974if want_gcrypt != 'false'
975 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
976 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200977 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400978else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200979 have = false
980endif
981if not have
982 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400983 libgcrypt = []
984 libgpg_error = []
985endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200986conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400987
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400988want_gnutls = get_option('gnutls')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400989if want_gnutls != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400990 libgnutls = dependency('gnutls',
991 version : '>= 3.1.4',
992 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200993 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400994else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200995 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400996 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400997endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200998conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400999
1000want_elfutils = get_option('elfutils')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001001if want_elfutils != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001002 libdw = dependency('libdw',
1003 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001004 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001005else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001006 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001007 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001008endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001009conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001010
1011want_zlib = get_option('zlib')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001012if want_zlib != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001013 libz = dependency('zlib',
1014 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001015 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001016else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001017 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001018 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001019endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001020conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001021
1022want_bzip2 = get_option('bzip2')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001023if want_bzip2 != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001024 libbzip2 = cc.find_library('bz2',
1025 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001026 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001027else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001028 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001029 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001030endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001031conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001032
1033want_xz = get_option('xz')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001034if want_xz != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001035 libxz = dependency('liblzma',
1036 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001037 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001038else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001039 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001040 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001041endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001042conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001043
1044want_lz4 = get_option('lz4')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001045if want_lz4 != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001046 liblz4 = dependency('liblz4',
1047 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001048 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001049else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001050 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001051 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001052endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001053conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001054
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001055want_xkbcommon = get_option('xkbcommon')
1056if want_xkbcommon != 'false'
1057 libxkbcommon = dependency('xkbcommon',
1058 version : '>= 0.3.0',
1059 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001060 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001061else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001062 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001063 libxkbcommon = []
1064endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001065conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001066
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001067want_glib = get_option('glib')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001068if want_glib != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001069 libglib = dependency('glib-2.0',
1070 version : '>= 2.22.0',
1071 required : want_glib == 'true')
1072 libgobject = dependency('gobject-2.0',
1073 version : '>= 2.22.0',
1074 required : want_glib == 'true')
1075 libgio = dependency('gio-2.0',
1076 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001077 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001078else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001079 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001080 libglib = []
1081 libgobject = []
1082 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001083endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001084conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001085
1086want_dbus = get_option('dbus')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001087if want_dbus != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001088 libdbus = dependency('dbus-1',
1089 version : '>= 1.3.2',
1090 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001091 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001092else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001093 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001094 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001095endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001096conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001097
Yu Watanabe42303dc2017-06-18 05:22:32 +09001098default_dnssec = get_option('default-dnssec')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001099if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001100 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1101 default_dnssec = 'no'
1102endif
1103conf.set('DEFAULT_DNSSEC_MODE',
1104 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1105substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1106
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001107want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001108if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001109 have = (conf.get('HAVE_LIBCURL') == 1 and
1110 conf.get('HAVE_ZLIB') == 1 and
1111 conf.get('HAVE_BZIP2') == 1 and
1112 conf.get('HAVE_XZ') == 1 and
1113 conf.get('HAVE_GCRYPT') == 1)
1114 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001115 error('importd support was requested, but dependencies are not available')
1116 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001117else
1118 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001119endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001120conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001121
1122want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001123if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001124 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1125 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001126 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1127 # it's possible to build one without the other. Complain only if
1128 # support was explictly requested. The auxiliary files like sysusers
1129 # config should be installed when any of the programs are built.
1130 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1131 error('remote support was requested, but dependencies are not available')
1132 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001133 have = have_deps[0] or have_deps[1]
1134else
1135 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001136endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001137conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001138
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001139foreach term : ['utmp',
1140 'hibernate',
1141 'environment-d',
1142 'binfmt',
1143 'coredump',
1144 'resolve',
1145 'logind',
1146 'hostnamed',
1147 'localed',
1148 'machined',
1149 'networkd',
1150 'timedated',
1151 'timesyncd',
1152 'myhostname',
1153 'firstboot',
1154 'randomseed',
1155 'backlight',
1156 'vconsole',
1157 'quotacheck',
1158 'sysusers',
1159 'tmpfiles',
1160 'hwdb',
1161 'rfkill',
1162 'ldconfig',
1163 'efi',
1164 'tpm',
1165 'ima',
1166 'smack',
1167 'gshadow',
1168 'idn',
1169 'nss-systemd']
1170 have = get_option(term)
1171 name = 'ENABLE_' + term.underscorify().to_upper()
1172 conf.set10(name, have)
1173 m4_defines += have ? ['-D' + name] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001174endforeach
1175
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001176want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001177install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001178tests = []
1179
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001180conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', get_option('slow-tests'))
1181
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001182#####################################################################
1183
1184if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001185 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001186
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001187 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001188 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001189 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001190 elif efi_arch == 'x86_64'
1191 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001192 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001193 elif efi_arch == 'arm'
1194 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001195 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001196 elif efi_arch == 'aarch64'
1197 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001198 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001199 else
1200 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001201 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001202 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001203
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001204 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001205 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001206
1207 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001208else
1209 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001210endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001211conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001212
1213#####################################################################
1214
1215config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001216 output : 'config.h',
1217 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001218
1219includes = include_directories('src/basic',
1220 'src/shared',
1221 'src/systemd',
1222 'src/journal',
1223 'src/resolve',
1224 'src/timesync',
1225 'src/login',
1226 'src/udev',
1227 'src/libudev',
1228 'src/core',
1229 'src/libsystemd/sd-bus',
1230 'src/libsystemd/sd-device',
1231 'src/libsystemd/sd-hwdb',
1232 'src/libsystemd/sd-id128',
1233 'src/libsystemd/sd-netlink',
1234 'src/libsystemd/sd-network',
1235 'src/libsystemd-network',
Davide Cavalca5e1771a2017-08-30 08:34:44 -07001236 '.',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001237 )
1238
1239add_project_arguments('-include', 'config.h', language : 'c')
1240
1241gcrypt_util_sources = files('src/shared/gcrypt-util.h',
1242 'src/shared/gcrypt-util.c')
1243
1244subdir('po')
1245subdir('catalog')
1246subdir('src/systemd')
1247subdir('src/basic')
1248subdir('src/libsystemd')
1249subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001250subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001251subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001252
1253libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001254 'journal-core',
1255 libjournal_core_sources,
1256 journald_gperf_c,
1257 include_directories : includes,
1258 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001259
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001260libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001261libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001262 'systemd',
1263 libsystemd_internal_sources,
1264 journal_internal_sources,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001265 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001266 include_directories : includes,
1267 link_args : ['-shared',
1268 '-Wl,--version-script=' + libsystemd_sym_path],
1269 link_with : [libbasic],
1270 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001271 libgcrypt,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001272 librt,
1273 libxz,
1274 liblz4],
1275 link_depends : libsystemd_sym,
1276 install : true,
1277 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001278
1279############################################################
1280
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001281# binaries that have --help and are intended for use by humans,
1282# usually, but not always, installed in /bin.
1283public_programs = []
1284
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001285subdir('src/libudev')
1286subdir('src/shared')
1287subdir('src/core')
1288subdir('src/udev')
1289subdir('src/network')
1290
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001291subdir('src/analyze')
1292subdir('src/journal-remote')
1293subdir('src/coredump')
1294subdir('src/hostname')
1295subdir('src/import')
1296subdir('src/kernel-install')
1297subdir('src/locale')
1298subdir('src/machine')
1299subdir('src/nspawn')
1300subdir('src/resolve')
1301subdir('src/timedate')
1302subdir('src/timesync')
1303subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001304subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001305
1306subdir('src/test')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001307subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001308subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001309
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001310############################################################
1311
1312# only static linking apart from libdl, to make sure that the
1313# module is linked to all libraries that it uses.
1314test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001315 'test-dlopen',
1316 test_dlopen_c,
1317 include_directories : includes,
1318 link_with : [libbasic],
1319 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001320
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001321foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001322 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001323 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001324 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001325
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001326 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001327 if condition
1328 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001329
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001330 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1331 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001332
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001333 nss = shared_library(
1334 'nss_' + module,
1335 'src/nss-@0@/nss-@0@.c'.format(module),
1336 version : '2',
1337 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001338 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1339 link_args : ['-Wl,-z,nodelete',
1340 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001341 '-Wl,--version-script=' + version_script_arg,
1342 '-Wl,--undefined'],
1343 link_with : [libsystemd_internal,
1344 libbasic],
1345 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001346 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001347 link_depends : sym,
1348 install : true,
1349 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001350
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001351 # We cannot use shared_module because it does not support version suffix.
1352 # Unfortunately shared_library insists on creating the symlink…
1353 meson.add_install_script('sh', '-c',
1354 'rm $DESTDIR@0@/libnss_@1@.so'
1355 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001356
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001357 test('dlopen-nss_' + module,
1358 test_dlopen,
1359 args : [nss.full_path()]) # path to dlopen must include a slash
1360 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001361endforeach
1362
1363############################################################
1364
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001365executable('systemd',
1366 systemd_sources,
1367 include_directories : includes,
1368 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001369 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001370 dependencies : [threads,
1371 librt,
1372 libseccomp,
1373 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001374 libmount,
1375 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001376 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001377 install : true,
1378 install_dir : rootlibexecdir)
1379
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001380exe = executable('systemd-analyze',
1381 systemd_analyze_sources,
1382 include_directories : includes,
1383 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001384 libshared],
1385 dependencies : [threads,
1386 librt,
1387 libseccomp,
1388 libselinux,
1389 libmount,
1390 libblkid],
1391 install_rpath : rootlibexecdir,
1392 install : true)
1393public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001394
1395executable('systemd-journald',
1396 systemd_journald_sources,
1397 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001398 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001399 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001400 dependencies : [threads,
1401 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001402 liblz4,
1403 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001404 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001405 install : true,
1406 install_dir : rootlibexecdir)
1407
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001408exe = executable('systemd-cat',
1409 systemd_cat_sources,
1410 include_directories : includes,
1411 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001412 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001413 dependencies : [threads],
1414 install_rpath : rootlibexecdir,
1415 install : true)
1416public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001417
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001418exe = executable('journalctl',
1419 journalctl_sources,
1420 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001421 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001422 dependencies : [threads,
1423 libqrencode,
1424 libxz,
1425 liblz4],
1426 install_rpath : rootlibexecdir,
1427 install : true,
1428 install_dir : rootbindir)
1429public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001430
1431executable('systemd-getty-generator',
1432 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001433 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001434 link_with : [libshared],
1435 install_rpath : rootlibexecdir,
1436 install : true,
1437 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001438
1439executable('systemd-debug-generator',
1440 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001441 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001442 link_with : [libshared],
1443 install_rpath : rootlibexecdir,
1444 install : true,
1445 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001446
1447executable('systemd-fstab-generator',
1448 'src/fstab-generator/fstab-generator.c',
1449 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001450 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001451 link_with : [libshared],
1452 install_rpath : rootlibexecdir,
1453 install : true,
1454 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001455
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001456if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001457 executable('30-systemd-environment-d-generator',
1458 'src/environment-d-generator/environment-d-generator.c',
1459 include_directories : includes,
1460 link_with : [libshared],
1461 install_rpath : rootlibexecdir,
1462 install : true,
1463 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001464
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001465 meson.add_install_script(meson_make_symlink,
1466 join_paths(sysconfdir, 'environment'),
1467 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001468endif
1469
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001470if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001471 executable('systemd-hibernate-resume-generator',
1472 'src/hibernate-resume/hibernate-resume-generator.c',
1473 include_directories : includes,
1474 link_with : [libshared],
1475 install_rpath : rootlibexecdir,
1476 install : true,
1477 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001478
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001479 executable('systemd-hibernate-resume',
1480 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001481 include_directories : includes,
1482 link_with : [libshared],
1483 install_rpath : rootlibexecdir,
1484 install : true,
1485 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001486endif
1487
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001488if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001489 executable('systemd-gpt-auto-generator',
1490 'src/gpt-auto-generator/gpt-auto-generator.c',
1491 'src/basic/blkid-util.h',
1492 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001493 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001494 dependencies : libblkid,
1495 install_rpath : rootlibexecdir,
1496 install : true,
1497 install_dir : systemgeneratordir)
1498
1499 exe = executable('systemd-dissect',
1500 'src/dissect/dissect.c',
1501 include_directories : includes,
1502 link_with : [libshared],
1503 install_rpath : rootlibexecdir,
1504 install : true,
1505 install_dir : rootlibexecdir)
1506 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001507endif
1508
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001509if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001510 executable('systemd-resolved',
1511 systemd_resolved_sources,
Michael Biebl76c87412017-04-21 23:45:54 +02001512 gcrypt_util_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001513 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001514 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001515 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001516 libgcrypt,
1517 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001518 libm,
1519 libidn],
1520 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001521 install : true,
1522 install_dir : rootlibexecdir)
1523
1524 exe = executable('systemd-resolve',
1525 systemd_resolve_sources,
Michael Biebl76c87412017-04-21 23:45:54 +02001526 gcrypt_util_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001527 include_directories : includes,
1528 link_with : [libshared],
1529 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001530 libgcrypt,
1531 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001532 libm,
1533 libidn],
1534 install_rpath : rootlibexecdir,
1535 install : true)
1536 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001537endif
1538
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001539if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001540 executable('systemd-logind',
1541 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001542 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001543 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001544 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001545 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001546 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001547 install_rpath : rootlibexecdir,
1548 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001549 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001550
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001551 exe = executable('loginctl',
1552 loginctl_sources,
1553 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001554 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001555 dependencies : [threads,
1556 liblz4,
1557 libxz],
1558 install_rpath : rootlibexecdir,
1559 install : true,
1560 install_dir : rootbindir)
1561 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001562
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001563 exe = executable('systemd-inhibit',
1564 'src/login/inhibit.c',
1565 include_directories : includes,
1566 link_with : [libshared],
1567 install_rpath : rootlibexecdir,
1568 install : true,
1569 install_dir : rootbindir)
1570 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001571
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001572 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001573 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1574 pam_systemd = shared_library(
1575 'pam_systemd',
1576 pam_systemd_c,
1577 name_prefix : '',
1578 include_directories : includes,
1579 link_args : ['-shared',
1580 '-Wl,--version-script=' + version_script_arg],
1581 link_with : [libsystemd_internal,
1582 libshared_static],
1583 dependencies : [threads,
1584 libpam,
1585 libpam_misc],
1586 link_depends : pam_systemd_sym,
1587 install : true,
1588 install_dir : pamlibdir)
1589
1590 test('dlopen-pam_systemd',
1591 test_dlopen,
1592 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1593 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001594endif
1595
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001596if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001597 executable('systemd-user-sessions',
1598 'src/user-sessions/user-sessions.c',
1599 include_directories : includes,
1600 link_with : [libshared],
1601 install_rpath : rootlibexecdir,
1602 install : true,
1603 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001604endif
1605
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001606if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001607 exe = executable('bootctl',
1608 'src/boot/bootctl.c',
1609 include_directories : includes,
1610 link_with : [libshared],
1611 dependencies : [libblkid],
1612 install_rpath : rootlibexecdir,
1613 install : true)
1614 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001615endif
1616
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001617exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1618 include_directories : includes,
1619 link_with : [libshared],
1620 dependencies : [threads],
1621 install_rpath : rootlibexecdir,
1622 install : true)
1623public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001624
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001625exe = executable('systemctl', 'src/systemctl/systemctl.c',
1626 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001627 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001628 dependencies : [threads,
1629 libcap,
1630 libselinux,
1631 libxz,
1632 liblz4],
1633 install_rpath : rootlibexecdir,
1634 install : true,
1635 install_dir : rootbindir)
1636public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001637
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001638if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001639 executable('systemd-backlight',
1640 'src/backlight/backlight.c',
1641 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001642 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001643 install_rpath : rootlibexecdir,
1644 install : true,
1645 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001646endif
1647
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001648if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001649 executable('systemd-rfkill',
1650 'src/rfkill/rfkill.c',
1651 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001652 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001653 install_rpath : rootlibexecdir,
1654 install : true,
1655 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001656endif
1657
1658executable('systemd-system-update-generator',
1659 'src/system-update-generator/system-update-generator.c',
1660 include_directories : includes,
1661 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001662 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001663 install : true,
1664 install_dir : systemgeneratordir)
1665
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001666if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001667 executable('systemd-cryptsetup',
1668 'src/cryptsetup/cryptsetup.c',
1669 include_directories : includes,
1670 link_with : [libshared],
1671 dependencies : [libcryptsetup],
1672 install_rpath : rootlibexecdir,
1673 install : true,
1674 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001675
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001676 executable('systemd-cryptsetup-generator',
1677 'src/cryptsetup/cryptsetup-generator.c',
1678 include_directories : includes,
1679 link_with : [libshared],
1680 dependencies : [libcryptsetup],
1681 install_rpath : rootlibexecdir,
1682 install : true,
1683 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001684
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001685 executable('systemd-veritysetup',
1686 'src/veritysetup/veritysetup.c',
1687 include_directories : includes,
1688 link_with : [libshared],
1689 dependencies : [libcryptsetup],
1690 install_rpath : rootlibexecdir,
1691 install : true,
1692 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001693
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001694 executable('systemd-veritysetup-generator',
1695 'src/veritysetup/veritysetup-generator.c',
1696 include_directories : includes,
1697 link_with : [libshared],
1698 dependencies : [libcryptsetup],
1699 install_rpath : rootlibexecdir,
1700 install : true,
1701 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001702endif
1703
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001704if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001705 executable('systemd-sysv-generator',
1706 'src/sysv-generator/sysv-generator.c',
1707 include_directories : includes,
1708 link_with : [libshared],
1709 install_rpath : rootlibexecdir,
1710 install : true,
1711 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001712
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001713 executable('systemd-rc-local-generator',
1714 'src/rc-local-generator/rc-local-generator.c',
1715 include_directories : includes,
1716 link_with : [libshared],
1717 install_rpath : rootlibexecdir,
1718 install : true,
1719 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001720endif
1721
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001722if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001723 executable('systemd-hostnamed',
1724 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001725 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001726 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001727 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001728 install : true,
1729 install_dir : rootlibexecdir)
1730
1731 exe = executable('hostnamectl',
1732 'src/hostname/hostnamectl.c',
1733 include_directories : includes,
1734 link_with : [libshared],
1735 install_rpath : rootlibexecdir,
1736 install : true)
1737 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001738endif
1739
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001740if conf.get('ENABLE_LOCALED') == 1
1741 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001742 # logind will load libxkbcommon.so dynamically on its own
1743 deps = [libdl]
1744 else
1745 deps = []
1746 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001747
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001748 executable('systemd-localed',
1749 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001750 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001751 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001752 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001753 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001754 install : true,
1755 install_dir : rootlibexecdir)
1756
1757 exe = executable('localectl',
1758 localectl_sources,
1759 include_directories : includes,
1760 link_with : [libshared],
1761 install_rpath : rootlibexecdir,
1762 install : true)
1763 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001764endif
1765
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001766if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001767 executable('systemd-timedated',
1768 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001769 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001770 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001771 install_rpath : rootlibexecdir,
1772 install : true,
1773 install_dir : rootlibexecdir)
1774
1775 exe = executable('timedatectl',
1776 'src/timedate/timedatectl.c',
1777 include_directories : includes,
1778 install_rpath : rootlibexecdir,
1779 link_with : [libshared],
1780 install : true)
1781 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001782endif
1783
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001784if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001785 executable('systemd-timesyncd',
1786 systemd_timesyncd_sources,
1787 include_directories : includes,
1788 link_with : [libshared],
1789 dependencies : [threads,
1790 libm],
1791 install_rpath : rootlibexecdir,
1792 install : true,
1793 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001794endif
1795
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001796if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001797 executable('systemd-machined',
1798 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001799 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001800 link_with : [libmachine_core,
1801 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001802 install_rpath : rootlibexecdir,
1803 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001804 install_dir : rootlibexecdir)
1805
1806 exe = executable('machinectl',
1807 'src/machine/machinectl.c',
1808 include_directories : includes,
1809 link_with : [libshared],
1810 dependencies : [threads,
1811 libxz,
1812 liblz4],
1813 install_rpath : rootlibexecdir,
1814 install : true,
1815 install_dir : rootbindir)
1816 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001817endif
1818
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001819if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001820 executable('systemd-importd',
1821 systemd_importd_sources,
1822 include_directories : includes,
1823 link_with : [libshared],
1824 dependencies : [threads],
1825 install_rpath : rootlibexecdir,
1826 install : true,
1827 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001828
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001829 systemd_pull = executable('systemd-pull',
1830 systemd_pull_sources,
1831 include_directories : includes,
1832 link_with : [libshared],
1833 dependencies : [libcurl,
1834 libz,
1835 libbzip2,
1836 libxz,
1837 libgcrypt],
1838 install_rpath : rootlibexecdir,
1839 install : true,
1840 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001841
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001842 systemd_import = executable('systemd-import',
1843 systemd_import_sources,
1844 include_directories : includes,
1845 link_with : [libshared],
1846 dependencies : [libcurl,
1847 libz,
1848 libbzip2,
1849 libxz],
1850 install_rpath : rootlibexecdir,
1851 install : true,
1852 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001853
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001854 systemd_export = executable('systemd-export',
1855 systemd_export_sources,
1856 include_directories : includes,
1857 link_with : [libshared],
1858 dependencies : [libcurl,
1859 libz,
1860 libbzip2,
1861 libxz],
1862 install_rpath : rootlibexecdir,
1863 install : true,
1864 install_dir : rootlibexecdir)
1865 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001866endif
1867
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001868if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001869 exe = executable('systemd-journal-upload',
1870 systemd_journal_upload_sources,
1871 include_directories : includes,
1872 link_with : [libshared],
1873 dependencies : [threads,
1874 libcurl,
1875 libgnutls,
1876 libxz,
1877 liblz4],
1878 install_rpath : rootlibexecdir,
1879 install : true,
1880 install_dir : rootlibexecdir)
1881 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001882endif
1883
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001884if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001885 s_j_remote = executable('systemd-journal-remote',
1886 systemd_journal_remote_sources,
1887 include_directories : includes,
1888 link_with : [libshared],
1889 dependencies : [threads,
1890 libmicrohttpd,
1891 libgnutls,
1892 libxz,
1893 liblz4],
1894 install_rpath : rootlibexecdir,
1895 install : true,
1896 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001897
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001898 s_j_gatewayd = executable('systemd-journal-gatewayd',
1899 systemd_journal_gatewayd_sources,
1900 include_directories : includes,
1901 link_with : [libshared],
1902 dependencies : [threads,
1903 libmicrohttpd,
1904 libgnutls,
1905 libxz,
1906 liblz4],
1907 install_rpath : rootlibexecdir,
1908 install : true,
1909 install_dir : rootlibexecdir)
1910 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001911endif
1912
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001913if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001914 executable('systemd-coredump',
1915 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001916 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001917 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001918 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001919 libacl,
1920 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001921 libxz,
1922 liblz4],
1923 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001924 install : true,
1925 install_dir : rootlibexecdir)
1926
1927 exe = executable('coredumpctl',
1928 coredumpctl_sources,
1929 include_directories : includes,
1930 link_with : [libshared],
1931 dependencies : [threads,
1932 libxz,
1933 liblz4],
1934 install_rpath : rootlibexecdir,
1935 install : true)
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_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001940 exe = executable('systemd-binfmt',
1941 'src/binfmt/binfmt.c',
1942 include_directories : includes,
1943 link_with : [libshared],
1944 install_rpath : rootlibexecdir,
1945 install : true,
1946 install_dir : rootlibexecdir)
1947 public_programs += [exe]
1948
1949 meson.add_install_script('sh', '-c',
1950 mkdir_p.format(binfmtdir))
1951 meson.add_install_script('sh', '-c',
1952 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
1953endif
1954
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001955if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001956 executable('systemd-vconsole-setup',
1957 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001958 include_directories : includes,
1959 link_with : [libshared],
1960 install_rpath : rootlibexecdir,
1961 install : true,
1962 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001963endif
1964
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001965if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001966 executable('systemd-random-seed',
1967 'src/random-seed/random-seed.c',
1968 include_directories : includes,
1969 link_with : [libshared],
1970 install_rpath : rootlibexecdir,
1971 install : true,
1972 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001973endif
1974
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001975if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001976 executable('systemd-firstboot',
1977 'src/firstboot/firstboot.c',
1978 include_directories : includes,
1979 link_with : [libshared],
1980 dependencies : [libcrypt],
1981 install_rpath : rootlibexecdir,
1982 install : true,
1983 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001984endif
1985
1986executable('systemd-remount-fs',
1987 'src/remount-fs/remount-fs.c',
1988 'src/core/mount-setup.c',
1989 'src/core/mount-setup.h',
1990 include_directories : includes,
1991 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001992 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001993 install : true,
1994 install_dir : rootlibexecdir)
1995
1996executable('systemd-machine-id-setup',
1997 'src/machine-id-setup/machine-id-setup-main.c',
1998 'src/core/machine-id-setup.c',
1999 'src/core/machine-id-setup.h',
2000 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002001 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002002 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002003 install : true,
2004 install_dir : rootbindir)
2005
2006executable('systemd-fsck',
2007 'src/fsck/fsck.c',
2008 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002009 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002010 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002011 install : true,
2012 install_dir : rootlibexecdir)
2013
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002014executable('systemd-growfs',
2015 'src/partition/growfs.c',
2016 include_directories : includes,
2017 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002018 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002019 install_rpath : rootlibexecdir,
2020 install : true,
2021 install_dir : rootlibexecdir)
2022
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002023executable('systemd-makefs',
2024 'src/partition/makefs.c',
2025 include_directories : includes,
2026 link_with : [libshared],
2027 install_rpath : rootlibexecdir,
2028 install : true,
2029 install_dir : rootlibexecdir)
2030
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002031executable('systemd-sleep',
2032 'src/sleep/sleep.c',
2033 include_directories : includes,
2034 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002035 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002036 install : true,
2037 install_dir : rootlibexecdir)
2038
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002039exe = executable('systemd-sysctl',
2040 'src/sysctl/sysctl.c',
2041 include_directories : includes,
2042 link_with : [libshared],
2043 install_rpath : rootlibexecdir,
2044 install : true,
2045 install_dir : rootlibexecdir)
2046public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002047
2048executable('systemd-ac-power',
2049 'src/ac-power/ac-power.c',
2050 include_directories : includes,
2051 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002052 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002053 install : true,
2054 install_dir : rootlibexecdir)
2055
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002056exe = executable('systemd-detect-virt',
2057 'src/detect-virt/detect-virt.c',
2058 include_directories : includes,
2059 link_with : [libshared],
2060 install_rpath : rootlibexecdir,
2061 install : true)
2062public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002063
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002064exe = executable('systemd-delta',
2065 'src/delta/delta.c',
2066 include_directories : includes,
2067 link_with : [libshared],
2068 install_rpath : rootlibexecdir,
2069 install : true)
2070public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002071
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002072exe = executable('systemd-escape',
2073 'src/escape/escape.c',
2074 include_directories : includes,
2075 link_with : [libshared],
2076 install_rpath : rootlibexecdir,
2077 install : true,
2078 install_dir : rootbindir)
2079public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002080
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002081exe = executable('systemd-notify',
2082 'src/notify/notify.c',
2083 include_directories : includes,
2084 link_with : [libshared],
2085 install_rpath : rootlibexecdir,
2086 install : true,
2087 install_dir : rootbindir)
2088public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002089
2090executable('systemd-volatile-root',
2091 'src/volatile-root/volatile-root.c',
2092 include_directories : includes,
2093 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002094 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002095 install : true,
2096 install_dir : rootlibexecdir)
2097
2098executable('systemd-cgroups-agent',
2099 'src/cgroups-agent/cgroups-agent.c',
2100 include_directories : includes,
2101 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002102 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002103 install : true,
2104 install_dir : rootlibexecdir)
2105
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002106exe = executable('systemd-path',
2107 'src/path/path.c',
2108 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002109 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002110 install_rpath : rootlibexecdir,
2111 install : true)
2112public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002113
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002114exe = executable('systemd-ask-password',
2115 'src/ask-password/ask-password.c',
2116 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002117 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002118 install_rpath : rootlibexecdir,
2119 install : true,
2120 install_dir : rootbindir)
2121public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002122
2123executable('systemd-reply-password',
2124 'src/reply-password/reply-password.c',
2125 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002126 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002127 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002128 install : true,
2129 install_dir : rootlibexecdir)
2130
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002131exe = executable('systemd-tty-ask-password-agent',
2132 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2133 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002134 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002135 install_rpath : rootlibexecdir,
2136 install : true,
2137 install_dir : rootbindir)
2138public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002139
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002140exe = executable('systemd-cgls',
2141 'src/cgls/cgls.c',
2142 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002143 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002144 install_rpath : rootlibexecdir,
2145 install : true)
2146public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002147
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002148exe = executable('systemd-cgtop',
2149 'src/cgtop/cgtop.c',
2150 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002151 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002152 install_rpath : rootlibexecdir,
2153 install : true)
2154public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002155
2156executable('systemd-initctl',
2157 'src/initctl/initctl.c',
2158 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002159 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002160 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002161 install : true,
2162 install_dir : rootlibexecdir)
2163
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002164exe = executable('systemd-mount',
2165 'src/mount/mount-tool.c',
2166 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002167 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002168 install_rpath : rootlibexecdir,
2169 install : true)
2170public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002171
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002172meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002173 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002174
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002175exe = executable('systemd-run',
2176 'src/run/run.c',
2177 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002178 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002179 install_rpath : rootlibexecdir,
2180 install : true)
2181public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002182
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002183exe = executable('systemd-stdio-bridge',
2184 'src/stdio-bridge/stdio-bridge.c',
2185 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002186 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002187 install_rpath : rootlibexecdir,
2188 install : true)
2189public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002190
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002191exe = executable('busctl',
2192 'src/busctl/busctl.c',
2193 'src/busctl/busctl-introspect.c',
2194 'src/busctl/busctl-introspect.h',
2195 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002196 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002197 install_rpath : rootlibexecdir,
2198 install : true)
2199public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002200
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002201if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002202 exe = executable('systemd-sysusers',
2203 'src/sysusers/sysusers.c',
2204 include_directories : includes,
2205 link_with : [libshared],
2206 install_rpath : rootlibexecdir,
2207 install : true,
2208 install_dir : rootbindir)
2209 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002210endif
2211
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002212if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002213 exe = executable('systemd-tmpfiles',
2214 'src/tmpfiles/tmpfiles.c',
2215 include_directories : includes,
2216 link_with : [libshared],
2217 dependencies : [libacl],
2218 install_rpath : rootlibexecdir,
2219 install : true,
2220 install_dir : rootbindir)
2221 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002222
2223 test('test-systemd-tmpfiles',
2224 test_systemd_tmpfiles_py,
2225 args : exe.full_path())
2226 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002227endif
2228
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002229if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002230 exe = executable('systemd-hwdb',
2231 'src/hwdb/hwdb.c',
2232 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2233 include_directories : includes,
Michael Biebl0da6f392017-04-21 18:32:14 +02002234 link_with : [libudev_internal],
2235 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002236 install : true,
2237 install_dir : rootbindir)
2238 public_programs += [exe]
2239endif
2240
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002241if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002242 executable('systemd-quotacheck',
2243 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002244 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002245 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002246 install_rpath : rootlibexecdir,
2247 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002248 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002249endif
2250
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002251exe = executable('systemd-socket-proxyd',
2252 'src/socket-proxy/socket-proxyd.c',
2253 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002254 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002255 dependencies : [threads],
2256 install_rpath : rootlibexecdir,
2257 install : true,
2258 install_dir : rootlibexecdir)
2259public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002260
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002261exe = executable('systemd-udevd',
2262 systemd_udevd_sources,
2263 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002264 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002265 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002266 libsystemd_network,
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002267 libudev_internal],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002268 dependencies : [threads,
2269 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002270 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002271 libacl,
2272 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002273 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002274 install : true,
2275 install_dir : rootlibexecdir)
2276public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002277
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002278exe = executable('udevadm',
2279 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002280 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002281 include_directories : includes,
2282 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002283 libsystemd_network,
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002284 libudev_internal],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002285 dependencies : [threads,
2286 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002287 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002288 libacl,
2289 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002290 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002291 install : true,
2292 install_dir : rootbindir)
2293public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002294
2295executable('systemd-shutdown',
2296 systemd_shutdown_sources,
2297 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002298 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002299 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002300 install : true,
2301 install_dir : rootlibexecdir)
2302
2303executable('systemd-update-done',
2304 'src/update-done/update-done.c',
2305 include_directories : includes,
2306 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002307 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002308 install : true,
2309 install_dir : rootlibexecdir)
2310
2311executable('systemd-update-utmp',
2312 'src/update-utmp/update-utmp.c',
2313 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002314 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002315 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002316 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002317 install : true,
2318 install_dir : rootlibexecdir)
2319
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002320if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002321 executable('systemd-modules-load',
2322 'src/modules-load/modules-load.c',
2323 include_directories : includes,
2324 link_with : [libshared],
2325 dependencies : [libkmod],
2326 install_rpath : rootlibexecdir,
2327 install : true,
2328 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002329
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002330 meson.add_install_script('sh', '-c',
2331 mkdir_p.format(modulesloaddir))
2332 meson.add_install_script('sh', '-c',
2333 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002334endif
2335
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002336exe = executable('systemd-nspawn',
2337 systemd_nspawn_sources,
2338 'src/core/mount-setup.c', # FIXME: use a variable?
2339 'src/core/mount-setup.h',
2340 'src/core/loopback-setup.c',
2341 'src/core/loopback-setup.h',
2342 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002343 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002344 dependencies : [libacl,
2345 libblkid,
2346 libseccomp,
2347 libselinux],
2348 install_rpath : rootlibexecdir,
2349 install : true)
2350public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002351
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002352if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002353 executable('systemd-networkd',
2354 systemd_networkd_sources,
2355 include_directories : includes,
2356 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002357 libsystemd_network,
2358 libudev_internal,
2359 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002360 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002361 install_rpath : rootlibexecdir,
2362 install : true,
2363 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002364
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002365 executable('systemd-networkd-wait-online',
2366 systemd_networkd_wait_online_sources,
2367 include_directories : includes,
2368 link_with : [libnetworkd_core,
2369 libshared],
2370 install_rpath : rootlibexecdir,
2371 install : true,
2372 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002373
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002374 exe = executable('networkctl',
2375 networkctl_sources,
2376 include_directories : includes,
2377 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002378 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002379 install_rpath : rootlibexecdir,
2380 install : true,
2381 install_dir : rootbindir)
2382 public_programs += [exe]
2383endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002384
2385executable('systemd-sulogin-shell',
2386 ['src/sulogin-shell/sulogin-shell.c'],
2387 include_directories : includes,
2388 link_with : [libshared],
2389 install_rpath : rootlibexecdir,
2390 install : true,
2391 install_dir : rootlibexecdir)
2392
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002393############################################################
2394
2395foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002396 sources = tuple[0]
2397 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2398 dependencies = tuple[2]
2399 condition = tuple.length() >= 4 ? tuple[3] : ''
2400 type = tuple.length() >= 5 ? tuple[4] : ''
2401 defs = tuple.length() >= 6 ? tuple[5] : []
2402 incs = tuple.length() >= 7 ? tuple[6] : includes
2403 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002404
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002405 name = sources[0].split('/')[-1].split('.')[0]
2406 if type.startswith('timeout=')
2407 timeout = type.split('=')[1].to_int()
2408 type = ''
2409 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002410
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002411 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002412 exe = executable(
2413 name,
2414 sources,
2415 include_directories : incs,
2416 link_with : link_with,
2417 dependencies : dependencies,
2418 c_args : defs,
2419 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002420 install : install_tests,
2421 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002422
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002423 if type == 'manual'
2424 message('@0@ is a manual test'.format(name))
2425 elif type == 'unsafe' and want_tests != 'unsafe'
2426 message('@0@ is an unsafe test'.format(name))
2427 else
2428 test(name, exe,
2429 env : test_env,
2430 timeout : timeout)
2431 endif
2432 else
2433 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2434 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002435endforeach
2436
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002437test_libsystemd_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002438 'test-libsystemd-sym',
2439 test_libsystemd_sym_c,
2440 include_directories : includes,
2441 link_with : [libsystemd],
2442 install : install_tests,
2443 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002444test('test-libsystemd-sym',
2445 test_libsystemd_sym)
2446
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002447test_libudev_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002448 'test-libudev-sym',
2449 test_libudev_sym_c,
2450 include_directories : includes,
2451 c_args : ['-Wno-deprecated-declarations'],
2452 link_with : [libudev],
2453 install : install_tests,
2454 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002455test('test-libudev-sym',
2456 test_libudev_sym)
2457
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002458############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002459
2460make_directive_index_py = find_program('tools/make-directive-index.py')
2461make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002462xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002463hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002464
2465subdir('units')
2466subdir('sysctl.d')
2467subdir('sysusers.d')
2468subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002469subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002470subdir('hwdb')
2471subdir('network')
2472subdir('man')
2473subdir('shell-completion/bash')
2474subdir('shell-completion/zsh')
2475subdir('docs/sysvinit')
2476subdir('docs/var-log')
2477
2478# FIXME: figure out if the warning is true:
2479# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2480install_subdir('factory/etc',
2481 install_dir : factorydir)
2482
2483
2484install_data('xorg/50-systemd-user.sh',
2485 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002486install_data('modprobe.d/systemd.conf',
2487 install_dir : modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002488install_data('README',
2489 'NEWS',
2490 'CODING_STYLE',
2491 'DISTRO_PORTING',
2492 'ENVIRONMENT.md',
2493 'LICENSE.GPL2',
2494 'LICENSE.LGPL2.1',
Felipe Satelerf9f54412017-12-18 10:58:13 -03002495 'TRANSIENT-SETTINGS.md',
2496 'UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002497 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2498 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002499
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002500meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2501meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2502
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002503############################################################
2504
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002505meson_check_help = find_program('tools/meson-check-help.sh')
2506
2507foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002508 name = exec.full_path().split('/')[-1]
2509 test('check-help-' + name,
2510 meson_check_help,
2511 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002512endforeach
2513
2514############################################################
2515
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002516if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002517 all_files = run_command(
2518 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002519 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002520 'ls-files',
2521 ':/*.[ch]'])
2522 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002523
userwithuide85a6902017-08-09 13:41:44 +00002524 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002525 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002526 output : 'tags',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002527 command : ['env', 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002528 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002529 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002530 output : 'ctags',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002531 command : ['env', 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002532endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002533
2534if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002535 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002536 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002537 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002538 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002539endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002540
2541if git.found()
2542 git_head = run_command(
2543 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002544 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002545 'rev-parse', 'HEAD']).stdout().strip()
2546 git_head_short = run_command(
2547 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002548 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002549 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2550
2551 run_target(
2552 'git-snapshot',
2553 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002554 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002555 git_head_short),
2556 '--prefix', 'systemd-@0@/'.format(git_head),
2557 'HEAD'])
2558endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002559
2560############################################################
2561
2562status = [
2563 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2564
Yu Watanabe359b4962017-11-25 20:35:24 +09002565 'prefix directory: @0@'.format(prefixdir),
2566 'rootprefix directory: @0@'.format(rootprefixdir),
2567 'sysconf directory: @0@'.format(sysconfdir),
2568 'include directory: @0@'.format(includedir),
2569 'lib directory: @0@'.format(libdir),
2570 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002571 'SysV init scripts: @0@'.format(sysvinit_path),
2572 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002573 'PAM modules directory: @0@'.format(pamlibdir),
2574 'PAM configuration directory: @0@'.format(pamconfdir),
2575 'RPM macros directory: @0@'.format(rpmmacrosdir),
2576 'modprobe.d directory: @0@'.format(modprobedir),
2577 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2578 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2579 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2580 'bash completions directory: @0@'.format(bashcompletiondir),
2581 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002582 'extra start script: @0@'.format(get_option('rc-local')),
2583 'extra stop script: @0@'.format(get_option('halt-local')),
2584 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2585 get_option('debug-tty')),
2586 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002587 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002588 'maximum system UID: @0@'.format(system_uid_max),
2589 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002590 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2591 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2592 'minimum container UID base: @0@'.format(container_uid_base_min),
2593 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002594 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002595 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002596 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002597 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002598 'nobody user name: @0@'.format(nobody_user),
2599 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002600 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002601 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002602
2603 'default DNSSEC mode: @0@'.format(default_dnssec),
2604 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2605 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2606
2607alt_dns_servers = '\n '.join(dns_servers.split(' '))
2608alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2609status += [
2610 'default DNS servers: @0@'.format(alt_dns_servers),
2611 'default NTP servers: @0@'.format(alt_ntp_servers)]
2612
2613alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2614 '@@0@'.format(time_epoch)).stdout().strip()
2615status += [
2616 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2617
2618# TODO:
2619# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2620# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2621# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2622
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002623if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002624 status += [
2625 'efi arch: @0@'.format(efi_arch)]
2626
2627 if have_gnu_efi
2628 status += [
2629 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2630 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002631 'EFI lib directory: @0@'.format(efi_libdir),
2632 'EFI lds directory: @0@'.format(efi_ldsdir),
2633 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002634 endif
2635endif
2636
2637found = []
2638missing = []
2639
2640foreach tuple : [
2641 ['libcryptsetup'],
2642 ['PAM'],
2643 ['AUDIT'],
2644 ['IMA'],
2645 ['AppArmor'],
2646 ['SELinux'],
2647 ['SECCOMP'],
2648 ['SMACK'],
2649 ['zlib'],
2650 ['xz'],
2651 ['lz4'],
2652 ['bzip2'],
2653 ['ACL'],
2654 ['gcrypt'],
2655 ['qrencode'],
2656 ['microhttpd'],
2657 ['gnutls'],
2658 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002659 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002660 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002661 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002662 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002663 ['libiptc'],
2664 ['elfutils'],
2665 ['binfmt'],
2666 ['vconsole'],
2667 ['quotacheck'],
2668 ['tmpfiles'],
2669 ['environment.d'],
2670 ['sysusers'],
2671 ['firstboot'],
2672 ['randomseed'],
2673 ['backlight'],
2674 ['rfkill'],
2675 ['logind'],
2676 ['machined'],
2677 ['importd'],
2678 ['hostnamed'],
2679 ['timedated'],
2680 ['timesyncd'],
2681 ['localed'],
2682 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002683 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002684 ['coredump'],
2685 ['polkit'],
2686 ['legacy pkla', install_polkit_pkla],
2687 ['efi'],
2688 ['gnu-efi', have_gnu_efi],
2689 ['kmod'],
2690 ['xkbcommon'],
2691 ['blkid'],
2692 ['dbus'],
2693 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002694 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002695 ['hwdb'],
2696 ['tpm'],
2697 ['man pages', want_man],
2698 ['html pages', want_html],
2699 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002700 ['split /usr', conf.get('HAVE_SPLIT_USR') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002701 ['SysV compat'],
2702 ['utmp'],
2703 ['ldconfig'],
2704 ['hibernate'],
2705 ['adm group', get_option('adm-group')],
2706 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002707 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002708 ['debug hashmap'],
2709 ['debug mmap cache'],
2710]
2711
2712 cond = tuple.get(1, '')
2713 if cond == ''
2714 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2715 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002716 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002717 endif
2718 if cond
2719 found += [tuple[0]]
2720 else
2721 missing += [tuple[0]]
2722 endif
2723endforeach
2724
2725status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002726 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002727 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002728 '',
2729 'disabled features: @0@'.format(', '.join(missing)),
2730 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002731message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002732
2733if rootprefixdir != rootprefix_default
2734 message('WARNING:\n' +
2735 ' Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2736 ' systemd used fixed names for unit file directories and other paths, so anything\n' +
2737 ' except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
2738endif