blob: 3e5242e09e6e147929e796112ac93b4df01405b2 [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
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001238subdir('po')
1239subdir('catalog')
1240subdir('src/systemd')
1241subdir('src/basic')
1242subdir('src/libsystemd')
1243subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001244subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001245subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001246
1247libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001248 'journal-core',
1249 libjournal_core_sources,
1250 journald_gperf_c,
1251 include_directories : includes,
1252 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001253
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001254libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001255libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001256 'systemd',
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001257 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001258 include_directories : includes,
1259 link_args : ['-shared',
1260 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001261 link_with : [libbasic,
1262 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001263 link_whole : [libsystemd_static,
1264 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001265 dependencies : [threads,
1266 librt,
1267 libxz,
1268 liblz4],
1269 link_depends : libsystemd_sym,
1270 install : true,
1271 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001272
1273############################################################
1274
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001275# binaries that have --help and are intended for use by humans,
1276# usually, but not always, installed in /bin.
1277public_programs = []
1278
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001279subdir('src/libudev')
1280subdir('src/shared')
1281subdir('src/core')
1282subdir('src/udev')
1283subdir('src/network')
1284
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001285subdir('src/analyze')
1286subdir('src/journal-remote')
1287subdir('src/coredump')
1288subdir('src/hostname')
1289subdir('src/import')
1290subdir('src/kernel-install')
1291subdir('src/locale')
1292subdir('src/machine')
1293subdir('src/nspawn')
1294subdir('src/resolve')
1295subdir('src/timedate')
1296subdir('src/timesync')
1297subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001298subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001299
1300subdir('src/test')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001301subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001302subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001303
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001304############################################################
1305
1306# only static linking apart from libdl, to make sure that the
1307# module is linked to all libraries that it uses.
1308test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001309 'test-dlopen',
1310 test_dlopen_c,
1311 include_directories : includes,
1312 link_with : [libbasic],
1313 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001314
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001315foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001316 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001317 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001318 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001319
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001320 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001321 if condition
1322 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001323
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001324 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1325 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001326
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001327 nss = shared_library(
1328 'nss_' + module,
1329 'src/nss-@0@/nss-@0@.c'.format(module),
1330 version : '2',
1331 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001332 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1333 link_args : ['-Wl,-z,nodelete',
1334 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001335 '-Wl,--version-script=' + version_script_arg,
1336 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001337 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001338 libbasic],
1339 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001340 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001341 link_depends : sym,
1342 install : true,
1343 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001344
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001345 # We cannot use shared_module because it does not support version suffix.
1346 # Unfortunately shared_library insists on creating the symlink…
1347 meson.add_install_script('sh', '-c',
1348 'rm $DESTDIR@0@/libnss_@1@.so'
1349 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001350
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001351 test('dlopen-nss_' + module,
1352 test_dlopen,
1353 args : [nss.full_path()]) # path to dlopen must include a slash
1354 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001355endforeach
1356
1357############################################################
1358
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001359executable('systemd',
1360 systemd_sources,
1361 include_directories : includes,
1362 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001363 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001364 dependencies : [threads,
1365 librt,
1366 libseccomp,
1367 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001368 libmount,
1369 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001370 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001371 install : true,
1372 install_dir : rootlibexecdir)
1373
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001374exe = executable('systemd-analyze',
1375 systemd_analyze_sources,
1376 include_directories : includes,
1377 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001378 libshared],
1379 dependencies : [threads,
1380 librt,
1381 libseccomp,
1382 libselinux,
1383 libmount,
1384 libblkid],
1385 install_rpath : rootlibexecdir,
1386 install : true)
1387public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001388
1389executable('systemd-journald',
1390 systemd_journald_sources,
1391 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001392 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001393 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001394 dependencies : [threads,
1395 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001396 liblz4,
1397 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001398 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001399 install : true,
1400 install_dir : rootlibexecdir)
1401
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001402exe = executable('systemd-cat',
1403 systemd_cat_sources,
1404 include_directories : includes,
1405 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001406 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001407 dependencies : [threads],
1408 install_rpath : rootlibexecdir,
1409 install : true)
1410public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001411
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001412exe = executable('journalctl',
1413 journalctl_sources,
1414 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001415 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001416 dependencies : [threads,
1417 libqrencode,
1418 libxz,
1419 liblz4],
1420 install_rpath : rootlibexecdir,
1421 install : true,
1422 install_dir : rootbindir)
1423public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001424
1425executable('systemd-getty-generator',
1426 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001427 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001428 link_with : [libshared],
1429 install_rpath : rootlibexecdir,
1430 install : true,
1431 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001432
1433executable('systemd-debug-generator',
1434 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001435 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001436 link_with : [libshared],
1437 install_rpath : rootlibexecdir,
1438 install : true,
1439 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001440
1441executable('systemd-fstab-generator',
1442 'src/fstab-generator/fstab-generator.c',
1443 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001444 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001445 link_with : [libshared],
1446 install_rpath : rootlibexecdir,
1447 install : true,
1448 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001449
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001450if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001451 executable('30-systemd-environment-d-generator',
1452 'src/environment-d-generator/environment-d-generator.c',
1453 include_directories : includes,
1454 link_with : [libshared],
1455 install_rpath : rootlibexecdir,
1456 install : true,
1457 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001458
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001459 meson.add_install_script(meson_make_symlink,
1460 join_paths(sysconfdir, 'environment'),
1461 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001462endif
1463
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001464if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001465 executable('systemd-hibernate-resume-generator',
1466 'src/hibernate-resume/hibernate-resume-generator.c',
1467 include_directories : includes,
1468 link_with : [libshared],
1469 install_rpath : rootlibexecdir,
1470 install : true,
1471 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001472
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001473 executable('systemd-hibernate-resume',
1474 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001475 include_directories : includes,
1476 link_with : [libshared],
1477 install_rpath : rootlibexecdir,
1478 install : true,
1479 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001480endif
1481
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001482if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001483 executable('systemd-gpt-auto-generator',
1484 'src/gpt-auto-generator/gpt-auto-generator.c',
1485 'src/basic/blkid-util.h',
1486 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001487 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001488 dependencies : libblkid,
1489 install_rpath : rootlibexecdir,
1490 install : true,
1491 install_dir : systemgeneratordir)
1492
1493 exe = executable('systemd-dissect',
1494 'src/dissect/dissect.c',
1495 include_directories : includes,
1496 link_with : [libshared],
1497 install_rpath : rootlibexecdir,
1498 install : true,
1499 install_dir : rootlibexecdir)
1500 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001501endif
1502
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001503if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001504 executable('systemd-resolved',
1505 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001506 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001507 link_with : [libshared,
1508 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001509 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001510 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001511 libm,
1512 libidn],
1513 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001514 install : true,
1515 install_dir : rootlibexecdir)
1516
1517 exe = executable('systemd-resolve',
1518 systemd_resolve_sources,
1519 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001520 link_with : [libshared,
1521 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001522 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001523 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001524 libm,
1525 libidn],
1526 install_rpath : rootlibexecdir,
1527 install : true)
1528 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001529endif
1530
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001531if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001532 executable('systemd-logind',
1533 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001534 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001535 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001536 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001537 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001538 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001539 install_rpath : rootlibexecdir,
1540 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001541 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001542
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001543 exe = executable('loginctl',
1544 loginctl_sources,
1545 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001546 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001547 dependencies : [threads,
1548 liblz4,
1549 libxz],
1550 install_rpath : rootlibexecdir,
1551 install : true,
1552 install_dir : rootbindir)
1553 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001554
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001555 exe = executable('systemd-inhibit',
1556 'src/login/inhibit.c',
1557 include_directories : includes,
1558 link_with : [libshared],
1559 install_rpath : rootlibexecdir,
1560 install : true,
1561 install_dir : rootbindir)
1562 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001563
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001564 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001565 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1566 pam_systemd = shared_library(
1567 'pam_systemd',
1568 pam_systemd_c,
1569 name_prefix : '',
1570 include_directories : includes,
1571 link_args : ['-shared',
1572 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001573 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001574 libshared_static],
1575 dependencies : [threads,
1576 libpam,
1577 libpam_misc],
1578 link_depends : pam_systemd_sym,
1579 install : true,
1580 install_dir : pamlibdir)
1581
1582 test('dlopen-pam_systemd',
1583 test_dlopen,
1584 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1585 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001586endif
1587
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001588if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001589 executable('systemd-user-sessions',
1590 'src/user-sessions/user-sessions.c',
1591 include_directories : includes,
1592 link_with : [libshared],
1593 install_rpath : rootlibexecdir,
1594 install : true,
1595 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001596endif
1597
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001598if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001599 exe = executable('bootctl',
1600 'src/boot/bootctl.c',
1601 include_directories : includes,
1602 link_with : [libshared],
1603 dependencies : [libblkid],
1604 install_rpath : rootlibexecdir,
1605 install : true)
1606 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001607endif
1608
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001609exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1610 include_directories : includes,
1611 link_with : [libshared],
1612 dependencies : [threads],
1613 install_rpath : rootlibexecdir,
1614 install : true)
1615public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001616
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001617exe = executable('systemctl', 'src/systemctl/systemctl.c',
1618 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001619 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001620 dependencies : [threads,
1621 libcap,
1622 libselinux,
1623 libxz,
1624 liblz4],
1625 install_rpath : rootlibexecdir,
1626 install : true,
1627 install_dir : rootbindir)
1628public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001629
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001630if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001631 executable('systemd-backlight',
1632 'src/backlight/backlight.c',
1633 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001634 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001635 install_rpath : rootlibexecdir,
1636 install : true,
1637 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001638endif
1639
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001640if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001641 executable('systemd-rfkill',
1642 'src/rfkill/rfkill.c',
1643 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001644 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001645 install_rpath : rootlibexecdir,
1646 install : true,
1647 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001648endif
1649
1650executable('systemd-system-update-generator',
1651 'src/system-update-generator/system-update-generator.c',
1652 include_directories : includes,
1653 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001654 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001655 install : true,
1656 install_dir : systemgeneratordir)
1657
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001658if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001659 executable('systemd-cryptsetup',
1660 'src/cryptsetup/cryptsetup.c',
1661 include_directories : includes,
1662 link_with : [libshared],
1663 dependencies : [libcryptsetup],
1664 install_rpath : rootlibexecdir,
1665 install : true,
1666 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001667
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001668 executable('systemd-cryptsetup-generator',
1669 'src/cryptsetup/cryptsetup-generator.c',
1670 include_directories : includes,
1671 link_with : [libshared],
1672 dependencies : [libcryptsetup],
1673 install_rpath : rootlibexecdir,
1674 install : true,
1675 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001676
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001677 executable('systemd-veritysetup',
1678 'src/veritysetup/veritysetup.c',
1679 include_directories : includes,
1680 link_with : [libshared],
1681 dependencies : [libcryptsetup],
1682 install_rpath : rootlibexecdir,
1683 install : true,
1684 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001685
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001686 executable('systemd-veritysetup-generator',
1687 'src/veritysetup/veritysetup-generator.c',
1688 include_directories : includes,
1689 link_with : [libshared],
1690 dependencies : [libcryptsetup],
1691 install_rpath : rootlibexecdir,
1692 install : true,
1693 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001694endif
1695
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001696if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001697 executable('systemd-sysv-generator',
1698 'src/sysv-generator/sysv-generator.c',
1699 include_directories : includes,
1700 link_with : [libshared],
1701 install_rpath : rootlibexecdir,
1702 install : true,
1703 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001704
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001705 executable('systemd-rc-local-generator',
1706 'src/rc-local-generator/rc-local-generator.c',
1707 include_directories : includes,
1708 link_with : [libshared],
1709 install_rpath : rootlibexecdir,
1710 install : true,
1711 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001712endif
1713
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001714if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001715 executable('systemd-hostnamed',
1716 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001717 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001718 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001719 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001720 install : true,
1721 install_dir : rootlibexecdir)
1722
1723 exe = executable('hostnamectl',
1724 'src/hostname/hostnamectl.c',
1725 include_directories : includes,
1726 link_with : [libshared],
1727 install_rpath : rootlibexecdir,
1728 install : true)
1729 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001730endif
1731
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001732if conf.get('ENABLE_LOCALED') == 1
1733 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001734 # logind will load libxkbcommon.so dynamically on its own
1735 deps = [libdl]
1736 else
1737 deps = []
1738 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001739
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001740 executable('systemd-localed',
1741 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001742 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001743 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001744 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001745 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001746 install : true,
1747 install_dir : rootlibexecdir)
1748
1749 exe = executable('localectl',
1750 localectl_sources,
1751 include_directories : includes,
1752 link_with : [libshared],
1753 install_rpath : rootlibexecdir,
1754 install : true)
1755 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001756endif
1757
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001758if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001759 executable('systemd-timedated',
1760 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001761 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001762 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001763 install_rpath : rootlibexecdir,
1764 install : true,
1765 install_dir : rootlibexecdir)
1766
1767 exe = executable('timedatectl',
1768 'src/timedate/timedatectl.c',
1769 include_directories : includes,
1770 install_rpath : rootlibexecdir,
1771 link_with : [libshared],
1772 install : true)
1773 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001774endif
1775
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001776if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001777 executable('systemd-timesyncd',
1778 systemd_timesyncd_sources,
1779 include_directories : includes,
1780 link_with : [libshared],
1781 dependencies : [threads,
1782 libm],
1783 install_rpath : rootlibexecdir,
1784 install : true,
1785 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001786endif
1787
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001788if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001789 executable('systemd-machined',
1790 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001791 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001792 link_with : [libmachine_core,
1793 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001794 install_rpath : rootlibexecdir,
1795 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001796 install_dir : rootlibexecdir)
1797
1798 exe = executable('machinectl',
1799 'src/machine/machinectl.c',
1800 include_directories : includes,
1801 link_with : [libshared],
1802 dependencies : [threads,
1803 libxz,
1804 liblz4],
1805 install_rpath : rootlibexecdir,
1806 install : true,
1807 install_dir : rootbindir)
1808 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001809endif
1810
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001811if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001812 executable('systemd-importd',
1813 systemd_importd_sources,
1814 include_directories : includes,
1815 link_with : [libshared],
1816 dependencies : [threads],
1817 install_rpath : rootlibexecdir,
1818 install : true,
1819 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001820
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001821 systemd_pull = executable('systemd-pull',
1822 systemd_pull_sources,
1823 include_directories : includes,
1824 link_with : [libshared],
1825 dependencies : [libcurl,
1826 libz,
1827 libbzip2,
1828 libxz,
1829 libgcrypt],
1830 install_rpath : rootlibexecdir,
1831 install : true,
1832 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001833
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001834 systemd_import = executable('systemd-import',
1835 systemd_import_sources,
1836 include_directories : includes,
1837 link_with : [libshared],
1838 dependencies : [libcurl,
1839 libz,
1840 libbzip2,
1841 libxz],
1842 install_rpath : rootlibexecdir,
1843 install : true,
1844 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001845
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001846 systemd_export = executable('systemd-export',
1847 systemd_export_sources,
1848 include_directories : includes,
1849 link_with : [libshared],
1850 dependencies : [libcurl,
1851 libz,
1852 libbzip2,
1853 libxz],
1854 install_rpath : rootlibexecdir,
1855 install : true,
1856 install_dir : rootlibexecdir)
1857 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001858endif
1859
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001860if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001861 exe = executable('systemd-journal-upload',
1862 systemd_journal_upload_sources,
1863 include_directories : includes,
1864 link_with : [libshared],
1865 dependencies : [threads,
1866 libcurl,
1867 libgnutls,
1868 libxz,
1869 liblz4],
1870 install_rpath : rootlibexecdir,
1871 install : true,
1872 install_dir : rootlibexecdir)
1873 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001874endif
1875
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001876if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001877 s_j_remote = executable('systemd-journal-remote',
1878 systemd_journal_remote_sources,
1879 include_directories : includes,
1880 link_with : [libshared],
1881 dependencies : [threads,
1882 libmicrohttpd,
1883 libgnutls,
1884 libxz,
1885 liblz4],
1886 install_rpath : rootlibexecdir,
1887 install : true,
1888 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001889
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001890 s_j_gatewayd = executable('systemd-journal-gatewayd',
1891 systemd_journal_gatewayd_sources,
1892 include_directories : includes,
1893 link_with : [libshared],
1894 dependencies : [threads,
1895 libmicrohttpd,
1896 libgnutls,
1897 libxz,
1898 liblz4],
1899 install_rpath : rootlibexecdir,
1900 install : true,
1901 install_dir : rootlibexecdir)
1902 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001903endif
1904
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001905if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001906 executable('systemd-coredump',
1907 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001908 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001909 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001910 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001911 libacl,
1912 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001913 libxz,
1914 liblz4],
1915 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001916 install : true,
1917 install_dir : rootlibexecdir)
1918
1919 exe = executable('coredumpctl',
1920 coredumpctl_sources,
1921 include_directories : includes,
1922 link_with : [libshared],
1923 dependencies : [threads,
1924 libxz,
1925 liblz4],
1926 install_rpath : rootlibexecdir,
1927 install : true)
1928 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001929endif
1930
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001931if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001932 exe = executable('systemd-binfmt',
1933 'src/binfmt/binfmt.c',
1934 include_directories : includes,
1935 link_with : [libshared],
1936 install_rpath : rootlibexecdir,
1937 install : true,
1938 install_dir : rootlibexecdir)
1939 public_programs += [exe]
1940
1941 meson.add_install_script('sh', '-c',
1942 mkdir_p.format(binfmtdir))
1943 meson.add_install_script('sh', '-c',
1944 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
1945endif
1946
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001947if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001948 executable('systemd-vconsole-setup',
1949 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001950 include_directories : includes,
1951 link_with : [libshared],
1952 install_rpath : rootlibexecdir,
1953 install : true,
1954 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001955endif
1956
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001957if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001958 executable('systemd-random-seed',
1959 'src/random-seed/random-seed.c',
1960 include_directories : includes,
1961 link_with : [libshared],
1962 install_rpath : rootlibexecdir,
1963 install : true,
1964 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001965endif
1966
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001967if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001968 executable('systemd-firstboot',
1969 'src/firstboot/firstboot.c',
1970 include_directories : includes,
1971 link_with : [libshared],
1972 dependencies : [libcrypt],
1973 install_rpath : rootlibexecdir,
1974 install : true,
1975 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001976endif
1977
1978executable('systemd-remount-fs',
1979 'src/remount-fs/remount-fs.c',
1980 'src/core/mount-setup.c',
1981 'src/core/mount-setup.h',
1982 include_directories : includes,
1983 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001984 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001985 install : true,
1986 install_dir : rootlibexecdir)
1987
1988executable('systemd-machine-id-setup',
1989 'src/machine-id-setup/machine-id-setup-main.c',
1990 'src/core/machine-id-setup.c',
1991 'src/core/machine-id-setup.h',
1992 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001993 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001994 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001995 install : true,
1996 install_dir : rootbindir)
1997
1998executable('systemd-fsck',
1999 'src/fsck/fsck.c',
2000 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002001 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002002 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002003 install : true,
2004 install_dir : rootlibexecdir)
2005
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002006executable('systemd-growfs',
2007 'src/partition/growfs.c',
2008 include_directories : includes,
2009 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002010 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002011 install_rpath : rootlibexecdir,
2012 install : true,
2013 install_dir : rootlibexecdir)
2014
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002015executable('systemd-makefs',
2016 'src/partition/makefs.c',
2017 include_directories : includes,
2018 link_with : [libshared],
2019 install_rpath : rootlibexecdir,
2020 install : true,
2021 install_dir : rootlibexecdir)
2022
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002023executable('systemd-sleep',
2024 'src/sleep/sleep.c',
2025 include_directories : includes,
2026 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002027 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002028 install : true,
2029 install_dir : rootlibexecdir)
2030
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002031exe = executable('systemd-sysctl',
2032 'src/sysctl/sysctl.c',
2033 include_directories : includes,
2034 link_with : [libshared],
2035 install_rpath : rootlibexecdir,
2036 install : true,
2037 install_dir : rootlibexecdir)
2038public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002039
2040executable('systemd-ac-power',
2041 'src/ac-power/ac-power.c',
2042 include_directories : includes,
2043 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002044 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002045 install : true,
2046 install_dir : rootlibexecdir)
2047
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002048exe = executable('systemd-detect-virt',
2049 'src/detect-virt/detect-virt.c',
2050 include_directories : includes,
2051 link_with : [libshared],
2052 install_rpath : rootlibexecdir,
2053 install : true)
2054public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002055
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002056exe = executable('systemd-delta',
2057 'src/delta/delta.c',
2058 include_directories : includes,
2059 link_with : [libshared],
2060 install_rpath : rootlibexecdir,
2061 install : true)
2062public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002063
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002064exe = executable('systemd-escape',
2065 'src/escape/escape.c',
2066 include_directories : includes,
2067 link_with : [libshared],
2068 install_rpath : rootlibexecdir,
2069 install : true,
2070 install_dir : rootbindir)
2071public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002072
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002073exe = executable('systemd-notify',
2074 'src/notify/notify.c',
2075 include_directories : includes,
2076 link_with : [libshared],
2077 install_rpath : rootlibexecdir,
2078 install : true,
2079 install_dir : rootbindir)
2080public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002081
2082executable('systemd-volatile-root',
2083 'src/volatile-root/volatile-root.c',
2084 include_directories : includes,
2085 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002086 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002087 install : true,
2088 install_dir : rootlibexecdir)
2089
2090executable('systemd-cgroups-agent',
2091 'src/cgroups-agent/cgroups-agent.c',
2092 include_directories : includes,
2093 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002094 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002095 install : true,
2096 install_dir : rootlibexecdir)
2097
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002098exe = executable('systemd-path',
2099 'src/path/path.c',
2100 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002101 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002102 install_rpath : rootlibexecdir,
2103 install : true)
2104public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002105
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002106exe = executable('systemd-ask-password',
2107 'src/ask-password/ask-password.c',
2108 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002109 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002110 install_rpath : rootlibexecdir,
2111 install : true,
2112 install_dir : rootbindir)
2113public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002114
2115executable('systemd-reply-password',
2116 'src/reply-password/reply-password.c',
2117 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002118 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002119 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002120 install : true,
2121 install_dir : rootlibexecdir)
2122
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002123exe = executable('systemd-tty-ask-password-agent',
2124 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2125 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002126 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002127 install_rpath : rootlibexecdir,
2128 install : true,
2129 install_dir : rootbindir)
2130public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002131
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002132exe = executable('systemd-cgls',
2133 'src/cgls/cgls.c',
2134 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002135 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002136 install_rpath : rootlibexecdir,
2137 install : true)
2138public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002139
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002140exe = executable('systemd-cgtop',
2141 'src/cgtop/cgtop.c',
2142 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002143 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002144 install_rpath : rootlibexecdir,
2145 install : true)
2146public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002147
2148executable('systemd-initctl',
2149 'src/initctl/initctl.c',
2150 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002151 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002152 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002153 install : true,
2154 install_dir : rootlibexecdir)
2155
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002156exe = executable('systemd-mount',
2157 'src/mount/mount-tool.c',
2158 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002159 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002160 install_rpath : rootlibexecdir,
2161 install : true)
2162public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002163
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002164meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002165 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002166
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002167exe = executable('systemd-run',
2168 'src/run/run.c',
2169 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002170 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002171 install_rpath : rootlibexecdir,
2172 install : true)
2173public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002174
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002175exe = executable('systemd-stdio-bridge',
2176 'src/stdio-bridge/stdio-bridge.c',
2177 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002178 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002179 install_rpath : rootlibexecdir,
2180 install : true)
2181public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002182
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002183exe = executable('busctl',
2184 'src/busctl/busctl.c',
2185 'src/busctl/busctl-introspect.c',
2186 'src/busctl/busctl-introspect.h',
2187 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002188 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002189 install_rpath : rootlibexecdir,
2190 install : true)
2191public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002192
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002193if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002194 exe = executable('systemd-sysusers',
2195 'src/sysusers/sysusers.c',
2196 include_directories : includes,
2197 link_with : [libshared],
2198 install_rpath : rootlibexecdir,
2199 install : true,
2200 install_dir : rootbindir)
2201 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002202endif
2203
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002204if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002205 exe = executable('systemd-tmpfiles',
2206 'src/tmpfiles/tmpfiles.c',
2207 include_directories : includes,
2208 link_with : [libshared],
2209 dependencies : [libacl],
2210 install_rpath : rootlibexecdir,
2211 install : true,
2212 install_dir : rootbindir)
2213 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002214
2215 test('test-systemd-tmpfiles',
2216 test_systemd_tmpfiles_py,
2217 args : exe.full_path())
2218 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002219endif
2220
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002221if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002222 exe = executable('systemd-hwdb',
2223 'src/hwdb/hwdb.c',
2224 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2225 include_directories : includes,
Michael Biebl0da6f392017-04-21 18:32:14 +02002226 link_with : [libudev_internal],
2227 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002228 install : true,
2229 install_dir : rootbindir)
2230 public_programs += [exe]
2231endif
2232
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002233if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002234 executable('systemd-quotacheck',
2235 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002236 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002237 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002238 install_rpath : rootlibexecdir,
2239 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002240 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002241endif
2242
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002243exe = executable('systemd-socket-proxyd',
2244 'src/socket-proxy/socket-proxyd.c',
2245 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002246 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002247 dependencies : [threads],
2248 install_rpath : rootlibexecdir,
2249 install : true,
2250 install_dir : rootlibexecdir)
2251public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002252
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002253exe = executable('systemd-udevd',
2254 systemd_udevd_sources,
2255 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002256 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002257 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002258 libsystemd_network,
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002259 libudev_internal],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002260 dependencies : [threads,
2261 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002262 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002263 libacl,
2264 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002265 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002266 install : true,
2267 install_dir : rootlibexecdir)
2268public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002269
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002270exe = executable('udevadm',
2271 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002272 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002273 include_directories : includes,
2274 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002275 libsystemd_network,
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002276 libudev_internal],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002277 dependencies : [threads,
2278 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002279 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002280 libacl,
2281 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002282 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002283 install : true,
2284 install_dir : rootbindir)
2285public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002286
2287executable('systemd-shutdown',
2288 systemd_shutdown_sources,
2289 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002290 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002291 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002292 install : true,
2293 install_dir : rootlibexecdir)
2294
2295executable('systemd-update-done',
2296 'src/update-done/update-done.c',
2297 include_directories : includes,
2298 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002299 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002300 install : true,
2301 install_dir : rootlibexecdir)
2302
2303executable('systemd-update-utmp',
2304 'src/update-utmp/update-utmp.c',
2305 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002306 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002307 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002308 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002309 install : true,
2310 install_dir : rootlibexecdir)
2311
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002312if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002313 executable('systemd-modules-load',
2314 'src/modules-load/modules-load.c',
2315 include_directories : includes,
2316 link_with : [libshared],
2317 dependencies : [libkmod],
2318 install_rpath : rootlibexecdir,
2319 install : true,
2320 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002321
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002322 meson.add_install_script('sh', '-c',
2323 mkdir_p.format(modulesloaddir))
2324 meson.add_install_script('sh', '-c',
2325 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002326endif
2327
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002328exe = executable('systemd-nspawn',
2329 systemd_nspawn_sources,
2330 'src/core/mount-setup.c', # FIXME: use a variable?
2331 'src/core/mount-setup.h',
2332 'src/core/loopback-setup.c',
2333 'src/core/loopback-setup.h',
2334 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002335 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002336 dependencies : [libacl,
2337 libblkid,
2338 libseccomp,
2339 libselinux],
2340 install_rpath : rootlibexecdir,
2341 install : true)
2342public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002343
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002344if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002345 executable('systemd-networkd',
2346 systemd_networkd_sources,
2347 include_directories : includes,
2348 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002349 libsystemd_network,
2350 libudev_internal,
2351 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002352 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002353 install_rpath : rootlibexecdir,
2354 install : true,
2355 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002356
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002357 executable('systemd-networkd-wait-online',
2358 systemd_networkd_wait_online_sources,
2359 include_directories : includes,
2360 link_with : [libnetworkd_core,
2361 libshared],
2362 install_rpath : rootlibexecdir,
2363 install : true,
2364 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002365
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002366 exe = executable('networkctl',
2367 networkctl_sources,
2368 include_directories : includes,
2369 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002370 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002371 install_rpath : rootlibexecdir,
2372 install : true,
2373 install_dir : rootbindir)
2374 public_programs += [exe]
2375endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002376
2377executable('systemd-sulogin-shell',
2378 ['src/sulogin-shell/sulogin-shell.c'],
2379 include_directories : includes,
2380 link_with : [libshared],
2381 install_rpath : rootlibexecdir,
2382 install : true,
2383 install_dir : rootlibexecdir)
2384
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002385############################################################
2386
2387foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002388 sources = tuple[0]
2389 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2390 dependencies = tuple[2]
2391 condition = tuple.length() >= 4 ? tuple[3] : ''
2392 type = tuple.length() >= 5 ? tuple[4] : ''
2393 defs = tuple.length() >= 6 ? tuple[5] : []
2394 incs = tuple.length() >= 7 ? tuple[6] : includes
2395 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002396
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002397 name = sources[0].split('/')[-1].split('.')[0]
2398 if type.startswith('timeout=')
2399 timeout = type.split('=')[1].to_int()
2400 type = ''
2401 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002402
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002403 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002404 exe = executable(
2405 name,
2406 sources,
2407 include_directories : incs,
2408 link_with : link_with,
2409 dependencies : dependencies,
2410 c_args : defs,
2411 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002412 install : install_tests,
2413 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002414
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002415 if type == 'manual'
2416 message('@0@ is a manual test'.format(name))
2417 elif type == 'unsafe' and want_tests != 'unsafe'
2418 message('@0@ is an unsafe test'.format(name))
2419 else
2420 test(name, exe,
2421 env : test_env,
2422 timeout : timeout)
2423 endif
2424 else
2425 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2426 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002427endforeach
2428
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002429test_libsystemd_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002430 'test-libsystemd-sym',
2431 test_libsystemd_sym_c,
2432 include_directories : includes,
2433 link_with : [libsystemd],
2434 install : install_tests,
2435 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002436test('test-libsystemd-sym',
2437 test_libsystemd_sym)
2438
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002439test_libudev_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002440 'test-libudev-sym',
2441 test_libudev_sym_c,
2442 include_directories : includes,
2443 c_args : ['-Wno-deprecated-declarations'],
2444 link_with : [libudev],
2445 install : install_tests,
2446 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002447test('test-libudev-sym',
2448 test_libudev_sym)
2449
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002450############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002451
2452make_directive_index_py = find_program('tools/make-directive-index.py')
2453make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002454xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002455hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002456
2457subdir('units')
2458subdir('sysctl.d')
2459subdir('sysusers.d')
2460subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002461subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002462subdir('hwdb')
2463subdir('network')
2464subdir('man')
2465subdir('shell-completion/bash')
2466subdir('shell-completion/zsh')
2467subdir('docs/sysvinit')
2468subdir('docs/var-log')
2469
2470# FIXME: figure out if the warning is true:
2471# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2472install_subdir('factory/etc',
2473 install_dir : factorydir)
2474
2475
2476install_data('xorg/50-systemd-user.sh',
2477 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002478install_data('modprobe.d/systemd.conf',
2479 install_dir : modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002480install_data('README',
2481 'NEWS',
2482 'CODING_STYLE',
2483 'DISTRO_PORTING',
2484 'ENVIRONMENT.md',
2485 'LICENSE.GPL2',
2486 'LICENSE.LGPL2.1',
2487 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2488 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002489
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002490meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2491meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2492
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002493############################################################
2494
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002495meson_check_help = find_program('tools/meson-check-help.sh')
2496
2497foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002498 name = exec.full_path().split('/')[-1]
2499 test('check-help-' + name,
2500 meson_check_help,
2501 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002502endforeach
2503
2504############################################################
2505
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002506if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002507 all_files = run_command(
2508 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002509 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002510 'ls-files',
2511 ':/*.[ch]'])
2512 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002513
userwithuide85a6902017-08-09 13:41:44 +00002514 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002515 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002516 output : 'tags',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002517 command : ['env', 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002518 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002519 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002520 output : 'ctags',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002521 command : ['env', 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002522endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002523
2524if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002525 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002526 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002527 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002528 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002529endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002530
2531if git.found()
2532 git_head = run_command(
2533 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002534 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002535 'rev-parse', 'HEAD']).stdout().strip()
2536 git_head_short = run_command(
2537 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002538 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002539 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2540
2541 run_target(
2542 'git-snapshot',
2543 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002544 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002545 git_head_short),
2546 '--prefix', 'systemd-@0@/'.format(git_head),
2547 'HEAD'])
2548endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002549
2550############################################################
2551
2552status = [
2553 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2554
Yu Watanabe359b4962017-11-25 20:35:24 +09002555 'prefix directory: @0@'.format(prefixdir),
2556 'rootprefix directory: @0@'.format(rootprefixdir),
2557 'sysconf directory: @0@'.format(sysconfdir),
2558 'include directory: @0@'.format(includedir),
2559 'lib directory: @0@'.format(libdir),
2560 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002561 'SysV init scripts: @0@'.format(sysvinit_path),
2562 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002563 'PAM modules directory: @0@'.format(pamlibdir),
2564 'PAM configuration directory: @0@'.format(pamconfdir),
2565 'RPM macros directory: @0@'.format(rpmmacrosdir),
2566 'modprobe.d directory: @0@'.format(modprobedir),
2567 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2568 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2569 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2570 'bash completions directory: @0@'.format(bashcompletiondir),
2571 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002572 'extra start script: @0@'.format(get_option('rc-local')),
2573 'extra stop script: @0@'.format(get_option('halt-local')),
2574 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2575 get_option('debug-tty')),
2576 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002577 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002578 'maximum system UID: @0@'.format(system_uid_max),
2579 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002580 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2581 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2582 'minimum container UID base: @0@'.format(container_uid_base_min),
2583 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002584 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002585 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002586 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002587 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002588 'nobody user name: @0@'.format(nobody_user),
2589 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002590 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002591 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002592
2593 'default DNSSEC mode: @0@'.format(default_dnssec),
2594 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2595 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2596
2597alt_dns_servers = '\n '.join(dns_servers.split(' '))
2598alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2599status += [
2600 'default DNS servers: @0@'.format(alt_dns_servers),
2601 'default NTP servers: @0@'.format(alt_ntp_servers)]
2602
2603alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2604 '@@0@'.format(time_epoch)).stdout().strip()
2605status += [
2606 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2607
2608# TODO:
2609# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2610# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2611# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2612
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002613if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002614 status += [
2615 'efi arch: @0@'.format(efi_arch)]
2616
2617 if have_gnu_efi
2618 status += [
2619 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2620 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002621 'EFI lib directory: @0@'.format(efi_libdir),
2622 'EFI lds directory: @0@'.format(efi_ldsdir),
2623 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002624 endif
2625endif
2626
2627found = []
2628missing = []
2629
2630foreach tuple : [
2631 ['libcryptsetup'],
2632 ['PAM'],
2633 ['AUDIT'],
2634 ['IMA'],
2635 ['AppArmor'],
2636 ['SELinux'],
2637 ['SECCOMP'],
2638 ['SMACK'],
2639 ['zlib'],
2640 ['xz'],
2641 ['lz4'],
2642 ['bzip2'],
2643 ['ACL'],
2644 ['gcrypt'],
2645 ['qrencode'],
2646 ['microhttpd'],
2647 ['gnutls'],
2648 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002649 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002650 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002651 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002652 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002653 ['libiptc'],
2654 ['elfutils'],
2655 ['binfmt'],
2656 ['vconsole'],
2657 ['quotacheck'],
2658 ['tmpfiles'],
2659 ['environment.d'],
2660 ['sysusers'],
2661 ['firstboot'],
2662 ['randomseed'],
2663 ['backlight'],
2664 ['rfkill'],
2665 ['logind'],
2666 ['machined'],
2667 ['importd'],
2668 ['hostnamed'],
2669 ['timedated'],
2670 ['timesyncd'],
2671 ['localed'],
2672 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002673 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002674 ['coredump'],
2675 ['polkit'],
2676 ['legacy pkla', install_polkit_pkla],
2677 ['efi'],
2678 ['gnu-efi', have_gnu_efi],
2679 ['kmod'],
2680 ['xkbcommon'],
2681 ['blkid'],
2682 ['dbus'],
2683 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002684 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002685 ['hwdb'],
2686 ['tpm'],
2687 ['man pages', want_man],
2688 ['html pages', want_html],
2689 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002690 ['split /usr', conf.get('HAVE_SPLIT_USR') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002691 ['SysV compat'],
2692 ['utmp'],
2693 ['ldconfig'],
2694 ['hibernate'],
2695 ['adm group', get_option('adm-group')],
2696 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002697 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002698 ['debug hashmap'],
2699 ['debug mmap cache'],
2700]
2701
2702 cond = tuple.get(1, '')
2703 if cond == ''
2704 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2705 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002706 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002707 endif
2708 if cond
2709 found += [tuple[0]]
2710 else
2711 missing += [tuple[0]]
2712 endif
2713endforeach
2714
2715status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002716 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002717 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002718 '',
2719 'disabled features: @0@'.format(', '.join(missing)),
2720 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002721message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002722
2723if rootprefixdir != rootprefix_default
2724 message('WARNING:\n' +
2725 ' Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2726 ' systemd used fixed names for unit file directories and other paths, so anything\n' +
2727 ' except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
2728endif