blob: 8ea3c03788649ae952fc580faba4b0e4c458c1b4 [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'],
425 ['IFLA_IPVLAN_MODE', 'linux/if_link.h'],
426 ['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'],
440 ['NDA_IFINDEX', 'linux/neighbour.h'],
441 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000442 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400443 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530444 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400445 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400446 prefix = decl.length() > 2 ? decl[2] : ''
447 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200448 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400449endforeach
450
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400451foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200452 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400453endforeach
454
455foreach ident : [
Yu Watanabee4816452017-11-26 02:17:06 +0900456 ['memfd_create', '''#define _GNU_SOURCE
457 #include <sys/mman.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400458 ['gettid', '''#include <sys/types.h>'''],
459 ['pivot_root', '''#include <stdlib.h>'''], # no known header declares pivot_root
460 ['name_to_handle_at', '''#define _GNU_SOURCE
461 #include <sys/types.h>
462 #include <sys/stat.h>
463 #include <fcntl.h>'''],
464 ['setns', '''#define _GNU_SOURCE
465 #include <sched.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400466 ['renameat2', '''#include <stdio.h>'''],
467 ['kcmp', '''#include <linux/kcmp.h>'''],
468 ['keyctl', '''#include <sys/types.h>
469 #include <keyutils.h>'''],
470 ['copy_file_range', '''#include <sys/syscall.h>
471 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200472 ['bpf', '''#include <sys/syscall.h>
473 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmek38f1ae02017-04-19 16:14:16 -0400474 ['explicit_bzero' , '''#include <string.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400475]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400476
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400477 have = cc.has_function(ident[0], prefix : ident[1])
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200478 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400479endforeach
480
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400481if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200482 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200483 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400484else
485 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200486 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200487 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400488endif
489
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400490#####################################################################
491
492sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400493awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400494m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400495stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400496git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400497
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400498meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400499mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400500test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
501splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400502
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400503# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
504# /usr/sbin, /sbin, and fall back to the default from middle column.
505progs = [['telinit', '/lib/sysvinit/telinit'],
506 ['quotaon', '/usr/sbin/quotaon' ],
507 ['quotacheck', '/usr/sbin/quotacheck' ],
508 ['kill', '/usr/bin/kill' ],
509 ['kmod', '/usr/bin/kmod' ],
510 ['kexec', '/usr/sbin/kexec' ],
511 ['sulogin', '/usr/sbin/sulogin' ],
512 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
513 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
514 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
515 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
516 ]
517foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400518 path = get_option(prog[0] + '-path')
519 if path != ''
520 message('Using @1@ for @0@'.format(prog[0], path))
521 else
522 exe = find_program(prog[0],
523 '/usr/sbin/' + prog[0],
524 '/sbin/' + prog[0],
525 required: false)
526 path = exe.found() ? exe.path() : prog[1]
527 endif
528 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
529 conf.set_quoted(name, path)
530 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400531endforeach
532
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400533if run_command('ln', '--relative', '--help').returncode() != 0
534 error('ln does not support --relative')
535endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400536
537############################################################
538
539gperf = find_program('gperf')
540
541gperf_test_format = '''
542#include <string.h>
543const char * in_word_set(const char *, @0@);
544@1@
545'''
546gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
547gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
548gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
549if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400550 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400551else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400552 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
553 if cc.compiles(gperf_test)
554 gperf_len_type = 'unsigned'
555 else
556 error('unable to determine gperf len type')
557 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400558endif
559message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400560conf.set('GPERF_LEN_TYPE', gperf_len_type,
561 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400562
563############################################################
564
565if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400566 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400567endif
568foreach header : ['linux/btrfs.h',
569 'linux/memfd.h',
570 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200571 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400572 'valgrind/memcheck.h',
573 'valgrind/valgrind.h',
574 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400575
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200576 conf.set10('HAVE_' + header.underscorify().to_upper(),
577 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400578endforeach
579
580############################################################
581
582conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400583conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
584gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400585
586default_hierarchy = get_option('default-hierarchy')
587conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
588 description : 'default cgroup hierarchy as string')
589if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400590 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400591elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400592 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400593else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400594 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400595endif
596
597time_epoch = get_option('time-epoch')
598if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400599 NEWS = files('NEWS')
600 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400601endif
602time_epoch = time_epoch.to_int()
603conf.set('TIME_EPOCH', time_epoch)
604
605system_uid_max = get_option('system-uid-max')
606if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400607 system_uid_max = run_command(
608 awk,
609 'BEGIN { uid=999 } /^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
610 '/etc/login.defs').stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400611endif
612system_uid_max = system_uid_max.to_int()
613conf.set('SYSTEM_UID_MAX', system_uid_max)
614substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400615message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400616
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400617system_gid_max = get_option('system-gid-max')
618if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400619 system_gid_max = run_command(
620 awk,
621 'BEGIN { gid=999 } /^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
622 '/etc/login.defs').stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400623endif
624system_gid_max = system_gid_max.to_int()
625conf.set('SYSTEM_GID_MAX', system_gid_max)
626substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400627message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400628
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100629dynamic_uid_min = get_option('dynamic-uid-min').to_int()
630dynamic_uid_max = get_option('dynamic-uid-max').to_int()
631conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
632conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
633substs.set('dynamicuidmin', dynamic_uid_min)
634substs.set('dynamicuidmax', dynamic_uid_max)
635
636container_uid_base_min = get_option('container-uid-base-min').to_int()
637container_uid_base_max = get_option('container-uid-base-max').to_int()
638conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
639conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
640substs.set('containeruidbasemin', container_uid_base_min)
641substs.set('containeruidbasemax', container_uid_base_max)
642
Lennart Poetteringafde4572017-12-05 11:00:24 +0100643nobody_user = get_option('nobody-user')
644nobody_group = get_option('nobody-group')
645
646getent_result = run_command('getent', 'passwd', '65534')
647if getent_result.returncode() == 0
648 name = getent_result.stdout().split(':')[0]
649 if name != nobody_user
650 message('WARNING:\n' +
651 ' 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) +
652 ' Your build will result in an user table setup that is incompatible with the local system.')
653 endif
654endif
655id_result = run_command('id', '-u', nobody_user)
656if id_result.returncode() == 0
657 id = id_result.stdout().to_int()
658 if id != 65534
659 message('WARNING:\n' +
660 ' 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) +
661 ' Your build will result in an user table setup that is incompatible with the local system.')
662 endif
663endif
664
665getent_result = run_command('getent', 'group', '65534')
666if getent_result.returncode() == 0
667 name = getent_result.stdout().split(':')[0]
668 if name != nobody_group
669 message('WARNING:\n' +
670 ' 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) +
671 ' Your build will result in an group table setup that is incompatible with the local system.')
672 endif
673endif
674id_result = run_command('id', '-g', nobody_group)
675if id_result.returncode() == 0
676 id = id_result.stdout().to_int()
677 if id != 65534
678 message('WARNING:\n' +
679 ' 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) +
680 ' Your build will result in an group table setup that is incompatible with the local system.')
681 endif
682endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900683if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
684 message('WARNING:\n' +
685 ' The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
686 ' Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
687endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100688
689conf.set_quoted('NOBODY_USER_NAME', nobody_user)
690conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900691substs.set('NOBODY_USER_NAME', nobody_user)
692substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100693
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400694tty_gid = get_option('tty-gid')
695conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400696substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400697
Ikey Doherty84786b82017-12-03 12:28:23 +0000698# Ensure provided GID argument is numeric, otherwise fallback to default assignment
699if get_option('users-gid') != ''
Yu Watanabed6806872017-12-05 14:01:39 +0900700 users_gid = get_option('users-gid').to_int()
Ikey Doherty84786b82017-12-03 12:28:23 +0000701else
Yu Watanabed6806872017-12-05 14:01:39 +0900702 users_gid = '-'
Ikey Doherty84786b82017-12-03 12:28:23 +0000703endif
704substs.set('USERS_GID', users_gid)
705
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400706if get_option('adm-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400707 m4_defines += ['-DENABLE_ADM_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400708endif
709
710if get_option('wheel-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400711 m4_defines += ['-DENABLE_WHEEL_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400712endif
713
714substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700715substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400716
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400717kill_user_processes = get_option('default-kill-user-processes')
718conf.set10('KILL_USER_PROCESSES', kill_user_processes)
719substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400720
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400721dns_servers = get_option('dns-servers')
722conf.set_quoted('DNS_SERVERS', dns_servers)
723substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400724
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400725ntp_servers = get_option('ntp-servers')
726conf.set_quoted('NTP_SERVERS', ntp_servers)
727substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400728
729conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
730
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400731substs.set('SUSHELL', get_option('debug-shell'))
732substs.set('DEBUGTTY', get_option('debug-tty'))
733
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400734debug = get_option('debug')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200735enable_debug_hashmap = false
736enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400737if debug != ''
738 foreach name : debug.split(',')
739 if name == 'hashmap'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200740 enable_debug_hashmap = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400741 elif name == 'mmap-cache'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200742 enable_debug_mmap_cache = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400743 else
744 message('unknown debug option "@0@", ignoring'.format(name))
745 endif
746 endforeach
747endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200748conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
749conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400750
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400751#####################################################################
752
753threads = dependency('threads')
754librt = cc.find_library('rt')
755libm = cc.find_library('m')
756libdl = cc.find_library('dl')
757libcrypt = cc.find_library('crypt')
758
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400759libcap = dependency('libcap', required : false)
760if not libcap.found()
761 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
762 libcap = cc.find_library('cap')
763endif
764
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400765libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekd6e80962017-09-15 14:47:57 +0200766 version : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400767
768want_seccomp = get_option('seccomp')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400769if want_seccomp != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400770 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400771 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400772 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200773 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400774else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200775 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400776 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400777endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200778conf.set10('HAVE_SECCOMP', have)
779m4_defines += have ? ['-DHAVE_SECCOMP'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400780
781want_selinux = get_option('selinux')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400782if want_selinux != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400783 libselinux = dependency('libselinux',
784 version : '>= 2.1.9',
785 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200786 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400787else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200788 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400789 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400790endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200791conf.set10('HAVE_SELINUX', have)
792m4_defines += have ? ['-DHAVE_SELINUX'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400793
794want_apparmor = get_option('apparmor')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400795if want_apparmor != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400796 libapparmor = dependency('libapparmor',
797 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200798 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400799else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200800 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400801 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400802endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200803conf.set10('HAVE_APPARMOR', have)
804m4_defines += have ? ['-DHAVE_APPARMOR'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400805
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400806smack_run_label = get_option('smack-run-label')
807if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400808 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
809 m4_defines += ['-DHAVE_SMACK_RUN_LABEL']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400810endif
811
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400812want_polkit = get_option('polkit')
813install_polkit = false
814install_polkit_pkla = false
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400815if want_polkit != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400816 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400817
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400818 libpolkit = dependency('polkit-gobject-1',
819 required : false)
820 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
821 message('Old polkit detected, will install pkla files')
822 install_polkit_pkla = true
823 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400824endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200825conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400826
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400827want_acl = get_option('acl')
828if want_acl != 'false'
829 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200830 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400831else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200832 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400833 libacl = []
834endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200835conf.set10('HAVE_ACL', have)
836m4_defines += have ? ['-DHAVE_ACL'] : []
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400837
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400838want_audit = get_option('audit')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400839if want_audit != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400840 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200841 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400842else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200843 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400844 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400845endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200846conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400847
848want_blkid = get_option('blkid')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400849if want_blkid != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400850 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200851 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400852else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200853 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400854 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400855endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200856conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400857
858want_kmod = get_option('kmod')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400859if want_kmod != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400860 libkmod = dependency('libkmod',
861 version : '>= 15',
862 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200863 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400864else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200865 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400866 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400867endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200868conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400869
870want_pam = get_option('pam')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400871if want_pam != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400872 libpam = cc.find_library('pam', required : want_pam == 'true')
873 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200874 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400875else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200876 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400877 libpam = []
878 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400879endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200880conf.set10('HAVE_PAM', have)
881m4_defines += have ? ['-DHAVE_PAM'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400882
883want_microhttpd = get_option('microhttpd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400884if want_microhttpd != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400885 libmicrohttpd = dependency('libmicrohttpd',
886 version : '>= 0.9.33',
887 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200888 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400889else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200890 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400891 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400892endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200893conf.set10('HAVE_MICROHTTPD', have)
894m4_defines += have ? ['-DHAVE_MICROHTTPD'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400895
896want_libcryptsetup = get_option('libcryptsetup')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400897if want_libcryptsetup != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400898 libcryptsetup = dependency('libcryptsetup',
899 version : '>= 1.6.0',
900 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200901 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400902else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200903 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400904 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400905endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200906conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400907
908want_libcurl = get_option('libcurl')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400909if want_libcurl != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400910 libcurl = dependency('libcurl',
911 version : '>= 7.32.0',
912 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200913 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400914else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200915 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400916 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400917endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200918conf.set10('HAVE_LIBCURL', have)
919m4_defines += have ? ['-DHAVE_LIBCURL'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400920
921want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400922want_libidn2 = get_option('libidn2')
923if want_libidn == 'true' and want_libidn2 == 'true'
924 error('libidn and libidn2 cannot be requested simultaneously')
925endif
926
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400927if want_libidn != 'false' and want_libidn2 != 'true'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400928 libidn = dependency('libidn',
929 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200930 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400931else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200932 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400933 libidn = []
934endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200935conf.set10('HAVE_LIBIDN', have)
936m4_defines += have ? ['-DHAVE_LIBIDN'] : []
937if not have and want_libidn2 != 'false'
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400938 # libidn is used for both libidn and libidn2 objects
939 libidn = dependency('libidn2',
940 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200941 have = libidn.found()
942else
943 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400944endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200945conf.set10('HAVE_LIBIDN2', have)
946m4_defines += have ? ['-DHAVE_LIBIDN2'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400947
948want_libiptc = get_option('libiptc')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400949if want_libiptc != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400950 libiptc = dependency('libiptc',
951 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200952 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400953else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200954 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400955 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400956endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200957conf.set10('HAVE_LIBIPTC', have)
958m4_defines += have ? ['-DHAVE_LIBIPTC'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400959
960want_qrencode = get_option('qrencode')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400961if want_qrencode != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400962 libqrencode = dependency('libqrencode',
963 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200964 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400965else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200966 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400967 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400968endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200969conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400970
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400971want_gcrypt = get_option('gcrypt')
972if want_gcrypt != 'false'
973 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
974 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200975 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400976else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200977 have = false
978endif
979if not have
980 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400981 libgcrypt = []
982 libgpg_error = []
983endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200984conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400985
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400986want_gnutls = get_option('gnutls')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400987if want_gnutls != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400988 libgnutls = dependency('gnutls',
989 version : '>= 3.1.4',
990 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200991 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400992else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200993 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400994 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400995endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200996conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400997
998want_elfutils = get_option('elfutils')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400999if want_elfutils != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001000 libdw = dependency('libdw',
1001 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001002 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001003else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001004 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001005 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001006endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001007conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001008
1009want_zlib = get_option('zlib')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001010if want_zlib != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001011 libz = dependency('zlib',
1012 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001013 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001014else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001015 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001016 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001017endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001018conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001019
1020want_bzip2 = get_option('bzip2')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001021if want_bzip2 != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001022 libbzip2 = cc.find_library('bz2',
1023 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001024 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001025else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001026 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001027 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001028endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001029conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001030
1031want_xz = get_option('xz')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001032if want_xz != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001033 libxz = dependency('liblzma',
1034 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001035 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001036else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001037 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001038 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001039endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001040conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001041
1042want_lz4 = get_option('lz4')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001043if want_lz4 != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001044 liblz4 = dependency('liblz4',
1045 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001046 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001047else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001048 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001049 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001050endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001051conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001052
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001053want_xkbcommon = get_option('xkbcommon')
1054if want_xkbcommon != 'false'
1055 libxkbcommon = dependency('xkbcommon',
1056 version : '>= 0.3.0',
1057 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001058 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001059else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001060 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001061 libxkbcommon = []
1062endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001063conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001064
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001065want_glib = get_option('glib')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001066if want_glib != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001067 libglib = dependency('glib-2.0',
1068 version : '>= 2.22.0',
1069 required : want_glib == 'true')
1070 libgobject = dependency('gobject-2.0',
1071 version : '>= 2.22.0',
1072 required : want_glib == 'true')
1073 libgio = dependency('gio-2.0',
1074 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001075 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001076else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001077 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001078 libglib = []
1079 libgobject = []
1080 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001081endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001082conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001083
1084want_dbus = get_option('dbus')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001085if want_dbus != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001086 libdbus = dependency('dbus-1',
1087 version : '>= 1.3.2',
1088 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001089 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001090else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001091 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001092 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001093endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001094conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001095
Yu Watanabe42303dc2017-06-18 05:22:32 +09001096default_dnssec = get_option('default-dnssec')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001097if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001098 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1099 default_dnssec = 'no'
1100endif
1101conf.set('DEFAULT_DNSSEC_MODE',
1102 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1103substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1104
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001105want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001106if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001107 have = (conf.get('HAVE_LIBCURL') == 1 and
1108 conf.get('HAVE_ZLIB') == 1 and
1109 conf.get('HAVE_BZIP2') == 1 and
1110 conf.get('HAVE_XZ') == 1 and
1111 conf.get('HAVE_GCRYPT') == 1)
1112 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001113 error('importd support was requested, but dependencies are not available')
1114 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001115else
1116 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001117endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001118conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001119
1120want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001121if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001122 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1123 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001124 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1125 # it's possible to build one without the other. Complain only if
1126 # support was explictly requested. The auxiliary files like sysusers
1127 # config should be installed when any of the programs are built.
1128 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1129 error('remote support was requested, but dependencies are not available')
1130 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001131 have = have_deps[0] or have_deps[1]
1132else
1133 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001134endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001135conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001136
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001137foreach term : ['utmp',
1138 'hibernate',
1139 'environment-d',
1140 'binfmt',
1141 'coredump',
1142 'resolve',
1143 'logind',
1144 'hostnamed',
1145 'localed',
1146 'machined',
1147 'networkd',
1148 'timedated',
1149 'timesyncd',
1150 'myhostname',
1151 'firstboot',
1152 'randomseed',
1153 'backlight',
1154 'vconsole',
1155 'quotacheck',
1156 'sysusers',
1157 'tmpfiles',
1158 'hwdb',
1159 'rfkill',
1160 'ldconfig',
1161 'efi',
1162 'tpm',
1163 'ima',
1164 'smack',
1165 'gshadow',
1166 'idn',
1167 'nss-systemd']
1168 have = get_option(term)
1169 name = 'ENABLE_' + term.underscorify().to_upper()
1170 conf.set10(name, have)
1171 m4_defines += have ? ['-D' + name] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001172endforeach
1173
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001174want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001175install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001176tests = []
1177
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001178conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', get_option('slow-tests'))
1179
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001180#####################################################################
1181
1182if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001183 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001184
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001185 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001186 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001187 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001188 elif efi_arch == 'x86_64'
1189 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001190 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001191 elif efi_arch == 'arm'
1192 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001193 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001194 elif efi_arch == 'aarch64'
1195 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001196 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001197 else
1198 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001199 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001200 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001201
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001202 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001203 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001204
1205 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001206else
1207 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001208endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001209conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001210
1211#####################################################################
1212
1213config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001214 output : 'config.h',
1215 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001216
1217includes = include_directories('src/basic',
1218 'src/shared',
1219 'src/systemd',
1220 'src/journal',
1221 'src/resolve',
1222 'src/timesync',
1223 'src/login',
1224 'src/udev',
1225 'src/libudev',
1226 'src/core',
1227 'src/libsystemd/sd-bus',
1228 'src/libsystemd/sd-device',
1229 'src/libsystemd/sd-hwdb',
1230 'src/libsystemd/sd-id128',
1231 'src/libsystemd/sd-netlink',
1232 'src/libsystemd/sd-network',
1233 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001234 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001235
1236add_project_arguments('-include', 'config.h', language : 'c')
1237
1238gcrypt_util_sources = files('src/shared/gcrypt-util.h',
1239 'src/shared/gcrypt-util.c')
1240
1241subdir('po')
1242subdir('catalog')
1243subdir('src/systemd')
1244subdir('src/basic')
1245subdir('src/libsystemd')
1246subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001247subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001248subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001249
1250libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001251 'journal-core',
1252 libjournal_core_sources,
1253 journald_gperf_c,
1254 include_directories : includes,
1255 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001256
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001257libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001258libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001259 'systemd',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001260 journal_internal_sources,
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001261 gcrypt_util_sources,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001262 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001263 include_directories : includes,
1264 link_args : ['-shared',
1265 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek4f561ec2017-12-19 11:53:53 +01001266 link_with : libbasic,
1267 link_whole : libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001268 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001269 libgcrypt,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001270 librt,
1271 libxz,
1272 liblz4],
1273 link_depends : libsystemd_sym,
1274 install : true,
1275 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001276
1277############################################################
1278
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001279# binaries that have --help and are intended for use by humans,
1280# usually, but not always, installed in /bin.
1281public_programs = []
1282
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001283subdir('src/libudev')
1284subdir('src/shared')
1285subdir('src/core')
1286subdir('src/udev')
1287subdir('src/network')
1288
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001289subdir('src/analyze')
1290subdir('src/journal-remote')
1291subdir('src/coredump')
1292subdir('src/hostname')
1293subdir('src/import')
1294subdir('src/kernel-install')
1295subdir('src/locale')
1296subdir('src/machine')
1297subdir('src/nspawn')
1298subdir('src/resolve')
1299subdir('src/timedate')
1300subdir('src/timesync')
1301subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001302subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001303
1304subdir('src/test')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001305subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001306subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001307
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001308############################################################
1309
1310# only static linking apart from libdl, to make sure that the
1311# module is linked to all libraries that it uses.
1312test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001313 'test-dlopen',
1314 test_dlopen_c,
1315 include_directories : includes,
1316 link_with : [libbasic],
1317 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001318
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001319foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001320 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001321 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001322 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001323
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001324 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001325 if condition
1326 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001327
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001328 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1329 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001330
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001331 nss = shared_library(
1332 'nss_' + module,
1333 'src/nss-@0@/nss-@0@.c'.format(module),
1334 version : '2',
1335 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001336 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1337 link_args : ['-Wl,-z,nodelete',
1338 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001339 '-Wl,--version-script=' + version_script_arg,
1340 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001341 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001342 libbasic],
1343 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001344 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001345 link_depends : sym,
1346 install : true,
1347 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001348
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001349 # We cannot use shared_module because it does not support version suffix.
1350 # Unfortunately shared_library insists on creating the symlink…
1351 meson.add_install_script('sh', '-c',
1352 'rm $DESTDIR@0@/libnss_@1@.so'
1353 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001354
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001355 test('dlopen-nss_' + module,
1356 test_dlopen,
1357 args : [nss.full_path()]) # path to dlopen must include a slash
1358 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001359endforeach
1360
1361############################################################
1362
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001363executable('systemd',
1364 systemd_sources,
1365 include_directories : includes,
1366 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001367 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001368 dependencies : [threads,
1369 librt,
1370 libseccomp,
1371 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001372 libmount,
1373 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001374 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001375 install : true,
1376 install_dir : rootlibexecdir)
1377
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001378exe = executable('systemd-analyze',
1379 systemd_analyze_sources,
1380 include_directories : includes,
1381 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001382 libshared],
1383 dependencies : [threads,
1384 librt,
1385 libseccomp,
1386 libselinux,
1387 libmount,
1388 libblkid],
1389 install_rpath : rootlibexecdir,
1390 install : true)
1391public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001392
1393executable('systemd-journald',
1394 systemd_journald_sources,
1395 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001396 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001397 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001398 dependencies : [threads,
1399 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001400 liblz4,
1401 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001402 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001403 install : true,
1404 install_dir : rootlibexecdir)
1405
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001406exe = executable('systemd-cat',
1407 systemd_cat_sources,
1408 include_directories : includes,
1409 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001410 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001411 dependencies : [threads],
1412 install_rpath : rootlibexecdir,
1413 install : true)
1414public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001415
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001416exe = executable('journalctl',
1417 journalctl_sources,
1418 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001419 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001420 dependencies : [threads,
1421 libqrencode,
1422 libxz,
1423 liblz4],
1424 install_rpath : rootlibexecdir,
1425 install : true,
1426 install_dir : rootbindir)
1427public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001428
1429executable('systemd-getty-generator',
1430 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001431 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001432 link_with : [libshared],
1433 install_rpath : rootlibexecdir,
1434 install : true,
1435 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001436
1437executable('systemd-debug-generator',
1438 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001439 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001440 link_with : [libshared],
1441 install_rpath : rootlibexecdir,
1442 install : true,
1443 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001444
1445executable('systemd-fstab-generator',
1446 'src/fstab-generator/fstab-generator.c',
1447 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001448 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001449 link_with : [libshared],
1450 install_rpath : rootlibexecdir,
1451 install : true,
1452 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001453
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001454if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001455 executable('30-systemd-environment-d-generator',
1456 'src/environment-d-generator/environment-d-generator.c',
1457 include_directories : includes,
1458 link_with : [libshared],
1459 install_rpath : rootlibexecdir,
1460 install : true,
1461 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001462
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001463 meson.add_install_script(meson_make_symlink,
1464 join_paths(sysconfdir, 'environment'),
1465 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001466endif
1467
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001468if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001469 executable('systemd-hibernate-resume-generator',
1470 'src/hibernate-resume/hibernate-resume-generator.c',
1471 include_directories : includes,
1472 link_with : [libshared],
1473 install_rpath : rootlibexecdir,
1474 install : true,
1475 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001476
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001477 executable('systemd-hibernate-resume',
1478 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001479 include_directories : includes,
1480 link_with : [libshared],
1481 install_rpath : rootlibexecdir,
1482 install : true,
1483 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001484endif
1485
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001486if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001487 executable('systemd-gpt-auto-generator',
1488 'src/gpt-auto-generator/gpt-auto-generator.c',
1489 'src/basic/blkid-util.h',
1490 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001491 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001492 dependencies : libblkid,
1493 install_rpath : rootlibexecdir,
1494 install : true,
1495 install_dir : systemgeneratordir)
1496
1497 exe = executable('systemd-dissect',
1498 'src/dissect/dissect.c',
1499 include_directories : includes,
1500 link_with : [libshared],
1501 install_rpath : rootlibexecdir,
1502 install : true,
1503 install_dir : rootlibexecdir)
1504 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001505endif
1506
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001507if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001508 executable('systemd-resolved',
1509 systemd_resolved_sources,
Michael Biebl76c87412017-04-21 23:45:54 +02001510 gcrypt_util_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001511 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001512 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001513 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001514 libgcrypt,
1515 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001516 libm,
1517 libidn],
1518 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001519 install : true,
1520 install_dir : rootlibexecdir)
1521
1522 exe = executable('systemd-resolve',
1523 systemd_resolve_sources,
Michael Biebl76c87412017-04-21 23:45:54 +02001524 gcrypt_util_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001525 include_directories : includes,
1526 link_with : [libshared],
1527 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001528 libgcrypt,
1529 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001530 libm,
1531 libidn],
1532 install_rpath : rootlibexecdir,
1533 install : true)
1534 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001535endif
1536
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001537if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001538 executable('systemd-logind',
1539 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001540 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001541 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001542 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001543 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001544 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001545 install_rpath : rootlibexecdir,
1546 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001547 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001548
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001549 exe = executable('loginctl',
1550 loginctl_sources,
1551 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001552 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001553 dependencies : [threads,
1554 liblz4,
1555 libxz],
1556 install_rpath : rootlibexecdir,
1557 install : true,
1558 install_dir : rootbindir)
1559 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001560
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001561 exe = executable('systemd-inhibit',
1562 'src/login/inhibit.c',
1563 include_directories : includes,
1564 link_with : [libshared],
1565 install_rpath : rootlibexecdir,
1566 install : true,
1567 install_dir : rootbindir)
1568 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001569
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001570 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001571 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1572 pam_systemd = shared_library(
1573 'pam_systemd',
1574 pam_systemd_c,
1575 name_prefix : '',
1576 include_directories : includes,
1577 link_args : ['-shared',
1578 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001579 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001580 libshared_static],
1581 dependencies : [threads,
1582 libpam,
1583 libpam_misc],
1584 link_depends : pam_systemd_sym,
1585 install : true,
1586 install_dir : pamlibdir)
1587
1588 test('dlopen-pam_systemd',
1589 test_dlopen,
1590 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1591 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001592endif
1593
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001594if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001595 executable('systemd-user-sessions',
1596 'src/user-sessions/user-sessions.c',
1597 include_directories : includes,
1598 link_with : [libshared],
1599 install_rpath : rootlibexecdir,
1600 install : true,
1601 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001602endif
1603
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001604if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001605 exe = executable('bootctl',
1606 'src/boot/bootctl.c',
1607 include_directories : includes,
1608 link_with : [libshared],
1609 dependencies : [libblkid],
1610 install_rpath : rootlibexecdir,
1611 install : true)
1612 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001613endif
1614
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001615exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1616 include_directories : includes,
1617 link_with : [libshared],
1618 dependencies : [threads],
1619 install_rpath : rootlibexecdir,
1620 install : true)
1621public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001622
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001623exe = executable('systemctl', 'src/systemctl/systemctl.c',
1624 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001625 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001626 dependencies : [threads,
1627 libcap,
1628 libselinux,
1629 libxz,
1630 liblz4],
1631 install_rpath : rootlibexecdir,
1632 install : true,
1633 install_dir : rootbindir)
1634public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001635
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001636if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001637 executable('systemd-backlight',
1638 'src/backlight/backlight.c',
1639 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001640 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001641 install_rpath : rootlibexecdir,
1642 install : true,
1643 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001644endif
1645
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001646if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001647 executable('systemd-rfkill',
1648 'src/rfkill/rfkill.c',
1649 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001650 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001651 install_rpath : rootlibexecdir,
1652 install : true,
1653 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001654endif
1655
1656executable('systemd-system-update-generator',
1657 'src/system-update-generator/system-update-generator.c',
1658 include_directories : includes,
1659 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001660 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001661 install : true,
1662 install_dir : systemgeneratordir)
1663
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001664if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001665 executable('systemd-cryptsetup',
1666 'src/cryptsetup/cryptsetup.c',
1667 include_directories : includes,
1668 link_with : [libshared],
1669 dependencies : [libcryptsetup],
1670 install_rpath : rootlibexecdir,
1671 install : true,
1672 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001673
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001674 executable('systemd-cryptsetup-generator',
1675 'src/cryptsetup/cryptsetup-generator.c',
1676 include_directories : includes,
1677 link_with : [libshared],
1678 dependencies : [libcryptsetup],
1679 install_rpath : rootlibexecdir,
1680 install : true,
1681 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001682
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001683 executable('systemd-veritysetup',
1684 'src/veritysetup/veritysetup.c',
1685 include_directories : includes,
1686 link_with : [libshared],
1687 dependencies : [libcryptsetup],
1688 install_rpath : rootlibexecdir,
1689 install : true,
1690 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001691
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001692 executable('systemd-veritysetup-generator',
1693 'src/veritysetup/veritysetup-generator.c',
1694 include_directories : includes,
1695 link_with : [libshared],
1696 dependencies : [libcryptsetup],
1697 install_rpath : rootlibexecdir,
1698 install : true,
1699 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001700endif
1701
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001702if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001703 executable('systemd-sysv-generator',
1704 'src/sysv-generator/sysv-generator.c',
1705 include_directories : includes,
1706 link_with : [libshared],
1707 install_rpath : rootlibexecdir,
1708 install : true,
1709 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001710
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001711 executable('systemd-rc-local-generator',
1712 'src/rc-local-generator/rc-local-generator.c',
1713 include_directories : includes,
1714 link_with : [libshared],
1715 install_rpath : rootlibexecdir,
1716 install : true,
1717 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001718endif
1719
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001720if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001721 executable('systemd-hostnamed',
1722 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001723 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001724 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001725 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001726 install : true,
1727 install_dir : rootlibexecdir)
1728
1729 exe = executable('hostnamectl',
1730 'src/hostname/hostnamectl.c',
1731 include_directories : includes,
1732 link_with : [libshared],
1733 install_rpath : rootlibexecdir,
1734 install : true)
1735 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001736endif
1737
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001738if conf.get('ENABLE_LOCALED') == 1
1739 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001740 # logind will load libxkbcommon.so dynamically on its own
1741 deps = [libdl]
1742 else
1743 deps = []
1744 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001745
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001746 executable('systemd-localed',
1747 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001748 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001749 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001750 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001751 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001752 install : true,
1753 install_dir : rootlibexecdir)
1754
1755 exe = executable('localectl',
1756 localectl_sources,
1757 include_directories : includes,
1758 link_with : [libshared],
1759 install_rpath : rootlibexecdir,
1760 install : true)
1761 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001762endif
1763
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001764if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001765 executable('systemd-timedated',
1766 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001767 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001768 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001769 install_rpath : rootlibexecdir,
1770 install : true,
1771 install_dir : rootlibexecdir)
1772
1773 exe = executable('timedatectl',
1774 'src/timedate/timedatectl.c',
1775 include_directories : includes,
1776 install_rpath : rootlibexecdir,
1777 link_with : [libshared],
1778 install : true)
1779 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001780endif
1781
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001782if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001783 executable('systemd-timesyncd',
1784 systemd_timesyncd_sources,
1785 include_directories : includes,
1786 link_with : [libshared],
1787 dependencies : [threads,
1788 libm],
1789 install_rpath : rootlibexecdir,
1790 install : true,
1791 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001792endif
1793
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001794if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001795 executable('systemd-machined',
1796 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001797 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001798 link_with : [libmachine_core,
1799 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001800 install_rpath : rootlibexecdir,
1801 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001802 install_dir : rootlibexecdir)
1803
1804 exe = executable('machinectl',
1805 'src/machine/machinectl.c',
1806 include_directories : includes,
1807 link_with : [libshared],
1808 dependencies : [threads,
1809 libxz,
1810 liblz4],
1811 install_rpath : rootlibexecdir,
1812 install : true,
1813 install_dir : rootbindir)
1814 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001815endif
1816
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001817if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001818 executable('systemd-importd',
1819 systemd_importd_sources,
1820 include_directories : includes,
1821 link_with : [libshared],
1822 dependencies : [threads],
1823 install_rpath : rootlibexecdir,
1824 install : true,
1825 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001826
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001827 systemd_pull = executable('systemd-pull',
1828 systemd_pull_sources,
1829 include_directories : includes,
1830 link_with : [libshared],
1831 dependencies : [libcurl,
1832 libz,
1833 libbzip2,
1834 libxz,
1835 libgcrypt],
1836 install_rpath : rootlibexecdir,
1837 install : true,
1838 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001839
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001840 systemd_import = executable('systemd-import',
1841 systemd_import_sources,
1842 include_directories : includes,
1843 link_with : [libshared],
1844 dependencies : [libcurl,
1845 libz,
1846 libbzip2,
1847 libxz],
1848 install_rpath : rootlibexecdir,
1849 install : true,
1850 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001851
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001852 systemd_export = executable('systemd-export',
1853 systemd_export_sources,
1854 include_directories : includes,
1855 link_with : [libshared],
1856 dependencies : [libcurl,
1857 libz,
1858 libbzip2,
1859 libxz],
1860 install_rpath : rootlibexecdir,
1861 install : true,
1862 install_dir : rootlibexecdir)
1863 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001864endif
1865
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001866if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001867 exe = executable('systemd-journal-upload',
1868 systemd_journal_upload_sources,
1869 include_directories : includes,
1870 link_with : [libshared],
1871 dependencies : [threads,
1872 libcurl,
1873 libgnutls,
1874 libxz,
1875 liblz4],
1876 install_rpath : rootlibexecdir,
1877 install : true,
1878 install_dir : rootlibexecdir)
1879 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001880endif
1881
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001882if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001883 s_j_remote = executable('systemd-journal-remote',
1884 systemd_journal_remote_sources,
1885 include_directories : includes,
1886 link_with : [libshared],
1887 dependencies : [threads,
1888 libmicrohttpd,
1889 libgnutls,
1890 libxz,
1891 liblz4],
1892 install_rpath : rootlibexecdir,
1893 install : true,
1894 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001895
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001896 s_j_gatewayd = executable('systemd-journal-gatewayd',
1897 systemd_journal_gatewayd_sources,
1898 include_directories : includes,
1899 link_with : [libshared],
1900 dependencies : [threads,
1901 libmicrohttpd,
1902 libgnutls,
1903 libxz,
1904 liblz4],
1905 install_rpath : rootlibexecdir,
1906 install : true,
1907 install_dir : rootlibexecdir)
1908 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001909endif
1910
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001911if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001912 executable('systemd-coredump',
1913 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001914 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001915 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001916 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001917 libacl,
1918 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001919 libxz,
1920 liblz4],
1921 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001922 install : true,
1923 install_dir : rootlibexecdir)
1924
1925 exe = executable('coredumpctl',
1926 coredumpctl_sources,
1927 include_directories : includes,
1928 link_with : [libshared],
1929 dependencies : [threads,
1930 libxz,
1931 liblz4],
1932 install_rpath : rootlibexecdir,
1933 install : true)
1934 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001935endif
1936
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001937if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001938 exe = executable('systemd-binfmt',
1939 'src/binfmt/binfmt.c',
1940 include_directories : includes,
1941 link_with : [libshared],
1942 install_rpath : rootlibexecdir,
1943 install : true,
1944 install_dir : rootlibexecdir)
1945 public_programs += [exe]
1946
1947 meson.add_install_script('sh', '-c',
1948 mkdir_p.format(binfmtdir))
1949 meson.add_install_script('sh', '-c',
1950 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
1951endif
1952
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001953if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001954 executable('systemd-vconsole-setup',
1955 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001956 include_directories : includes,
1957 link_with : [libshared],
1958 install_rpath : rootlibexecdir,
1959 install : true,
1960 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001961endif
1962
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001963if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001964 executable('systemd-random-seed',
1965 'src/random-seed/random-seed.c',
1966 include_directories : includes,
1967 link_with : [libshared],
1968 install_rpath : rootlibexecdir,
1969 install : true,
1970 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001971endif
1972
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001973if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001974 executable('systemd-firstboot',
1975 'src/firstboot/firstboot.c',
1976 include_directories : includes,
1977 link_with : [libshared],
1978 dependencies : [libcrypt],
1979 install_rpath : rootlibexecdir,
1980 install : true,
1981 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001982endif
1983
1984executable('systemd-remount-fs',
1985 'src/remount-fs/remount-fs.c',
1986 'src/core/mount-setup.c',
1987 'src/core/mount-setup.h',
1988 include_directories : includes,
1989 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001990 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001991 install : true,
1992 install_dir : rootlibexecdir)
1993
1994executable('systemd-machine-id-setup',
1995 'src/machine-id-setup/machine-id-setup-main.c',
1996 'src/core/machine-id-setup.c',
1997 'src/core/machine-id-setup.h',
1998 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001999 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002000 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002001 install : true,
2002 install_dir : rootbindir)
2003
2004executable('systemd-fsck',
2005 'src/fsck/fsck.c',
2006 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002007 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002008 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002009 install : true,
2010 install_dir : rootlibexecdir)
2011
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002012executable('systemd-growfs',
2013 'src/partition/growfs.c',
2014 include_directories : includes,
2015 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002016 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002017 install_rpath : rootlibexecdir,
2018 install : true,
2019 install_dir : rootlibexecdir)
2020
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002021executable('systemd-makefs',
2022 'src/partition/makefs.c',
2023 include_directories : includes,
2024 link_with : [libshared],
2025 install_rpath : rootlibexecdir,
2026 install : true,
2027 install_dir : rootlibexecdir)
2028
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002029executable('systemd-sleep',
2030 'src/sleep/sleep.c',
2031 include_directories : includes,
2032 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002033 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002034 install : true,
2035 install_dir : rootlibexecdir)
2036
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002037exe = executable('systemd-sysctl',
2038 'src/sysctl/sysctl.c',
2039 include_directories : includes,
2040 link_with : [libshared],
2041 install_rpath : rootlibexecdir,
2042 install : true,
2043 install_dir : rootlibexecdir)
2044public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002045
2046executable('systemd-ac-power',
2047 'src/ac-power/ac-power.c',
2048 include_directories : includes,
2049 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002050 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002051 install : true,
2052 install_dir : rootlibexecdir)
2053
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002054exe = executable('systemd-detect-virt',
2055 'src/detect-virt/detect-virt.c',
2056 include_directories : includes,
2057 link_with : [libshared],
2058 install_rpath : rootlibexecdir,
2059 install : true)
2060public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002061
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002062exe = executable('systemd-delta',
2063 'src/delta/delta.c',
2064 include_directories : includes,
2065 link_with : [libshared],
2066 install_rpath : rootlibexecdir,
2067 install : true)
2068public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002069
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002070exe = executable('systemd-escape',
2071 'src/escape/escape.c',
2072 include_directories : includes,
2073 link_with : [libshared],
2074 install_rpath : rootlibexecdir,
2075 install : true,
2076 install_dir : rootbindir)
2077public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002078
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002079exe = executable('systemd-notify',
2080 'src/notify/notify.c',
2081 include_directories : includes,
2082 link_with : [libshared],
2083 install_rpath : rootlibexecdir,
2084 install : true,
2085 install_dir : rootbindir)
2086public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002087
2088executable('systemd-volatile-root',
2089 'src/volatile-root/volatile-root.c',
2090 include_directories : includes,
2091 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002092 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002093 install : true,
2094 install_dir : rootlibexecdir)
2095
2096executable('systemd-cgroups-agent',
2097 'src/cgroups-agent/cgroups-agent.c',
2098 include_directories : includes,
2099 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002100 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002101 install : true,
2102 install_dir : rootlibexecdir)
2103
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002104exe = executable('systemd-path',
2105 'src/path/path.c',
2106 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002107 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002108 install_rpath : rootlibexecdir,
2109 install : true)
2110public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002111
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002112exe = executable('systemd-ask-password',
2113 'src/ask-password/ask-password.c',
2114 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002115 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002116 install_rpath : rootlibexecdir,
2117 install : true,
2118 install_dir : rootbindir)
2119public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002120
2121executable('systemd-reply-password',
2122 'src/reply-password/reply-password.c',
2123 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002124 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002125 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002126 install : true,
2127 install_dir : rootlibexecdir)
2128
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002129exe = executable('systemd-tty-ask-password-agent',
2130 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2131 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002132 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002133 install_rpath : rootlibexecdir,
2134 install : true,
2135 install_dir : rootbindir)
2136public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002137
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002138exe = executable('systemd-cgls',
2139 'src/cgls/cgls.c',
2140 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002141 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002142 install_rpath : rootlibexecdir,
2143 install : true)
2144public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002145
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002146exe = executable('systemd-cgtop',
2147 'src/cgtop/cgtop.c',
2148 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002149 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002150 install_rpath : rootlibexecdir,
2151 install : true)
2152public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002153
2154executable('systemd-initctl',
2155 'src/initctl/initctl.c',
2156 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002157 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002158 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002159 install : true,
2160 install_dir : rootlibexecdir)
2161
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002162exe = executable('systemd-mount',
2163 'src/mount/mount-tool.c',
2164 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002165 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002166 install_rpath : rootlibexecdir,
2167 install : true)
2168public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002169
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002170meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002171 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002172
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002173exe = executable('systemd-run',
2174 'src/run/run.c',
2175 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002176 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002177 install_rpath : rootlibexecdir,
2178 install : true)
2179public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002180
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002181exe = executable('systemd-stdio-bridge',
2182 'src/stdio-bridge/stdio-bridge.c',
2183 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002184 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002185 install_rpath : rootlibexecdir,
2186 install : true)
2187public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002188
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002189exe = executable('busctl',
2190 'src/busctl/busctl.c',
2191 'src/busctl/busctl-introspect.c',
2192 'src/busctl/busctl-introspect.h',
2193 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002194 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002195 install_rpath : rootlibexecdir,
2196 install : true)
2197public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002198
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002199if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002200 exe = executable('systemd-sysusers',
2201 'src/sysusers/sysusers.c',
2202 include_directories : includes,
2203 link_with : [libshared],
2204 install_rpath : rootlibexecdir,
2205 install : true,
2206 install_dir : rootbindir)
2207 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002208endif
2209
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002210if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002211 exe = executable('systemd-tmpfiles',
2212 'src/tmpfiles/tmpfiles.c',
2213 include_directories : includes,
2214 link_with : [libshared],
2215 dependencies : [libacl],
2216 install_rpath : rootlibexecdir,
2217 install : true,
2218 install_dir : rootbindir)
2219 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002220
2221 test('test-systemd-tmpfiles',
2222 test_systemd_tmpfiles_py,
2223 args : exe.full_path())
2224 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002225endif
2226
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002227if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002228 exe = executable('systemd-hwdb',
2229 'src/hwdb/hwdb.c',
2230 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2231 include_directories : includes,
Michael Biebl0da6f392017-04-21 18:32:14 +02002232 link_with : [libudev_internal],
2233 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002234 install : true,
2235 install_dir : rootbindir)
2236 public_programs += [exe]
2237endif
2238
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002239if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002240 executable('systemd-quotacheck',
2241 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002242 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002243 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002244 install_rpath : rootlibexecdir,
2245 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002246 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002247endif
2248
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002249exe = executable('systemd-socket-proxyd',
2250 'src/socket-proxy/socket-proxyd.c',
2251 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002252 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002253 dependencies : [threads],
2254 install_rpath : rootlibexecdir,
2255 install : true,
2256 install_dir : rootlibexecdir)
2257public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002258
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002259exe = executable('systemd-udevd',
2260 systemd_udevd_sources,
2261 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002262 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002263 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002264 libsystemd_network,
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002265 libudev_internal],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002266 dependencies : [threads,
2267 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002268 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002269 libacl,
2270 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002271 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002272 install : true,
2273 install_dir : rootlibexecdir)
2274public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002275
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002276exe = executable('udevadm',
2277 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002278 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002279 include_directories : includes,
2280 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002281 libsystemd_network,
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002282 libudev_internal],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002283 dependencies : [threads,
2284 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002285 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002286 libacl,
2287 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002288 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002289 install : true,
2290 install_dir : rootbindir)
2291public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002292
2293executable('systemd-shutdown',
2294 systemd_shutdown_sources,
2295 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002296 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002297 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002298 install : true,
2299 install_dir : rootlibexecdir)
2300
2301executable('systemd-update-done',
2302 'src/update-done/update-done.c',
2303 include_directories : includes,
2304 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002305 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002306 install : true,
2307 install_dir : rootlibexecdir)
2308
2309executable('systemd-update-utmp',
2310 'src/update-utmp/update-utmp.c',
2311 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002312 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002313 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002314 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002315 install : true,
2316 install_dir : rootlibexecdir)
2317
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002318if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002319 executable('systemd-modules-load',
2320 'src/modules-load/modules-load.c',
2321 include_directories : includes,
2322 link_with : [libshared],
2323 dependencies : [libkmod],
2324 install_rpath : rootlibexecdir,
2325 install : true,
2326 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002327
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002328 meson.add_install_script('sh', '-c',
2329 mkdir_p.format(modulesloaddir))
2330 meson.add_install_script('sh', '-c',
2331 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002332endif
2333
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002334exe = executable('systemd-nspawn',
2335 systemd_nspawn_sources,
2336 'src/core/mount-setup.c', # FIXME: use a variable?
2337 'src/core/mount-setup.h',
2338 'src/core/loopback-setup.c',
2339 'src/core/loopback-setup.h',
2340 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002341 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002342 dependencies : [libacl,
2343 libblkid,
2344 libseccomp,
2345 libselinux],
2346 install_rpath : rootlibexecdir,
2347 install : true)
2348public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002349
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002350if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002351 executable('systemd-networkd',
2352 systemd_networkd_sources,
2353 include_directories : includes,
2354 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002355 libsystemd_network,
2356 libudev_internal,
2357 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002358 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002359 install_rpath : rootlibexecdir,
2360 install : true,
2361 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002362
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002363 executable('systemd-networkd-wait-online',
2364 systemd_networkd_wait_online_sources,
2365 include_directories : includes,
2366 link_with : [libnetworkd_core,
2367 libshared],
2368 install_rpath : rootlibexecdir,
2369 install : true,
2370 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002371
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002372 exe = executable('networkctl',
2373 networkctl_sources,
2374 include_directories : includes,
2375 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002376 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002377 install_rpath : rootlibexecdir,
2378 install : true,
2379 install_dir : rootbindir)
2380 public_programs += [exe]
2381endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002382
2383executable('systemd-sulogin-shell',
2384 ['src/sulogin-shell/sulogin-shell.c'],
2385 include_directories : includes,
2386 link_with : [libshared],
2387 install_rpath : rootlibexecdir,
2388 install : true,
2389 install_dir : rootlibexecdir)
2390
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002391############################################################
2392
2393foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002394 sources = tuple[0]
2395 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2396 dependencies = tuple[2]
2397 condition = tuple.length() >= 4 ? tuple[3] : ''
2398 type = tuple.length() >= 5 ? tuple[4] : ''
2399 defs = tuple.length() >= 6 ? tuple[5] : []
2400 incs = tuple.length() >= 7 ? tuple[6] : includes
2401 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002402
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002403 name = sources[0].split('/')[-1].split('.')[0]
2404 if type.startswith('timeout=')
2405 timeout = type.split('=')[1].to_int()
2406 type = ''
2407 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002408
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002409 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002410 exe = executable(
2411 name,
2412 sources,
2413 include_directories : incs,
2414 link_with : link_with,
2415 dependencies : dependencies,
2416 c_args : defs,
2417 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002418 install : install_tests,
2419 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002420
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002421 if type == 'manual'
2422 message('@0@ is a manual test'.format(name))
2423 elif type == 'unsafe' and want_tests != 'unsafe'
2424 message('@0@ is an unsafe test'.format(name))
2425 else
2426 test(name, exe,
2427 env : test_env,
2428 timeout : timeout)
2429 endif
2430 else
2431 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2432 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002433endforeach
2434
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002435test_libsystemd_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002436 'test-libsystemd-sym',
2437 test_libsystemd_sym_c,
2438 include_directories : includes,
2439 link_with : [libsystemd],
2440 install : install_tests,
2441 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002442test('test-libsystemd-sym',
2443 test_libsystemd_sym)
2444
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002445test_libudev_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002446 'test-libudev-sym',
2447 test_libudev_sym_c,
2448 include_directories : includes,
2449 c_args : ['-Wno-deprecated-declarations'],
2450 link_with : [libudev],
2451 install : install_tests,
2452 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002453test('test-libudev-sym',
2454 test_libudev_sym)
2455
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002456############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002457
2458make_directive_index_py = find_program('tools/make-directive-index.py')
2459make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002460xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002461hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002462
2463subdir('units')
2464subdir('sysctl.d')
2465subdir('sysusers.d')
2466subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002467subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002468subdir('hwdb')
2469subdir('network')
2470subdir('man')
2471subdir('shell-completion/bash')
2472subdir('shell-completion/zsh')
2473subdir('docs/sysvinit')
2474subdir('docs/var-log')
2475
2476# FIXME: figure out if the warning is true:
2477# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2478install_subdir('factory/etc',
2479 install_dir : factorydir)
2480
2481
2482install_data('xorg/50-systemd-user.sh',
2483 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002484install_data('modprobe.d/systemd.conf',
2485 install_dir : modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002486install_data('README',
2487 'NEWS',
2488 'CODING_STYLE',
2489 'DISTRO_PORTING',
2490 'ENVIRONMENT.md',
2491 'LICENSE.GPL2',
2492 'LICENSE.LGPL2.1',
2493 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2494 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002495
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002496meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2497meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2498
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002499############################################################
2500
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002501meson_check_help = find_program('tools/meson-check-help.sh')
2502
2503foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002504 name = exec.full_path().split('/')[-1]
2505 test('check-help-' + name,
2506 meson_check_help,
2507 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002508endforeach
2509
2510############################################################
2511
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002512if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002513 all_files = run_command(
2514 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002515 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002516 'ls-files',
2517 ':/*.[ch]'])
2518 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002519
userwithuide85a6902017-08-09 13:41:44 +00002520 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002521 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002522 output : 'tags',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002523 command : ['env', 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002524 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002525 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002526 output : 'ctags',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002527 command : ['env', 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002528endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002529
2530if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002531 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002532 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002533 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002534 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002535endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002536
2537if git.found()
2538 git_head = run_command(
2539 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002540 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002541 'rev-parse', 'HEAD']).stdout().strip()
2542 git_head_short = 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', '--short=7', 'HEAD']).stdout().strip()
2546
2547 run_target(
2548 'git-snapshot',
2549 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002550 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002551 git_head_short),
2552 '--prefix', 'systemd-@0@/'.format(git_head),
2553 'HEAD'])
2554endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002555
2556############################################################
2557
2558status = [
2559 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2560
Yu Watanabe359b4962017-11-25 20:35:24 +09002561 'prefix directory: @0@'.format(prefixdir),
2562 'rootprefix directory: @0@'.format(rootprefixdir),
2563 'sysconf directory: @0@'.format(sysconfdir),
2564 'include directory: @0@'.format(includedir),
2565 'lib directory: @0@'.format(libdir),
2566 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002567 'SysV init scripts: @0@'.format(sysvinit_path),
2568 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002569 'PAM modules directory: @0@'.format(pamlibdir),
2570 'PAM configuration directory: @0@'.format(pamconfdir),
2571 'RPM macros directory: @0@'.format(rpmmacrosdir),
2572 'modprobe.d directory: @0@'.format(modprobedir),
2573 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2574 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2575 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2576 'bash completions directory: @0@'.format(bashcompletiondir),
2577 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002578 'extra start script: @0@'.format(get_option('rc-local')),
2579 'extra stop script: @0@'.format(get_option('halt-local')),
2580 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2581 get_option('debug-tty')),
2582 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002583 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002584 'maximum system UID: @0@'.format(system_uid_max),
2585 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002586 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2587 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2588 'minimum container UID base: @0@'.format(container_uid_base_min),
2589 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002590 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002591 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002592 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002593 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002594 'nobody user name: @0@'.format(nobody_user),
2595 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002596 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002597 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002598
2599 'default DNSSEC mode: @0@'.format(default_dnssec),
2600 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2601 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2602
2603alt_dns_servers = '\n '.join(dns_servers.split(' '))
2604alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2605status += [
2606 'default DNS servers: @0@'.format(alt_dns_servers),
2607 'default NTP servers: @0@'.format(alt_ntp_servers)]
2608
2609alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2610 '@@0@'.format(time_epoch)).stdout().strip()
2611status += [
2612 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2613
2614# TODO:
2615# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2616# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2617# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2618
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002619if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002620 status += [
2621 'efi arch: @0@'.format(efi_arch)]
2622
2623 if have_gnu_efi
2624 status += [
2625 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2626 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002627 'EFI lib directory: @0@'.format(efi_libdir),
2628 'EFI lds directory: @0@'.format(efi_ldsdir),
2629 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002630 endif
2631endif
2632
2633found = []
2634missing = []
2635
2636foreach tuple : [
2637 ['libcryptsetup'],
2638 ['PAM'],
2639 ['AUDIT'],
2640 ['IMA'],
2641 ['AppArmor'],
2642 ['SELinux'],
2643 ['SECCOMP'],
2644 ['SMACK'],
2645 ['zlib'],
2646 ['xz'],
2647 ['lz4'],
2648 ['bzip2'],
2649 ['ACL'],
2650 ['gcrypt'],
2651 ['qrencode'],
2652 ['microhttpd'],
2653 ['gnutls'],
2654 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002655 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002656 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002657 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002658 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002659 ['libiptc'],
2660 ['elfutils'],
2661 ['binfmt'],
2662 ['vconsole'],
2663 ['quotacheck'],
2664 ['tmpfiles'],
2665 ['environment.d'],
2666 ['sysusers'],
2667 ['firstboot'],
2668 ['randomseed'],
2669 ['backlight'],
2670 ['rfkill'],
2671 ['logind'],
2672 ['machined'],
2673 ['importd'],
2674 ['hostnamed'],
2675 ['timedated'],
2676 ['timesyncd'],
2677 ['localed'],
2678 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002679 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002680 ['coredump'],
2681 ['polkit'],
2682 ['legacy pkla', install_polkit_pkla],
2683 ['efi'],
2684 ['gnu-efi', have_gnu_efi],
2685 ['kmod'],
2686 ['xkbcommon'],
2687 ['blkid'],
2688 ['dbus'],
2689 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002690 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002691 ['hwdb'],
2692 ['tpm'],
2693 ['man pages', want_man],
2694 ['html pages', want_html],
2695 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002696 ['split /usr', conf.get('HAVE_SPLIT_USR') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002697 ['SysV compat'],
2698 ['utmp'],
2699 ['ldconfig'],
2700 ['hibernate'],
2701 ['adm group', get_option('adm-group')],
2702 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002703 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002704 ['debug hashmap'],
2705 ['debug mmap cache'],
2706]
2707
2708 cond = tuple.get(1, '')
2709 if cond == ''
2710 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2711 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002712 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002713 endif
2714 if cond
2715 found += [tuple[0]]
2716 else
2717 missing += [tuple[0]]
2718 endif
2719endforeach
2720
2721status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002722 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002723 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002724 '',
2725 'disabled features: @0@'.format(', '.join(missing)),
2726 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002727message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002728
2729if rootprefixdir != rootprefix_default
2730 message('WARNING:\n' +
2731 ' Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2732 ' systemd used fixed names for unit file directories and other paths, so anything\n' +
2733 ' except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
2734endif