blob: c582c1b4ee3b706844b67608a2fc61eeaa0dbbe6 [file] [log] [blame]
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01001# SPDX-License-Identifier: LGPL-2.1+
2#
3# Copyright 2017 Zbigniew Jędrzejewski-Szmek
4#
5# systemd is free software; you can redistribute it and/or modify it
6# under the terms of the GNU Lesser General Public License as published by
7# the Free Software Foundation; either version 2.1 of the License, or
8# (at your option) any later version.
9#
10# systemd is distributed in the hope that it will be useful, but
11# WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13# Lesser General Public License for more details.
14#
15# You should have received a copy of the GNU Lesser General Public License
16# along with systemd; If not, see <http://www.gnu.org/licenses/>.
17
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040018project('systemd', 'c',
Lennart Poetteringcbd73c62017-12-11 16:10:25 +010019 version : '236',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040020 license : 'LGPLv2+',
21 default_options: [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040022 'c_std=gnu99',
23 'prefix=/usr',
24 'sysconfdir=/etc',
25 'localstatedir=/var',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040026 ],
Zbigniew Jędrzejewski-Szmek86ea8d72017-11-20 08:08:43 +010027 meson_version : '>= 0.41',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040028 )
29
Lennart Poetteringcbd73c62017-12-11 16:10:25 +010030libsystemd_version = '0.20.0'
31libudev_version = '1.6.8'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020032
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040033# We need the same data in three different formats, ugh!
34# Also, for hysterical reasons, we use different variable
35# names, sometimes. Not all variables are included in every
36# set. Ugh, ugh, ugh!
37conf = configuration_data()
38conf.set_quoted('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version())
39conf.set_quoted('PACKAGE_VERSION', meson.project_version())
40
41substs = configuration_data()
42substs.set('PACKAGE_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
43substs.set('PACKAGE_VERSION', meson.project_version())
44
45m4_defines = []
46
47#####################################################################
48
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040049# Try to install the git pre-commit hook
50git_hook = run_command(join_paths(meson.source_root(), 'tools/add-git-hook.sh'))
51if git_hook.returncode() == 0
52 message(git_hook.stdout().strip())
53endif
54
55#####################################################################
56
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010057split_usr = get_option('split-usr')
58conf.set10('HAVE_SPLIT_USR', split_usr)
59
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010060rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010061# Unusual rootprefixdir values are used by some distros
62# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010063rootprefix_default = get_option('split-usr') ? '/' : '/usr'
64if rootprefixdir == ''
65 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010066endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040067
68sysvinit_path = get_option('sysvinit-path')
69sysvrcnd_path = get_option('sysvrcnd-path')
Max Harmathy54248242017-12-15 16:05:25 +010070have = sysvinit_path != '' and sysvrcnd_path != ''
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020071conf.set10('HAVE_SYSV_COMPAT', have,
72 description : 'SysV init scripts and rcN.d links are supported')
73m4_defines += have ? ['-DHAVE_SYSV_COMPAT'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040074
75# join_paths ignore the preceding arguments if an absolute component is
76# encountered, so this should canonicalize various paths when they are
77# absolute or relative.
78prefixdir = get_option('prefix')
79if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040080 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040081endif
82bindir = join_paths(prefixdir, get_option('bindir'))
83libdir = join_paths(prefixdir, get_option('libdir'))
84sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
85includedir = join_paths(prefixdir, get_option('includedir'))
86datadir = join_paths(prefixdir, get_option('datadir'))
87localstatedir = join_paths('/', get_option('localstatedir'))
88
89rootbindir = join_paths(rootprefixdir, 'bin')
90rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
91
92rootlibdir = get_option('rootlibdir')
93if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040094 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040095endif
96
97# Dirs of external packages
Michael Bieble17e5ba2017-04-13 10:30:56 -040098pkgconfigdatadir = join_paths(datadir, 'pkgconfig')
99pkgconfiglibdir = join_paths(libdir, 'pkgconfig')
100polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
101polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
102polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
103varlogdir = join_paths(localstatedir, 'log')
104xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900105rpmmacrosdir = get_option('rpmmacrosdir')
106if rpmmacrosdir != 'no'
107 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
108endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200109modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400110
111# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400112pkgdatadir = join_paths(datadir, 'systemd')
113environmentdir = join_paths(prefixdir, 'lib/environment.d')
114pkgsysconfdir = join_paths(sysconfdir, 'systemd')
115userunitdir = join_paths(prefixdir, 'lib/systemd/user')
116userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
117tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
118sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
119sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
120binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
121modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
122networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
123pkgincludedir = join_paths(includedir, 'systemd')
124systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
125usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
126systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
127userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
128systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
129systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
130systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
131systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
132udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
133udevhomedir = udevlibexecdir
134udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
135udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
136catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
137kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
138factorydir = join_paths(datadir, 'factory')
139docdir = join_paths(datadir, 'doc/systemd')
140bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
141testsdir = join_paths(prefixdir, 'lib/systemd/tests')
142systemdstatedir = join_paths(localstatedir, 'lib/systemd')
143catalogstatedir = join_paths(systemdstatedir, 'catalog')
144randomseeddir = join_paths(localstatedir, 'lib/systemd')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400145
146dbuspolicydir = get_option('dbuspolicydir')
147if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400148 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400149endif
150
151dbussessionservicedir = get_option('dbussessionservicedir')
152if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400153 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400154endif
155
156dbussystemservicedir = get_option('dbussystemservicedir')
157if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400158 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400159endif
160
161pamlibdir = get_option('pamlibdir')
162if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400163 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400164endif
165
166pamconfdir = get_option('pamconfdir')
167if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400168 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400169endif
170
171conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400172conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400173conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
174conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
175conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400176conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
177conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400178conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400179conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
180conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400181conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
182conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
183conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
184conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100185conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100186conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400187conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
188conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
189conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
190conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
191conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100192conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400193conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400194conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
195conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400196conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
197conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
198conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
199conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
200conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
201conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400202conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
203conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400204conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400205conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400206conf.set_quoted('LIBDIR', libdir)
207conf.set_quoted('ROOTLIBDIR', rootlibdir)
208conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
209conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400210conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
211conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
212conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
213conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
214conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
215conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400216
217conf.set_quoted('ABS_BUILD_DIR', meson.build_root())
218conf.set_quoted('ABS_SRC_DIR', meson.source_root())
219
220substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400221substs.set('exec_prefix', prefixdir)
222substs.set('libdir', libdir)
223substs.set('rootlibdir', rootlibdir)
224substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400225substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400226substs.set('bindir', bindir)
227substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400228substs.set('rootlibexecdir', rootlibexecdir)
229substs.set('systemunitdir', systemunitdir)
230substs.set('userunitdir', userunitdir)
231substs.set('systempresetdir', systempresetdir)
232substs.set('userpresetdir', userpresetdir)
233substs.set('udevhwdbdir', udevhwdbdir)
234substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400235substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400236substs.set('catalogdir', catalogdir)
237substs.set('tmpfilesdir', tmpfilesdir)
238substs.set('sysusersdir', sysusersdir)
239substs.set('sysctldir', sysctldir)
240substs.set('binfmtdir', binfmtdir)
241substs.set('modulesloaddir', modulesloaddir)
242substs.set('systemgeneratordir', systemgeneratordir)
243substs.set('usergeneratordir', usergeneratordir)
244substs.set('systemenvgeneratordir', systemenvgeneratordir)
245substs.set('userenvgeneratordir', userenvgeneratordir)
246substs.set('systemshutdowndir', systemshutdowndir)
247substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400248substs.set('VARLOGDIR', varlogdir)
249substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400250substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
251substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400252substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
253substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
254substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
255substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400256
257#####################################################################
258
259cc = meson.get_compiler('c')
260pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400261check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400262
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400263cxx = find_program('c++', required : false)
264if cxx.found()
265 # Used only for tests
266 add_languages('cpp')
267endif
268
Zbigniew Jędrzejewski-Szmek75cf1d62017-07-04 17:59:15 -0400269foreach arg : ['-Wextra',
Zbigniew Jędrzejewski-Szmek70160ce2017-10-03 12:11:49 +0200270 '-Werror=undef',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400271 '-Wlogical-op',
272 '-Wmissing-include-dirs',
273 '-Wold-style-definition',
274 '-Wpointer-arith',
275 '-Winit-self',
276 '-Wdeclaration-after-statement',
277 '-Wfloat-equal',
278 '-Wsuggest-attribute=noreturn',
279 '-Werror=missing-prototypes',
280 '-Werror=implicit-function-declaration',
281 '-Werror=missing-declarations',
282 '-Werror=return-type',
283 '-Werror=incompatible-pointer-types',
284 '-Werror=format=2',
285 '-Wstrict-prototypes',
286 '-Wredundant-decls',
287 '-Wmissing-noreturn',
Zbigniew Jędrzejewski-Szmek97279d82017-11-20 14:23:40 +0100288 '-Wimplicit-fallthrough=5',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400289 '-Wshadow',
290 '-Wendif-labels',
291 '-Wstrict-aliasing=2',
292 '-Wwrite-strings',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400293 '-Werror=overflow',
294 '-Wdate-time',
295 '-Wnested-externs',
296 '-ffast-math',
297 '-fno-common',
298 '-fdiagnostics-show-option',
299 '-fno-strict-aliasing',
300 '-fvisibility=hidden',
301 '-fstack-protector',
302 '-fstack-protector-strong',
303 '-fPIE',
304 '--param=ssp-buffer-size=4',
305 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400306 if cc.has_argument(arg)
307 add_project_arguments(arg, language : 'c')
308 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400309endforeach
310
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400311# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
312# arguments, just emits a warnings. So test for the "positive" version instead.
313foreach arg : ['unused-parameter',
314 'missing-field-initializers',
315 'unused-result',
Zbigniew Jędrzejewski-Szmekfb1b5882017-09-04 19:49:12 +0300316 'format-signedness',
317 'error=nonnull', # work-around for gcc 7.1 turning this on on its own
318 ]
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400319 if cc.has_argument('-W' + arg)
320 add_project_arguments('-Wno-' + arg, language : 'c')
321 endif
322endforeach
323
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400324if cc.compiles('
325 #include <time.h>
326 #include <inttypes.h>
327 typedef uint64_t usec_t;
328 usec_t now(clockid_t clock);
329 int main(void) {
330 struct timespec now;
331 return 0;
332 }
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400333', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400334 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400335endif
336
337if cc.get_id() == 'clang'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400338 foreach arg : ['-Wno-typedef-redefinition',
339 '-Wno-gnu-variable-sized-type-not-at-end',
340 ]
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400341 if cc.has_argument(arg,
342 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400343 add_project_arguments(arg, language : 'c')
344 endif
345 endforeach
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400346endif
347
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400348link_test_c = files('tools/meson-link-test.c')
349
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400350# --as-needed and --no-undefined are provided by meson by default,
351# run mesonconf to see what is enabled
352foreach arg : ['-Wl,-z,relro',
353 '-Wl,-z,now',
354 '-pie',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400355 ]
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400356
357 have = run_command(check_compilation_sh,
358 cc.cmd_array(), '-x', 'c', arg,
359 '-include', link_test_c).returncode() == 0
360 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
361 if have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400362 add_project_link_arguments(arg, language : 'c')
363 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400364endforeach
365
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400366if get_option('buildtype') != 'debug'
367 foreach arg : ['-ffunction-sections',
368 '-fdata-sections']
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400369 if cc.has_argument(arg,
370 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400371 add_project_arguments(arg, language : 'c')
372 endif
373 endforeach
374
375 foreach arg : ['-Wl,--gc-sections']
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400376 have = run_command(check_compilation_sh,
377 cc.cmd_array(), '-x', 'c', arg,
378 '-include', link_test_c).returncode() == 0
379 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
380 if have
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400381 add_project_link_arguments(arg, language : 'c')
382 endif
383 endforeach
384endif
385
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400386cpp = ' '.join(cc.cmd_array()) + ' -E'
387
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400388#####################################################################
389# compilation result tests
390
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400391conf.set('_GNU_SOURCE', true)
392conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400393
394conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
395conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
396conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
397conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
398conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
399conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
400conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
401
402decl_headers = '''
403#include <uchar.h>
404#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000405#include <linux/fib_rules.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400406'''
407# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
408
409foreach decl : ['char16_t',
410 'char32_t',
411 'key_serial_t',
412 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000413 'struct fib_rule_uid_range',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400414 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400415
416 # We get -1 if the size cannot be determined
417 have = cc.sizeof(decl, prefix : decl_headers) > 0
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200418 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400419endforeach
420
421foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
422 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
423 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
424 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530425 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400426 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
427 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
428 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
429 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
430 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530431 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400432 # if_tunnel.h is buggy and cannot be included on its own
433 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
434 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
435 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
436 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
437 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
438 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
439 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530440 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400441 ['NDA_IFINDEX', 'linux/neighbour.h'],
442 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000443 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400444 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530445 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400446 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400447 prefix = decl.length() > 2 ? decl[2] : ''
448 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200449 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400450endforeach
451
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400452foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200453 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400454endforeach
455
456foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100457 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100458 ['gettid', '''#include <sys/types.h>
459 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100460 ['pivot_root', '''#include <stdlib.h>
461 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100462 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400463 #include <sys/stat.h>
464 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100465 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100466 ['renameat2', '''#include <stdio.h>
467 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400468 ['kcmp', '''#include <linux/kcmp.h>'''],
469 ['keyctl', '''#include <sys/types.h>
470 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100471 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400472 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200473 ['bpf', '''#include <sys/syscall.h>
474 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmek38f1ae02017-04-19 16:14:16 -0400475 ['explicit_bzero' , '''#include <string.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400476]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400477
Lennart Poettering85db59b2017-12-25 12:01:14 +0100478 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200479 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400480endforeach
481
Lennart Poettering85db59b2017-12-25 12:01:14 +0100482if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200483 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200484 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400485else
486 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200487 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200488 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400489endif
490
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400491#####################################################################
492
493sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400494awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400495m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400496stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400497git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400498
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400499meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400500mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400501test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
502splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400503
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400504# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
505# /usr/sbin, /sbin, and fall back to the default from middle column.
506progs = [['telinit', '/lib/sysvinit/telinit'],
507 ['quotaon', '/usr/sbin/quotaon' ],
508 ['quotacheck', '/usr/sbin/quotacheck' ],
509 ['kill', '/usr/bin/kill' ],
510 ['kmod', '/usr/bin/kmod' ],
511 ['kexec', '/usr/sbin/kexec' ],
512 ['sulogin', '/usr/sbin/sulogin' ],
513 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
514 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
515 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
516 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
517 ]
518foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400519 path = get_option(prog[0] + '-path')
520 if path != ''
521 message('Using @1@ for @0@'.format(prog[0], path))
522 else
523 exe = find_program(prog[0],
524 '/usr/sbin/' + prog[0],
525 '/sbin/' + prog[0],
526 required: false)
527 path = exe.found() ? exe.path() : prog[1]
528 endif
529 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
530 conf.set_quoted(name, path)
531 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400532endforeach
533
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400534if run_command('ln', '--relative', '--help').returncode() != 0
535 error('ln does not support --relative')
536endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400537
538############################################################
539
540gperf = find_program('gperf')
541
542gperf_test_format = '''
543#include <string.h>
544const char * in_word_set(const char *, @0@);
545@1@
546'''
547gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
548gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
549gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
550if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400551 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400552else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400553 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
554 if cc.compiles(gperf_test)
555 gperf_len_type = 'unsigned'
556 else
557 error('unable to determine gperf len type')
558 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400559endif
560message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400561conf.set('GPERF_LEN_TYPE', gperf_len_type,
562 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400563
564############################################################
565
566if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400567 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400568endif
569foreach header : ['linux/btrfs.h',
570 'linux/memfd.h',
571 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200572 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400573 'valgrind/memcheck.h',
574 'valgrind/valgrind.h',
575 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400576
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200577 conf.set10('HAVE_' + header.underscorify().to_upper(),
578 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400579endforeach
580
581############################################################
582
583conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400584conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
585gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400586
587default_hierarchy = get_option('default-hierarchy')
588conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
589 description : 'default cgroup hierarchy as string')
590if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400591 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400592elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400593 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400594else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400595 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400596endif
597
598time_epoch = get_option('time-epoch')
599if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400600 NEWS = files('NEWS')
601 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400602endif
603time_epoch = time_epoch.to_int()
604conf.set('TIME_EPOCH', time_epoch)
605
606system_uid_max = get_option('system-uid-max')
607if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400608 system_uid_max = run_command(
609 awk,
610 'BEGIN { uid=999 } /^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
611 '/etc/login.defs').stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400612endif
613system_uid_max = system_uid_max.to_int()
614conf.set('SYSTEM_UID_MAX', system_uid_max)
615substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400616message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400617
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400618system_gid_max = get_option('system-gid-max')
619if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400620 system_gid_max = run_command(
621 awk,
622 'BEGIN { gid=999 } /^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
623 '/etc/login.defs').stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400624endif
625system_gid_max = system_gid_max.to_int()
626conf.set('SYSTEM_GID_MAX', system_gid_max)
627substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400628message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400629
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100630dynamic_uid_min = get_option('dynamic-uid-min').to_int()
631dynamic_uid_max = get_option('dynamic-uid-max').to_int()
632conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
633conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
634substs.set('dynamicuidmin', dynamic_uid_min)
635substs.set('dynamicuidmax', dynamic_uid_max)
636
637container_uid_base_min = get_option('container-uid-base-min').to_int()
638container_uid_base_max = get_option('container-uid-base-max').to_int()
639conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
640conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
641substs.set('containeruidbasemin', container_uid_base_min)
642substs.set('containeruidbasemax', container_uid_base_max)
643
Lennart Poetteringafde4572017-12-05 11:00:24 +0100644nobody_user = get_option('nobody-user')
645nobody_group = get_option('nobody-group')
646
647getent_result = run_command('getent', 'passwd', '65534')
648if getent_result.returncode() == 0
649 name = getent_result.stdout().split(':')[0]
650 if name != nobody_user
651 message('WARNING:\n' +
652 ' 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) +
653 ' Your build will result in an user table setup that is incompatible with the local system.')
654 endif
655endif
656id_result = run_command('id', '-u', nobody_user)
657if id_result.returncode() == 0
658 id = id_result.stdout().to_int()
659 if id != 65534
660 message('WARNING:\n' +
661 ' 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) +
662 ' Your build will result in an user table setup that is incompatible with the local system.')
663 endif
664endif
665
666getent_result = run_command('getent', 'group', '65534')
667if getent_result.returncode() == 0
668 name = getent_result.stdout().split(':')[0]
669 if name != nobody_group
670 message('WARNING:\n' +
671 ' 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) +
672 ' Your build will result in an group table setup that is incompatible with the local system.')
673 endif
674endif
675id_result = run_command('id', '-g', nobody_group)
676if id_result.returncode() == 0
677 id = id_result.stdout().to_int()
678 if id != 65534
679 message('WARNING:\n' +
680 ' 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) +
681 ' Your build will result in an group table setup that is incompatible with the local system.')
682 endif
683endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900684if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
685 message('WARNING:\n' +
686 ' The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
687 ' Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
688endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100689
690conf.set_quoted('NOBODY_USER_NAME', nobody_user)
691conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900692substs.set('NOBODY_USER_NAME', nobody_user)
693substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100694
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400695tty_gid = get_option('tty-gid')
696conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400697substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400698
Ikey Doherty84786b82017-12-03 12:28:23 +0000699# Ensure provided GID argument is numeric, otherwise fallback to default assignment
700if get_option('users-gid') != ''
Yu Watanabed6806872017-12-05 14:01:39 +0900701 users_gid = get_option('users-gid').to_int()
Ikey Doherty84786b82017-12-03 12:28:23 +0000702else
Yu Watanabed6806872017-12-05 14:01:39 +0900703 users_gid = '-'
Ikey Doherty84786b82017-12-03 12:28:23 +0000704endif
705substs.set('USERS_GID', users_gid)
706
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400707if get_option('adm-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400708 m4_defines += ['-DENABLE_ADM_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400709endif
710
711if get_option('wheel-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400712 m4_defines += ['-DENABLE_WHEEL_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400713endif
714
715substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700716substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400717
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400718kill_user_processes = get_option('default-kill-user-processes')
719conf.set10('KILL_USER_PROCESSES', kill_user_processes)
720substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400721
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400722dns_servers = get_option('dns-servers')
723conf.set_quoted('DNS_SERVERS', dns_servers)
724substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400725
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400726ntp_servers = get_option('ntp-servers')
727conf.set_quoted('NTP_SERVERS', ntp_servers)
728substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400729
730conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
731
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400732substs.set('SUSHELL', get_option('debug-shell'))
733substs.set('DEBUGTTY', get_option('debug-tty'))
734
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400735debug = get_option('debug')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200736enable_debug_hashmap = false
737enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400738if debug != ''
739 foreach name : debug.split(',')
740 if name == 'hashmap'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200741 enable_debug_hashmap = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400742 elif name == 'mmap-cache'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200743 enable_debug_mmap_cache = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400744 else
745 message('unknown debug option "@0@", ignoring'.format(name))
746 endif
747 endforeach
748endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200749conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
750conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400751
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400752#####################################################################
753
754threads = dependency('threads')
755librt = cc.find_library('rt')
756libm = cc.find_library('m')
757libdl = cc.find_library('dl')
758libcrypt = cc.find_library('crypt')
759
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400760libcap = dependency('libcap', required : false)
761if not libcap.found()
762 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
763 libcap = cc.find_library('cap')
764endif
765
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400766libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekd6e80962017-09-15 14:47:57 +0200767 version : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400768
769want_seccomp = get_option('seccomp')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400770if want_seccomp != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400771 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400772 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400773 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200774 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400775else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200776 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400777 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400778endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200779conf.set10('HAVE_SECCOMP', have)
780m4_defines += have ? ['-DHAVE_SECCOMP'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400781
782want_selinux = get_option('selinux')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400783if want_selinux != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400784 libselinux = dependency('libselinux',
785 version : '>= 2.1.9',
786 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200787 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400788else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200789 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400790 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400791endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200792conf.set10('HAVE_SELINUX', have)
793m4_defines += have ? ['-DHAVE_SELINUX'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400794
795want_apparmor = get_option('apparmor')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400796if want_apparmor != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400797 libapparmor = dependency('libapparmor',
798 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200799 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400800else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200801 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400802 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400803endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200804conf.set10('HAVE_APPARMOR', have)
805m4_defines += have ? ['-DHAVE_APPARMOR'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400806
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400807smack_run_label = get_option('smack-run-label')
808if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400809 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
810 m4_defines += ['-DHAVE_SMACK_RUN_LABEL']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400811endif
812
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400813want_polkit = get_option('polkit')
814install_polkit = false
815install_polkit_pkla = false
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400816if want_polkit != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400817 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400818
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400819 libpolkit = dependency('polkit-gobject-1',
820 required : false)
821 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
822 message('Old polkit detected, will install pkla files')
823 install_polkit_pkla = true
824 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400825endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200826conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400827
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400828want_acl = get_option('acl')
829if want_acl != 'false'
830 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200831 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400832else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200833 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400834 libacl = []
835endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200836conf.set10('HAVE_ACL', have)
837m4_defines += have ? ['-DHAVE_ACL'] : []
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400838
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400839want_audit = get_option('audit')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400840if want_audit != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400841 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200842 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400843else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200844 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400845 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400846endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200847conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400848
849want_blkid = get_option('blkid')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400850if want_blkid != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400851 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200852 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400853else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200854 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400855 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400856endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200857conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400858
859want_kmod = get_option('kmod')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400860if want_kmod != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400861 libkmod = dependency('libkmod',
862 version : '>= 15',
863 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200864 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400865else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200866 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400867 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400868endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200869conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400870
871want_pam = get_option('pam')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400872if want_pam != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400873 libpam = cc.find_library('pam', required : want_pam == 'true')
874 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200875 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400876else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200877 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400878 libpam = []
879 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400880endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200881conf.set10('HAVE_PAM', have)
882m4_defines += have ? ['-DHAVE_PAM'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400883
884want_microhttpd = get_option('microhttpd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400885if want_microhttpd != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400886 libmicrohttpd = dependency('libmicrohttpd',
887 version : '>= 0.9.33',
888 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200889 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400890else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200891 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400892 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400893endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200894conf.set10('HAVE_MICROHTTPD', have)
895m4_defines += have ? ['-DHAVE_MICROHTTPD'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400896
897want_libcryptsetup = get_option('libcryptsetup')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400898if want_libcryptsetup != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400899 libcryptsetup = dependency('libcryptsetup',
900 version : '>= 1.6.0',
901 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200902 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400903else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200904 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400905 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400906endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200907conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400908
909want_libcurl = get_option('libcurl')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400910if want_libcurl != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400911 libcurl = dependency('libcurl',
912 version : '>= 7.32.0',
913 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200914 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400915else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200916 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400917 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400918endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200919conf.set10('HAVE_LIBCURL', have)
920m4_defines += have ? ['-DHAVE_LIBCURL'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400921
922want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400923want_libidn2 = get_option('libidn2')
924if want_libidn == 'true' and want_libidn2 == 'true'
925 error('libidn and libidn2 cannot be requested simultaneously')
926endif
927
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400928if want_libidn != 'false' and want_libidn2 != 'true'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400929 libidn = dependency('libidn',
930 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200931 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400932else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200933 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400934 libidn = []
935endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200936conf.set10('HAVE_LIBIDN', have)
937m4_defines += have ? ['-DHAVE_LIBIDN'] : []
938if not have and want_libidn2 != 'false'
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400939 # libidn is used for both libidn and libidn2 objects
940 libidn = dependency('libidn2',
941 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200942 have = libidn.found()
943else
944 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400945endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200946conf.set10('HAVE_LIBIDN2', have)
947m4_defines += have ? ['-DHAVE_LIBIDN2'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400948
949want_libiptc = get_option('libiptc')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400950if want_libiptc != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400951 libiptc = dependency('libiptc',
952 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200953 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400954else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200955 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400956 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400957endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200958conf.set10('HAVE_LIBIPTC', have)
959m4_defines += have ? ['-DHAVE_LIBIPTC'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400960
961want_qrencode = get_option('qrencode')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400962if want_qrencode != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400963 libqrencode = dependency('libqrencode',
964 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200965 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400966else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200967 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400968 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400969endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200970conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400971
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400972want_gcrypt = get_option('gcrypt')
973if want_gcrypt != 'false'
974 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
975 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200976 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400977else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200978 have = false
979endif
980if not have
981 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400982 libgcrypt = []
983 libgpg_error = []
984endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200985conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400986
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400987want_gnutls = get_option('gnutls')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400988if want_gnutls != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400989 libgnutls = dependency('gnutls',
990 version : '>= 3.1.4',
991 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200992 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400993else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200994 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400995 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400996endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200997conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400998
999want_elfutils = get_option('elfutils')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001000if want_elfutils != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001001 libdw = dependency('libdw',
1002 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001003 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001004else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001005 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001006 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001007endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001008conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001009
1010want_zlib = get_option('zlib')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001011if want_zlib != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001012 libz = dependency('zlib',
1013 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001014 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001015else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001016 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001017 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001018endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001019conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001020
1021want_bzip2 = get_option('bzip2')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001022if want_bzip2 != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001023 libbzip2 = cc.find_library('bz2',
1024 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001025 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001026else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001027 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001028 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001029endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001030conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001031
1032want_xz = get_option('xz')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001033if want_xz != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001034 libxz = dependency('liblzma',
1035 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001036 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001037else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001038 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001039 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001040endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001041conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001042
1043want_lz4 = get_option('lz4')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001044if want_lz4 != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001045 liblz4 = dependency('liblz4',
1046 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001047 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001048else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001049 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001050 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001051endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001052conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001053
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001054want_xkbcommon = get_option('xkbcommon')
1055if want_xkbcommon != 'false'
1056 libxkbcommon = dependency('xkbcommon',
1057 version : '>= 0.3.0',
1058 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001059 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001060else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001061 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001062 libxkbcommon = []
1063endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001064conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001065
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001066want_glib = get_option('glib')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001067if want_glib != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001068 libglib = dependency('glib-2.0',
1069 version : '>= 2.22.0',
1070 required : want_glib == 'true')
1071 libgobject = dependency('gobject-2.0',
1072 version : '>= 2.22.0',
1073 required : want_glib == 'true')
1074 libgio = dependency('gio-2.0',
1075 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001076 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001077else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001078 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001079 libglib = []
1080 libgobject = []
1081 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001082endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001083conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001084
1085want_dbus = get_option('dbus')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001086if want_dbus != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001087 libdbus = dependency('dbus-1',
1088 version : '>= 1.3.2',
1089 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001090 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001091else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001092 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001093 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001094endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001095conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001096
Yu Watanabe42303dc2017-06-18 05:22:32 +09001097default_dnssec = get_option('default-dnssec')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001098if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001099 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1100 default_dnssec = 'no'
1101endif
1102conf.set('DEFAULT_DNSSEC_MODE',
1103 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1104substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1105
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001106want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001107if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001108 have = (conf.get('HAVE_LIBCURL') == 1 and
1109 conf.get('HAVE_ZLIB') == 1 and
1110 conf.get('HAVE_BZIP2') == 1 and
1111 conf.get('HAVE_XZ') == 1 and
1112 conf.get('HAVE_GCRYPT') == 1)
1113 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001114 error('importd support was requested, but dependencies are not available')
1115 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001116else
1117 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001118endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001119conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001120
1121want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001122if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001123 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1124 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001125 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1126 # it's possible to build one without the other. Complain only if
1127 # support was explictly requested. The auxiliary files like sysusers
1128 # config should be installed when any of the programs are built.
1129 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1130 error('remote support was requested, but dependencies are not available')
1131 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001132 have = have_deps[0] or have_deps[1]
1133else
1134 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001135endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001136conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001137
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001138foreach term : ['utmp',
1139 'hibernate',
1140 'environment-d',
1141 'binfmt',
1142 'coredump',
1143 'resolve',
1144 'logind',
1145 'hostnamed',
1146 'localed',
1147 'machined',
1148 'networkd',
1149 'timedated',
1150 'timesyncd',
1151 'myhostname',
1152 'firstboot',
1153 'randomseed',
1154 'backlight',
1155 'vconsole',
1156 'quotacheck',
1157 'sysusers',
1158 'tmpfiles',
1159 'hwdb',
1160 'rfkill',
1161 'ldconfig',
1162 'efi',
1163 'tpm',
1164 'ima',
1165 'smack',
1166 'gshadow',
1167 'idn',
1168 'nss-systemd']
1169 have = get_option(term)
1170 name = 'ENABLE_' + term.underscorify().to_upper()
1171 conf.set10(name, have)
1172 m4_defines += have ? ['-D' + name] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001173endforeach
1174
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001175want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001176install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001177tests = []
1178
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001179conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', get_option('slow-tests'))
1180
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001181#####################################################################
1182
1183if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001184 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001185
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001186 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001187 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001188 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001189 elif efi_arch == 'x86_64'
1190 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001191 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001192 elif efi_arch == 'arm'
1193 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001194 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001195 elif efi_arch == 'aarch64'
1196 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001197 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001198 else
1199 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001200 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001201 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001202
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001203 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001204 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001205
1206 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001207else
1208 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001209endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001210conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001211
1212#####################################################################
1213
1214config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001215 output : 'config.h',
1216 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001217
1218includes = include_directories('src/basic',
1219 'src/shared',
1220 'src/systemd',
1221 'src/journal',
1222 'src/resolve',
1223 'src/timesync',
1224 'src/login',
1225 'src/udev',
1226 'src/libudev',
1227 'src/core',
1228 'src/libsystemd/sd-bus',
1229 'src/libsystemd/sd-device',
1230 'src/libsystemd/sd-hwdb',
1231 'src/libsystemd/sd-id128',
1232 'src/libsystemd/sd-netlink',
1233 'src/libsystemd/sd-network',
1234 'src/libsystemd-network',
Davide Cavalca5e1771a2017-08-30 08:34:44 -07001235 '.',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001236 )
1237
1238add_project_arguments('-include', 'config.h', language : 'c')
1239
1240gcrypt_util_sources = files('src/shared/gcrypt-util.h',
1241 'src/shared/gcrypt-util.c')
1242
1243subdir('po')
1244subdir('catalog')
1245subdir('src/systemd')
1246subdir('src/basic')
1247subdir('src/libsystemd')
1248subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001249subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001250subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001251
1252libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001253 'journal-core',
1254 libjournal_core_sources,
1255 journald_gperf_c,
1256 include_directories : includes,
1257 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001258
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001259libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001260libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001261 'systemd',
1262 libsystemd_internal_sources,
1263 journal_internal_sources,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001264 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001265 include_directories : includes,
1266 link_args : ['-shared',
1267 '-Wl,--version-script=' + libsystemd_sym_path],
1268 link_with : [libbasic],
1269 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001270 libgcrypt,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001271 librt,
1272 libxz,
1273 liblz4],
1274 link_depends : libsystemd_sym,
1275 install : true,
1276 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001277
1278############################################################
1279
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001280# binaries that have --help and are intended for use by humans,
1281# usually, but not always, installed in /bin.
1282public_programs = []
1283
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001284subdir('src/libudev')
1285subdir('src/shared')
1286subdir('src/core')
1287subdir('src/udev')
1288subdir('src/network')
1289
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001290subdir('src/analyze')
1291subdir('src/journal-remote')
1292subdir('src/coredump')
1293subdir('src/hostname')
1294subdir('src/import')
1295subdir('src/kernel-install')
1296subdir('src/locale')
1297subdir('src/machine')
1298subdir('src/nspawn')
1299subdir('src/resolve')
1300subdir('src/timedate')
1301subdir('src/timesync')
1302subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001303subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001304
1305subdir('src/test')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001306subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001307subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001308
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001309############################################################
1310
1311# only static linking apart from libdl, to make sure that the
1312# module is linked to all libraries that it uses.
1313test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001314 'test-dlopen',
1315 test_dlopen_c,
1316 include_directories : includes,
1317 link_with : [libbasic],
1318 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001319
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001320foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001321 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001322 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001323 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001324
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001325 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001326 if condition
1327 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001328
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001329 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1330 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001331
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001332 nss = shared_library(
1333 'nss_' + module,
1334 'src/nss-@0@/nss-@0@.c'.format(module),
1335 version : '2',
1336 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001337 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1338 link_args : ['-Wl,-z,nodelete',
1339 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001340 '-Wl,--version-script=' + version_script_arg,
1341 '-Wl,--undefined'],
1342 link_with : [libsystemd_internal,
1343 libbasic],
1344 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001345 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001346 link_depends : sym,
1347 install : true,
1348 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001349
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001350 # We cannot use shared_module because it does not support version suffix.
1351 # Unfortunately shared_library insists on creating the symlink…
1352 meson.add_install_script('sh', '-c',
1353 'rm $DESTDIR@0@/libnss_@1@.so'
1354 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001355
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001356 test('dlopen-nss_' + module,
1357 test_dlopen,
1358 args : [nss.full_path()]) # path to dlopen must include a slash
1359 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001360endforeach
1361
1362############################################################
1363
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001364executable('systemd',
1365 systemd_sources,
1366 include_directories : includes,
1367 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001368 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001369 dependencies : [threads,
1370 librt,
1371 libseccomp,
1372 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001373 libmount,
1374 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001375 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001376 install : true,
1377 install_dir : rootlibexecdir)
1378
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001379exe = executable('systemd-analyze',
1380 systemd_analyze_sources,
1381 include_directories : includes,
1382 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001383 libshared],
1384 dependencies : [threads,
1385 librt,
1386 libseccomp,
1387 libselinux,
1388 libmount,
1389 libblkid],
1390 install_rpath : rootlibexecdir,
1391 install : true)
1392public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001393
1394executable('systemd-journald',
1395 systemd_journald_sources,
1396 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001397 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001398 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001399 dependencies : [threads,
1400 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001401 liblz4,
1402 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001403 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001404 install : true,
1405 install_dir : rootlibexecdir)
1406
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001407exe = executable('systemd-cat',
1408 systemd_cat_sources,
1409 include_directories : includes,
1410 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001411 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001412 dependencies : [threads],
1413 install_rpath : rootlibexecdir,
1414 install : true)
1415public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001416
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001417exe = executable('journalctl',
1418 journalctl_sources,
1419 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001420 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001421 dependencies : [threads,
1422 libqrencode,
1423 libxz,
1424 liblz4],
1425 install_rpath : rootlibexecdir,
1426 install : true,
1427 install_dir : rootbindir)
1428public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001429
1430executable('systemd-getty-generator',
1431 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001432 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001433 link_with : [libshared],
1434 install_rpath : rootlibexecdir,
1435 install : true,
1436 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001437
1438executable('systemd-debug-generator',
1439 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001440 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001441 link_with : [libshared],
1442 install_rpath : rootlibexecdir,
1443 install : true,
1444 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001445
1446executable('systemd-fstab-generator',
1447 'src/fstab-generator/fstab-generator.c',
1448 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001449 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001450 link_with : [libshared],
1451 install_rpath : rootlibexecdir,
1452 install : true,
1453 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001454
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001455if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001456 executable('30-systemd-environment-d-generator',
1457 'src/environment-d-generator/environment-d-generator.c',
1458 include_directories : includes,
1459 link_with : [libshared],
1460 install_rpath : rootlibexecdir,
1461 install : true,
1462 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001463
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001464 meson.add_install_script(meson_make_symlink,
1465 join_paths(sysconfdir, 'environment'),
1466 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001467endif
1468
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001469if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001470 executable('systemd-hibernate-resume-generator',
1471 'src/hibernate-resume/hibernate-resume-generator.c',
1472 include_directories : includes,
1473 link_with : [libshared],
1474 install_rpath : rootlibexecdir,
1475 install : true,
1476 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001477
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001478 executable('systemd-hibernate-resume',
1479 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001480 include_directories : includes,
1481 link_with : [libshared],
1482 install_rpath : rootlibexecdir,
1483 install : true,
1484 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001485endif
1486
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001487if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001488 executable('systemd-gpt-auto-generator',
1489 'src/gpt-auto-generator/gpt-auto-generator.c',
1490 'src/basic/blkid-util.h',
1491 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001492 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001493 dependencies : libblkid,
1494 install_rpath : rootlibexecdir,
1495 install : true,
1496 install_dir : systemgeneratordir)
1497
1498 exe = executable('systemd-dissect',
1499 'src/dissect/dissect.c',
1500 include_directories : includes,
1501 link_with : [libshared],
1502 install_rpath : rootlibexecdir,
1503 install : true,
1504 install_dir : rootlibexecdir)
1505 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001506endif
1507
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001508if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001509 executable('systemd-resolved',
1510 systemd_resolved_sources,
Michael Biebl76c87412017-04-21 23:45:54 +02001511 gcrypt_util_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001512 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001513 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001514 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001515 libgcrypt,
1516 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001517 libm,
1518 libidn],
1519 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001520 install : true,
1521 install_dir : rootlibexecdir)
1522
1523 exe = executable('systemd-resolve',
1524 systemd_resolve_sources,
Michael Biebl76c87412017-04-21 23:45:54 +02001525 gcrypt_util_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001526 include_directories : includes,
1527 link_with : [libshared],
1528 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001529 libgcrypt,
1530 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001531 libm,
1532 libidn],
1533 install_rpath : rootlibexecdir,
1534 install : true)
1535 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001536endif
1537
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001538if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001539 executable('systemd-logind',
1540 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001541 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001542 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001543 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001544 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001545 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001546 install_rpath : rootlibexecdir,
1547 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001548 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001549
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001550 exe = executable('loginctl',
1551 loginctl_sources,
1552 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001553 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001554 dependencies : [threads,
1555 liblz4,
1556 libxz],
1557 install_rpath : rootlibexecdir,
1558 install : true,
1559 install_dir : rootbindir)
1560 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001561
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001562 exe = executable('systemd-inhibit',
1563 'src/login/inhibit.c',
1564 include_directories : includes,
1565 link_with : [libshared],
1566 install_rpath : rootlibexecdir,
1567 install : true,
1568 install_dir : rootbindir)
1569 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001570
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001571 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001572 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1573 pam_systemd = shared_library(
1574 'pam_systemd',
1575 pam_systemd_c,
1576 name_prefix : '',
1577 include_directories : includes,
1578 link_args : ['-shared',
1579 '-Wl,--version-script=' + version_script_arg],
1580 link_with : [libsystemd_internal,
1581 libshared_static],
1582 dependencies : [threads,
1583 libpam,
1584 libpam_misc],
1585 link_depends : pam_systemd_sym,
1586 install : true,
1587 install_dir : pamlibdir)
1588
1589 test('dlopen-pam_systemd',
1590 test_dlopen,
1591 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1592 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001593endif
1594
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001595if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001596 executable('systemd-user-sessions',
1597 'src/user-sessions/user-sessions.c',
1598 include_directories : includes,
1599 link_with : [libshared],
1600 install_rpath : rootlibexecdir,
1601 install : true,
1602 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001603endif
1604
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001605if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001606 exe = executable('bootctl',
1607 'src/boot/bootctl.c',
1608 include_directories : includes,
1609 link_with : [libshared],
1610 dependencies : [libblkid],
1611 install_rpath : rootlibexecdir,
1612 install : true)
1613 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001614endif
1615
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001616exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1617 include_directories : includes,
1618 link_with : [libshared],
1619 dependencies : [threads],
1620 install_rpath : rootlibexecdir,
1621 install : true)
1622public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001623
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001624exe = executable('systemctl', 'src/systemctl/systemctl.c',
1625 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001626 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001627 dependencies : [threads,
1628 libcap,
1629 libselinux,
1630 libxz,
1631 liblz4],
1632 install_rpath : rootlibexecdir,
1633 install : true,
1634 install_dir : rootbindir)
1635public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001636
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001637if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001638 executable('systemd-backlight',
1639 'src/backlight/backlight.c',
1640 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001641 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001642 install_rpath : rootlibexecdir,
1643 install : true,
1644 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001645endif
1646
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001647if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001648 executable('systemd-rfkill',
1649 'src/rfkill/rfkill.c',
1650 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001651 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001652 install_rpath : rootlibexecdir,
1653 install : true,
1654 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001655endif
1656
1657executable('systemd-system-update-generator',
1658 'src/system-update-generator/system-update-generator.c',
1659 include_directories : includes,
1660 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001661 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001662 install : true,
1663 install_dir : systemgeneratordir)
1664
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001665if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001666 executable('systemd-cryptsetup',
1667 'src/cryptsetup/cryptsetup.c',
1668 include_directories : includes,
1669 link_with : [libshared],
1670 dependencies : [libcryptsetup],
1671 install_rpath : rootlibexecdir,
1672 install : true,
1673 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001674
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001675 executable('systemd-cryptsetup-generator',
1676 'src/cryptsetup/cryptsetup-generator.c',
1677 include_directories : includes,
1678 link_with : [libshared],
1679 dependencies : [libcryptsetup],
1680 install_rpath : rootlibexecdir,
1681 install : true,
1682 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001683
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001684 executable('systemd-veritysetup',
1685 'src/veritysetup/veritysetup.c',
1686 include_directories : includes,
1687 link_with : [libshared],
1688 dependencies : [libcryptsetup],
1689 install_rpath : rootlibexecdir,
1690 install : true,
1691 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001692
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001693 executable('systemd-veritysetup-generator',
1694 'src/veritysetup/veritysetup-generator.c',
1695 include_directories : includes,
1696 link_with : [libshared],
1697 dependencies : [libcryptsetup],
1698 install_rpath : rootlibexecdir,
1699 install : true,
1700 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001701endif
1702
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001703if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001704 executable('systemd-sysv-generator',
1705 'src/sysv-generator/sysv-generator.c',
1706 include_directories : includes,
1707 link_with : [libshared],
1708 install_rpath : rootlibexecdir,
1709 install : true,
1710 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001711
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001712 executable('systemd-rc-local-generator',
1713 'src/rc-local-generator/rc-local-generator.c',
1714 include_directories : includes,
1715 link_with : [libshared],
1716 install_rpath : rootlibexecdir,
1717 install : true,
1718 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001719endif
1720
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001721if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001722 executable('systemd-hostnamed',
1723 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001724 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001725 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001726 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001727 install : true,
1728 install_dir : rootlibexecdir)
1729
1730 exe = executable('hostnamectl',
1731 'src/hostname/hostnamectl.c',
1732 include_directories : includes,
1733 link_with : [libshared],
1734 install_rpath : rootlibexecdir,
1735 install : true)
1736 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001737endif
1738
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001739if conf.get('ENABLE_LOCALED') == 1
1740 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001741 # logind will load libxkbcommon.so dynamically on its own
1742 deps = [libdl]
1743 else
1744 deps = []
1745 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001746
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001747 executable('systemd-localed',
1748 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001749 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001750 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001751 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001752 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001753 install : true,
1754 install_dir : rootlibexecdir)
1755
1756 exe = executable('localectl',
1757 localectl_sources,
1758 include_directories : includes,
1759 link_with : [libshared],
1760 install_rpath : rootlibexecdir,
1761 install : true)
1762 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001763endif
1764
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001765if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001766 executable('systemd-timedated',
1767 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001768 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001769 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001770 install_rpath : rootlibexecdir,
1771 install : true,
1772 install_dir : rootlibexecdir)
1773
1774 exe = executable('timedatectl',
1775 'src/timedate/timedatectl.c',
1776 include_directories : includes,
1777 install_rpath : rootlibexecdir,
1778 link_with : [libshared],
1779 install : true)
1780 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001781endif
1782
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001783if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001784 executable('systemd-timesyncd',
1785 systemd_timesyncd_sources,
1786 include_directories : includes,
1787 link_with : [libshared],
1788 dependencies : [threads,
1789 libm],
1790 install_rpath : rootlibexecdir,
1791 install : true,
1792 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001793endif
1794
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001795if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001796 executable('systemd-machined',
1797 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001798 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001799 link_with : [libmachine_core,
1800 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001801 install_rpath : rootlibexecdir,
1802 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001803 install_dir : rootlibexecdir)
1804
1805 exe = executable('machinectl',
1806 'src/machine/machinectl.c',
1807 include_directories : includes,
1808 link_with : [libshared],
1809 dependencies : [threads,
1810 libxz,
1811 liblz4],
1812 install_rpath : rootlibexecdir,
1813 install : true,
1814 install_dir : rootbindir)
1815 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001816endif
1817
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001818if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001819 executable('systemd-importd',
1820 systemd_importd_sources,
1821 include_directories : includes,
1822 link_with : [libshared],
1823 dependencies : [threads],
1824 install_rpath : rootlibexecdir,
1825 install : true,
1826 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001827
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001828 systemd_pull = executable('systemd-pull',
1829 systemd_pull_sources,
1830 include_directories : includes,
1831 link_with : [libshared],
1832 dependencies : [libcurl,
1833 libz,
1834 libbzip2,
1835 libxz,
1836 libgcrypt],
1837 install_rpath : rootlibexecdir,
1838 install : true,
1839 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001840
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001841 systemd_import = executable('systemd-import',
1842 systemd_import_sources,
1843 include_directories : includes,
1844 link_with : [libshared],
1845 dependencies : [libcurl,
1846 libz,
1847 libbzip2,
1848 libxz],
1849 install_rpath : rootlibexecdir,
1850 install : true,
1851 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001852
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001853 systemd_export = executable('systemd-export',
1854 systemd_export_sources,
1855 include_directories : includes,
1856 link_with : [libshared],
1857 dependencies : [libcurl,
1858 libz,
1859 libbzip2,
1860 libxz],
1861 install_rpath : rootlibexecdir,
1862 install : true,
1863 install_dir : rootlibexecdir)
1864 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001865endif
1866
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001867if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001868 exe = executable('systemd-journal-upload',
1869 systemd_journal_upload_sources,
1870 include_directories : includes,
1871 link_with : [libshared],
1872 dependencies : [threads,
1873 libcurl,
1874 libgnutls,
1875 libxz,
1876 liblz4],
1877 install_rpath : rootlibexecdir,
1878 install : true,
1879 install_dir : rootlibexecdir)
1880 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001881endif
1882
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001883if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001884 s_j_remote = executable('systemd-journal-remote',
1885 systemd_journal_remote_sources,
1886 include_directories : includes,
1887 link_with : [libshared],
1888 dependencies : [threads,
1889 libmicrohttpd,
1890 libgnutls,
1891 libxz,
1892 liblz4],
1893 install_rpath : rootlibexecdir,
1894 install : true,
1895 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001896
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001897 s_j_gatewayd = executable('systemd-journal-gatewayd',
1898 systemd_journal_gatewayd_sources,
1899 include_directories : includes,
1900 link_with : [libshared],
1901 dependencies : [threads,
1902 libmicrohttpd,
1903 libgnutls,
1904 libxz,
1905 liblz4],
1906 install_rpath : rootlibexecdir,
1907 install : true,
1908 install_dir : rootlibexecdir)
1909 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001910endif
1911
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001912if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001913 executable('systemd-coredump',
1914 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001915 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001916 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001917 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001918 libacl,
1919 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001920 libxz,
1921 liblz4],
1922 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001923 install : true,
1924 install_dir : rootlibexecdir)
1925
1926 exe = executable('coredumpctl',
1927 coredumpctl_sources,
1928 include_directories : includes,
1929 link_with : [libshared],
1930 dependencies : [threads,
1931 libxz,
1932 liblz4],
1933 install_rpath : rootlibexecdir,
1934 install : true)
1935 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001936endif
1937
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001938if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001939 exe = executable('systemd-binfmt',
1940 'src/binfmt/binfmt.c',
1941 include_directories : includes,
1942 link_with : [libshared],
1943 install_rpath : rootlibexecdir,
1944 install : true,
1945 install_dir : rootlibexecdir)
1946 public_programs += [exe]
1947
1948 meson.add_install_script('sh', '-c',
1949 mkdir_p.format(binfmtdir))
1950 meson.add_install_script('sh', '-c',
1951 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
1952endif
1953
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001954if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001955 executable('systemd-vconsole-setup',
1956 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001957 include_directories : includes,
1958 link_with : [libshared],
1959 install_rpath : rootlibexecdir,
1960 install : true,
1961 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001962endif
1963
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001964if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001965 executable('systemd-random-seed',
1966 'src/random-seed/random-seed.c',
1967 include_directories : includes,
1968 link_with : [libshared],
1969 install_rpath : rootlibexecdir,
1970 install : true,
1971 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001972endif
1973
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001974if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001975 executable('systemd-firstboot',
1976 'src/firstboot/firstboot.c',
1977 include_directories : includes,
1978 link_with : [libshared],
1979 dependencies : [libcrypt],
1980 install_rpath : rootlibexecdir,
1981 install : true,
1982 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001983endif
1984
1985executable('systemd-remount-fs',
1986 'src/remount-fs/remount-fs.c',
1987 'src/core/mount-setup.c',
1988 'src/core/mount-setup.h',
1989 include_directories : includes,
1990 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001991 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001992 install : true,
1993 install_dir : rootlibexecdir)
1994
1995executable('systemd-machine-id-setup',
1996 'src/machine-id-setup/machine-id-setup-main.c',
1997 'src/core/machine-id-setup.c',
1998 'src/core/machine-id-setup.h',
1999 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002000 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002001 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002002 install : true,
2003 install_dir : rootbindir)
2004
2005executable('systemd-fsck',
2006 'src/fsck/fsck.c',
2007 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002008 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002009 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002010 install : true,
2011 install_dir : rootlibexecdir)
2012
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002013executable('systemd-growfs',
2014 'src/partition/growfs.c',
2015 include_directories : includes,
2016 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002017 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002018 install_rpath : rootlibexecdir,
2019 install : true,
2020 install_dir : rootlibexecdir)
2021
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002022executable('systemd-makefs',
2023 'src/partition/makefs.c',
2024 include_directories : includes,
2025 link_with : [libshared],
2026 install_rpath : rootlibexecdir,
2027 install : true,
2028 install_dir : rootlibexecdir)
2029
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002030executable('systemd-sleep',
2031 'src/sleep/sleep.c',
2032 include_directories : includes,
2033 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002034 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002035 install : true,
2036 install_dir : rootlibexecdir)
2037
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002038exe = executable('systemd-sysctl',
2039 'src/sysctl/sysctl.c',
2040 include_directories : includes,
2041 link_with : [libshared],
2042 install_rpath : rootlibexecdir,
2043 install : true,
2044 install_dir : rootlibexecdir)
2045public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002046
2047executable('systemd-ac-power',
2048 'src/ac-power/ac-power.c',
2049 include_directories : includes,
2050 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002051 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002052 install : true,
2053 install_dir : rootlibexecdir)
2054
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002055exe = executable('systemd-detect-virt',
2056 'src/detect-virt/detect-virt.c',
2057 include_directories : includes,
2058 link_with : [libshared],
2059 install_rpath : rootlibexecdir,
2060 install : true)
2061public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002062
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002063exe = executable('systemd-delta',
2064 'src/delta/delta.c',
2065 include_directories : includes,
2066 link_with : [libshared],
2067 install_rpath : rootlibexecdir,
2068 install : true)
2069public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002070
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002071exe = executable('systemd-escape',
2072 'src/escape/escape.c',
2073 include_directories : includes,
2074 link_with : [libshared],
2075 install_rpath : rootlibexecdir,
2076 install : true,
2077 install_dir : rootbindir)
2078public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002079
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002080exe = executable('systemd-notify',
2081 'src/notify/notify.c',
2082 include_directories : includes,
2083 link_with : [libshared],
2084 install_rpath : rootlibexecdir,
2085 install : true,
2086 install_dir : rootbindir)
2087public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002088
2089executable('systemd-volatile-root',
2090 'src/volatile-root/volatile-root.c',
2091 include_directories : includes,
2092 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002093 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002094 install : true,
2095 install_dir : rootlibexecdir)
2096
2097executable('systemd-cgroups-agent',
2098 'src/cgroups-agent/cgroups-agent.c',
2099 include_directories : includes,
2100 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002101 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002102 install : true,
2103 install_dir : rootlibexecdir)
2104
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002105exe = executable('systemd-path',
2106 'src/path/path.c',
2107 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002108 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002109 install_rpath : rootlibexecdir,
2110 install : true)
2111public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002112
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002113exe = executable('systemd-ask-password',
2114 'src/ask-password/ask-password.c',
2115 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002116 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002117 install_rpath : rootlibexecdir,
2118 install : true,
2119 install_dir : rootbindir)
2120public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002121
2122executable('systemd-reply-password',
2123 'src/reply-password/reply-password.c',
2124 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002125 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002126 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002127 install : true,
2128 install_dir : rootlibexecdir)
2129
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002130exe = executable('systemd-tty-ask-password-agent',
2131 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2132 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002133 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002134 install_rpath : rootlibexecdir,
2135 install : true,
2136 install_dir : rootbindir)
2137public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002138
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002139exe = executable('systemd-cgls',
2140 'src/cgls/cgls.c',
2141 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002142 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002143 install_rpath : rootlibexecdir,
2144 install : true)
2145public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002146
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002147exe = executable('systemd-cgtop',
2148 'src/cgtop/cgtop.c',
2149 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002150 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002151 install_rpath : rootlibexecdir,
2152 install : true)
2153public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002154
2155executable('systemd-initctl',
2156 'src/initctl/initctl.c',
2157 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002158 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002159 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002160 install : true,
2161 install_dir : rootlibexecdir)
2162
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002163exe = executable('systemd-mount',
2164 'src/mount/mount-tool.c',
2165 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002166 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002167 install_rpath : rootlibexecdir,
2168 install : true)
2169public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002170
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002171meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002172 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002173
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002174exe = executable('systemd-run',
2175 'src/run/run.c',
2176 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002177 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002178 install_rpath : rootlibexecdir,
2179 install : true)
2180public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002181
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002182exe = executable('systemd-stdio-bridge',
2183 'src/stdio-bridge/stdio-bridge.c',
2184 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002185 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002186 install_rpath : rootlibexecdir,
2187 install : true)
2188public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002189
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002190exe = executable('busctl',
2191 'src/busctl/busctl.c',
2192 'src/busctl/busctl-introspect.c',
2193 'src/busctl/busctl-introspect.h',
2194 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002195 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002196 install_rpath : rootlibexecdir,
2197 install : true)
2198public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002199
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002200if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002201 exe = executable('systemd-sysusers',
2202 'src/sysusers/sysusers.c',
2203 include_directories : includes,
2204 link_with : [libshared],
2205 install_rpath : rootlibexecdir,
2206 install : true,
2207 install_dir : rootbindir)
2208 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002209endif
2210
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002211if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002212 exe = executable('systemd-tmpfiles',
2213 'src/tmpfiles/tmpfiles.c',
2214 include_directories : includes,
2215 link_with : [libshared],
2216 dependencies : [libacl],
2217 install_rpath : rootlibexecdir,
2218 install : true,
2219 install_dir : rootbindir)
2220 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002221
2222 test('test-systemd-tmpfiles',
2223 test_systemd_tmpfiles_py,
2224 args : exe.full_path())
2225 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002226endif
2227
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002228if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002229 exe = executable('systemd-hwdb',
2230 'src/hwdb/hwdb.c',
2231 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2232 include_directories : includes,
Michael Biebl0da6f392017-04-21 18:32:14 +02002233 link_with : [libudev_internal],
2234 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002235 install : true,
2236 install_dir : rootbindir)
2237 public_programs += [exe]
2238endif
2239
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002240if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002241 executable('systemd-quotacheck',
2242 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002243 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002244 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002245 install_rpath : rootlibexecdir,
2246 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002247 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002248endif
2249
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002250exe = executable('systemd-socket-proxyd',
2251 'src/socket-proxy/socket-proxyd.c',
2252 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002253 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002254 dependencies : [threads],
2255 install_rpath : rootlibexecdir,
2256 install : true,
2257 install_dir : rootlibexecdir)
2258public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002259
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002260exe = executable('systemd-udevd',
2261 systemd_udevd_sources,
2262 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002263 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002264 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002265 libsystemd_network,
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002266 libudev_internal],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002267 dependencies : [threads,
2268 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002269 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002270 libacl,
2271 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002272 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002273 install : true,
2274 install_dir : rootlibexecdir)
2275public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002276
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002277exe = executable('udevadm',
2278 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002279 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002280 include_directories : includes,
2281 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002282 libsystemd_network,
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002283 libudev_internal],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002284 dependencies : [threads,
2285 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002286 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002287 libacl,
2288 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002289 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002290 install : true,
2291 install_dir : rootbindir)
2292public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002293
2294executable('systemd-shutdown',
2295 systemd_shutdown_sources,
2296 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002297 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002298 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002299 install : true,
2300 install_dir : rootlibexecdir)
2301
2302executable('systemd-update-done',
2303 'src/update-done/update-done.c',
2304 include_directories : includes,
2305 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002306 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002307 install : true,
2308 install_dir : rootlibexecdir)
2309
2310executable('systemd-update-utmp',
2311 'src/update-utmp/update-utmp.c',
2312 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002313 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002314 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002315 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002316 install : true,
2317 install_dir : rootlibexecdir)
2318
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002319if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002320 executable('systemd-modules-load',
2321 'src/modules-load/modules-load.c',
2322 include_directories : includes,
2323 link_with : [libshared],
2324 dependencies : [libkmod],
2325 install_rpath : rootlibexecdir,
2326 install : true,
2327 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002328
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002329 meson.add_install_script('sh', '-c',
2330 mkdir_p.format(modulesloaddir))
2331 meson.add_install_script('sh', '-c',
2332 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002333endif
2334
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002335exe = executable('systemd-nspawn',
2336 systemd_nspawn_sources,
2337 'src/core/mount-setup.c', # FIXME: use a variable?
2338 'src/core/mount-setup.h',
2339 'src/core/loopback-setup.c',
2340 'src/core/loopback-setup.h',
2341 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002342 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002343 dependencies : [libacl,
2344 libblkid,
2345 libseccomp,
2346 libselinux],
2347 install_rpath : rootlibexecdir,
2348 install : true)
2349public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002350
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002351if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002352 executable('systemd-networkd',
2353 systemd_networkd_sources,
2354 include_directories : includes,
2355 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002356 libsystemd_network,
2357 libudev_internal,
2358 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002359 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002360 install_rpath : rootlibexecdir,
2361 install : true,
2362 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002363
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002364 executable('systemd-networkd-wait-online',
2365 systemd_networkd_wait_online_sources,
2366 include_directories : includes,
2367 link_with : [libnetworkd_core,
2368 libshared],
2369 install_rpath : rootlibexecdir,
2370 install : true,
2371 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002372
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002373 exe = executable('networkctl',
2374 networkctl_sources,
2375 include_directories : includes,
2376 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002377 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002378 install_rpath : rootlibexecdir,
2379 install : true,
2380 install_dir : rootbindir)
2381 public_programs += [exe]
2382endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002383
2384executable('systemd-sulogin-shell',
2385 ['src/sulogin-shell/sulogin-shell.c'],
2386 include_directories : includes,
2387 link_with : [libshared],
2388 install_rpath : rootlibexecdir,
2389 install : true,
2390 install_dir : rootlibexecdir)
2391
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002392############################################################
2393
2394foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002395 sources = tuple[0]
2396 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2397 dependencies = tuple[2]
2398 condition = tuple.length() >= 4 ? tuple[3] : ''
2399 type = tuple.length() >= 5 ? tuple[4] : ''
2400 defs = tuple.length() >= 6 ? tuple[5] : []
2401 incs = tuple.length() >= 7 ? tuple[6] : includes
2402 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002403
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002404 name = sources[0].split('/')[-1].split('.')[0]
2405 if type.startswith('timeout=')
2406 timeout = type.split('=')[1].to_int()
2407 type = ''
2408 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002409
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002410 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002411 exe = executable(
2412 name,
2413 sources,
2414 include_directories : incs,
2415 link_with : link_with,
2416 dependencies : dependencies,
2417 c_args : defs,
2418 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002419 install : install_tests,
2420 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002421
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002422 if type == 'manual'
2423 message('@0@ is a manual test'.format(name))
2424 elif type == 'unsafe' and want_tests != 'unsafe'
2425 message('@0@ is an unsafe test'.format(name))
2426 else
2427 test(name, exe,
2428 env : test_env,
2429 timeout : timeout)
2430 endif
2431 else
2432 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2433 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002434endforeach
2435
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002436test_libsystemd_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002437 'test-libsystemd-sym',
2438 test_libsystemd_sym_c,
2439 include_directories : includes,
2440 link_with : [libsystemd],
2441 install : install_tests,
2442 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002443test('test-libsystemd-sym',
2444 test_libsystemd_sym)
2445
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002446test_libudev_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002447 'test-libudev-sym',
2448 test_libudev_sym_c,
2449 include_directories : includes,
2450 c_args : ['-Wno-deprecated-declarations'],
2451 link_with : [libudev],
2452 install : install_tests,
2453 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002454test('test-libudev-sym',
2455 test_libudev_sym)
2456
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002457############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002458
2459make_directive_index_py = find_program('tools/make-directive-index.py')
2460make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002461xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002462hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002463
2464subdir('units')
2465subdir('sysctl.d')
2466subdir('sysusers.d')
2467subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002468subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002469subdir('hwdb')
2470subdir('network')
2471subdir('man')
2472subdir('shell-completion/bash')
2473subdir('shell-completion/zsh')
2474subdir('docs/sysvinit')
2475subdir('docs/var-log')
2476
2477# FIXME: figure out if the warning is true:
2478# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2479install_subdir('factory/etc',
2480 install_dir : factorydir)
2481
2482
2483install_data('xorg/50-systemd-user.sh',
2484 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002485install_data('modprobe.d/systemd.conf',
2486 install_dir : modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002487install_data('README',
2488 'NEWS',
2489 'CODING_STYLE',
2490 'DISTRO_PORTING',
2491 'ENVIRONMENT.md',
2492 'LICENSE.GPL2',
2493 'LICENSE.LGPL2.1',
Felipe Satelerf9f54412017-12-18 10:58:13 -03002494 'TRANSIENT-SETTINGS.md',
2495 'UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002496 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2497 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002498
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002499meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2500meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2501
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002502############################################################
2503
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002504meson_check_help = find_program('tools/meson-check-help.sh')
2505
2506foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002507 name = exec.full_path().split('/')[-1]
2508 test('check-help-' + name,
2509 meson_check_help,
2510 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002511endforeach
2512
2513############################################################
2514
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002515if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002516 all_files = run_command(
2517 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002518 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002519 'ls-files',
2520 ':/*.[ch]'])
2521 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002522
userwithuide85a6902017-08-09 13:41:44 +00002523 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002524 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002525 output : 'tags',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002526 command : ['env', 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002527 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002528 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002529 output : 'ctags',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002530 command : ['env', 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002531endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002532
2533if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002534 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002535 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002536 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002537 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002538endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002539
2540if git.found()
2541 git_head = run_command(
2542 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002543 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002544 'rev-parse', 'HEAD']).stdout().strip()
2545 git_head_short = run_command(
2546 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002547 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002548 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2549
2550 run_target(
2551 'git-snapshot',
2552 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002553 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002554 git_head_short),
2555 '--prefix', 'systemd-@0@/'.format(git_head),
2556 'HEAD'])
2557endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002558
2559############################################################
2560
2561status = [
2562 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2563
Yu Watanabe359b4962017-11-25 20:35:24 +09002564 'prefix directory: @0@'.format(prefixdir),
2565 'rootprefix directory: @0@'.format(rootprefixdir),
2566 'sysconf directory: @0@'.format(sysconfdir),
2567 'include directory: @0@'.format(includedir),
2568 'lib directory: @0@'.format(libdir),
2569 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002570 'SysV init scripts: @0@'.format(sysvinit_path),
2571 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002572 'PAM modules directory: @0@'.format(pamlibdir),
2573 'PAM configuration directory: @0@'.format(pamconfdir),
2574 'RPM macros directory: @0@'.format(rpmmacrosdir),
2575 'modprobe.d directory: @0@'.format(modprobedir),
2576 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2577 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2578 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2579 'bash completions directory: @0@'.format(bashcompletiondir),
2580 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002581 'extra start script: @0@'.format(get_option('rc-local')),
2582 'extra stop script: @0@'.format(get_option('halt-local')),
2583 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2584 get_option('debug-tty')),
2585 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002586 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002587 'maximum system UID: @0@'.format(system_uid_max),
2588 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002589 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2590 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2591 'minimum container UID base: @0@'.format(container_uid_base_min),
2592 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002593 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002594 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002595 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002596 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002597 'nobody user name: @0@'.format(nobody_user),
2598 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002599 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002600 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002601
2602 'default DNSSEC mode: @0@'.format(default_dnssec),
2603 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2604 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2605
2606alt_dns_servers = '\n '.join(dns_servers.split(' '))
2607alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2608status += [
2609 'default DNS servers: @0@'.format(alt_dns_servers),
2610 'default NTP servers: @0@'.format(alt_ntp_servers)]
2611
2612alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2613 '@@0@'.format(time_epoch)).stdout().strip()
2614status += [
2615 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2616
2617# TODO:
2618# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2619# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2620# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2621
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002622if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002623 status += [
2624 'efi arch: @0@'.format(efi_arch)]
2625
2626 if have_gnu_efi
2627 status += [
2628 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2629 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002630 'EFI lib directory: @0@'.format(efi_libdir),
2631 'EFI lds directory: @0@'.format(efi_ldsdir),
2632 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002633 endif
2634endif
2635
2636found = []
2637missing = []
2638
2639foreach tuple : [
2640 ['libcryptsetup'],
2641 ['PAM'],
2642 ['AUDIT'],
2643 ['IMA'],
2644 ['AppArmor'],
2645 ['SELinux'],
2646 ['SECCOMP'],
2647 ['SMACK'],
2648 ['zlib'],
2649 ['xz'],
2650 ['lz4'],
2651 ['bzip2'],
2652 ['ACL'],
2653 ['gcrypt'],
2654 ['qrencode'],
2655 ['microhttpd'],
2656 ['gnutls'],
2657 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002658 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002659 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002660 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002661 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002662 ['libiptc'],
2663 ['elfutils'],
2664 ['binfmt'],
2665 ['vconsole'],
2666 ['quotacheck'],
2667 ['tmpfiles'],
2668 ['environment.d'],
2669 ['sysusers'],
2670 ['firstboot'],
2671 ['randomseed'],
2672 ['backlight'],
2673 ['rfkill'],
2674 ['logind'],
2675 ['machined'],
2676 ['importd'],
2677 ['hostnamed'],
2678 ['timedated'],
2679 ['timesyncd'],
2680 ['localed'],
2681 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002682 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002683 ['coredump'],
2684 ['polkit'],
2685 ['legacy pkla', install_polkit_pkla],
2686 ['efi'],
2687 ['gnu-efi', have_gnu_efi],
2688 ['kmod'],
2689 ['xkbcommon'],
2690 ['blkid'],
2691 ['dbus'],
2692 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002693 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002694 ['hwdb'],
2695 ['tpm'],
2696 ['man pages', want_man],
2697 ['html pages', want_html],
2698 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002699 ['split /usr', conf.get('HAVE_SPLIT_USR') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002700 ['SysV compat'],
2701 ['utmp'],
2702 ['ldconfig'],
2703 ['hibernate'],
2704 ['adm group', get_option('adm-group')],
2705 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002706 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002707 ['debug hashmap'],
2708 ['debug mmap cache'],
2709]
2710
2711 cond = tuple.get(1, '')
2712 if cond == ''
2713 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2714 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002715 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002716 endif
2717 if cond
2718 found += [tuple[0]]
2719 else
2720 missing += [tuple[0]]
2721 endif
2722endforeach
2723
2724status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002725 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002726 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002727 '',
2728 'disabled features: @0@'.format(', '.join(missing)),
2729 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002730message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002731
2732if rootprefixdir != rootprefix_default
2733 message('WARNING:\n' +
2734 ' Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2735 ' systemd used fixed names for unit file directories and other paths, so anything\n' +
2736 ' except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
2737endif