blob: eda9e382bfe7b086356410617620d3499e23cd87 [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>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400458 ['gettid', '''#include <sys/types.h>'''],
459 ['pivot_root', '''#include <stdlib.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100460 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400461 #include <sys/stat.h>
462 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100463 ['setns', '''#include <sched.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400464 ['renameat2', '''#include <stdio.h>'''],
465 ['kcmp', '''#include <linux/kcmp.h>'''],
466 ['keyctl', '''#include <sys/types.h>
467 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100468 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400469 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200470 ['bpf', '''#include <sys/syscall.h>
471 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmek38f1ae02017-04-19 16:14:16 -0400472 ['explicit_bzero' , '''#include <string.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400473]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400474
Lennart Poettering85db59b2017-12-25 12:01:14 +0100475 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200476 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400477endforeach
478
Lennart Poettering85db59b2017-12-25 12:01:14 +0100479if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200480 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200481 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400482else
483 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200484 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200485 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400486endif
487
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400488#####################################################################
489
490sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400491awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400492m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400493stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400494git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400495
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400496meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400497mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400498test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
499splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400500
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400501# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
502# /usr/sbin, /sbin, and fall back to the default from middle column.
503progs = [['telinit', '/lib/sysvinit/telinit'],
504 ['quotaon', '/usr/sbin/quotaon' ],
505 ['quotacheck', '/usr/sbin/quotacheck' ],
506 ['kill', '/usr/bin/kill' ],
507 ['kmod', '/usr/bin/kmod' ],
508 ['kexec', '/usr/sbin/kexec' ],
509 ['sulogin', '/usr/sbin/sulogin' ],
510 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
511 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
512 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
513 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
514 ]
515foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400516 path = get_option(prog[0] + '-path')
517 if path != ''
518 message('Using @1@ for @0@'.format(prog[0], path))
519 else
520 exe = find_program(prog[0],
521 '/usr/sbin/' + prog[0],
522 '/sbin/' + prog[0],
523 required: false)
524 path = exe.found() ? exe.path() : prog[1]
525 endif
526 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
527 conf.set_quoted(name, path)
528 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400529endforeach
530
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400531if run_command('ln', '--relative', '--help').returncode() != 0
532 error('ln does not support --relative')
533endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400534
535############################################################
536
537gperf = find_program('gperf')
538
539gperf_test_format = '''
540#include <string.h>
541const char * in_word_set(const char *, @0@);
542@1@
543'''
544gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
545gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
546gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
547if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400548 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400549else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400550 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
551 if cc.compiles(gperf_test)
552 gperf_len_type = 'unsigned'
553 else
554 error('unable to determine gperf len type')
555 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400556endif
557message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400558conf.set('GPERF_LEN_TYPE', gperf_len_type,
559 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400560
561############################################################
562
563if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400564 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400565endif
566foreach header : ['linux/btrfs.h',
567 'linux/memfd.h',
568 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200569 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400570 'valgrind/memcheck.h',
571 'valgrind/valgrind.h',
572 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400573
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200574 conf.set10('HAVE_' + header.underscorify().to_upper(),
575 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400576endforeach
577
578############################################################
579
580conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400581conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
582gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400583
584default_hierarchy = get_option('default-hierarchy')
585conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
586 description : 'default cgroup hierarchy as string')
587if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400588 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400589elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400590 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400591else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400592 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400593endif
594
595time_epoch = get_option('time-epoch')
596if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400597 NEWS = files('NEWS')
598 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400599endif
600time_epoch = time_epoch.to_int()
601conf.set('TIME_EPOCH', time_epoch)
602
603system_uid_max = get_option('system-uid-max')
604if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400605 system_uid_max = run_command(
606 awk,
607 'BEGIN { uid=999 } /^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
608 '/etc/login.defs').stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400609endif
610system_uid_max = system_uid_max.to_int()
611conf.set('SYSTEM_UID_MAX', system_uid_max)
612substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400613message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400614
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400615system_gid_max = get_option('system-gid-max')
616if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400617 system_gid_max = run_command(
618 awk,
619 'BEGIN { gid=999 } /^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
620 '/etc/login.defs').stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400621endif
622system_gid_max = system_gid_max.to_int()
623conf.set('SYSTEM_GID_MAX', system_gid_max)
624substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400625message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400626
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100627dynamic_uid_min = get_option('dynamic-uid-min').to_int()
628dynamic_uid_max = get_option('dynamic-uid-max').to_int()
629conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
630conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
631substs.set('dynamicuidmin', dynamic_uid_min)
632substs.set('dynamicuidmax', dynamic_uid_max)
633
634container_uid_base_min = get_option('container-uid-base-min').to_int()
635container_uid_base_max = get_option('container-uid-base-max').to_int()
636conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
637conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
638substs.set('containeruidbasemin', container_uid_base_min)
639substs.set('containeruidbasemax', container_uid_base_max)
640
Lennart Poetteringafde4572017-12-05 11:00:24 +0100641nobody_user = get_option('nobody-user')
642nobody_group = get_option('nobody-group')
643
644getent_result = run_command('getent', 'passwd', '65534')
645if getent_result.returncode() == 0
646 name = getent_result.stdout().split(':')[0]
647 if name != nobody_user
648 message('WARNING:\n' +
649 ' 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) +
650 ' Your build will result in an user table setup that is incompatible with the local system.')
651 endif
652endif
653id_result = run_command('id', '-u', nobody_user)
654if id_result.returncode() == 0
655 id = id_result.stdout().to_int()
656 if id != 65534
657 message('WARNING:\n' +
658 ' 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) +
659 ' Your build will result in an user table setup that is incompatible with the local system.')
660 endif
661endif
662
663getent_result = run_command('getent', 'group', '65534')
664if getent_result.returncode() == 0
665 name = getent_result.stdout().split(':')[0]
666 if name != nobody_group
667 message('WARNING:\n' +
668 ' 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) +
669 ' Your build will result in an group table setup that is incompatible with the local system.')
670 endif
671endif
672id_result = run_command('id', '-g', nobody_group)
673if id_result.returncode() == 0
674 id = id_result.stdout().to_int()
675 if id != 65534
676 message('WARNING:\n' +
677 ' 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) +
678 ' Your build will result in an group table setup that is incompatible with the local system.')
679 endif
680endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900681if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
682 message('WARNING:\n' +
683 ' The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
684 ' Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
685endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100686
687conf.set_quoted('NOBODY_USER_NAME', nobody_user)
688conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900689substs.set('NOBODY_USER_NAME', nobody_user)
690substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100691
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400692tty_gid = get_option('tty-gid')
693conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400694substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400695
Ikey Doherty84786b82017-12-03 12:28:23 +0000696# Ensure provided GID argument is numeric, otherwise fallback to default assignment
697if get_option('users-gid') != ''
Yu Watanabed6806872017-12-05 14:01:39 +0900698 users_gid = get_option('users-gid').to_int()
Ikey Doherty84786b82017-12-03 12:28:23 +0000699else
Yu Watanabed6806872017-12-05 14:01:39 +0900700 users_gid = '-'
Ikey Doherty84786b82017-12-03 12:28:23 +0000701endif
702substs.set('USERS_GID', users_gid)
703
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400704if get_option('adm-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400705 m4_defines += ['-DENABLE_ADM_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400706endif
707
708if get_option('wheel-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400709 m4_defines += ['-DENABLE_WHEEL_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400710endif
711
712substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700713substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400714
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400715kill_user_processes = get_option('default-kill-user-processes')
716conf.set10('KILL_USER_PROCESSES', kill_user_processes)
717substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400718
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400719dns_servers = get_option('dns-servers')
720conf.set_quoted('DNS_SERVERS', dns_servers)
721substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400722
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400723ntp_servers = get_option('ntp-servers')
724conf.set_quoted('NTP_SERVERS', ntp_servers)
725substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400726
727conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
728
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400729substs.set('SUSHELL', get_option('debug-shell'))
730substs.set('DEBUGTTY', get_option('debug-tty'))
731
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400732debug = get_option('debug')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200733enable_debug_hashmap = false
734enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400735if debug != ''
736 foreach name : debug.split(',')
737 if name == 'hashmap'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200738 enable_debug_hashmap = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400739 elif name == 'mmap-cache'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200740 enable_debug_mmap_cache = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400741 else
742 message('unknown debug option "@0@", ignoring'.format(name))
743 endif
744 endforeach
745endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200746conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
747conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400748
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400749#####################################################################
750
751threads = dependency('threads')
752librt = cc.find_library('rt')
753libm = cc.find_library('m')
754libdl = cc.find_library('dl')
755libcrypt = cc.find_library('crypt')
756
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400757libcap = dependency('libcap', required : false)
758if not libcap.found()
759 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
760 libcap = cc.find_library('cap')
761endif
762
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400763libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekd6e80962017-09-15 14:47:57 +0200764 version : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400765
766want_seccomp = get_option('seccomp')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400767if want_seccomp != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400768 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400769 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400770 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200771 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400772else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200773 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400774 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400775endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200776conf.set10('HAVE_SECCOMP', have)
777m4_defines += have ? ['-DHAVE_SECCOMP'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400778
779want_selinux = get_option('selinux')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400780if want_selinux != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400781 libselinux = dependency('libselinux',
782 version : '>= 2.1.9',
783 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200784 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400785else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200786 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400787 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400788endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200789conf.set10('HAVE_SELINUX', have)
790m4_defines += have ? ['-DHAVE_SELINUX'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400791
792want_apparmor = get_option('apparmor')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400793if want_apparmor != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400794 libapparmor = dependency('libapparmor',
795 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200796 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400797else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200798 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400799 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400800endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200801conf.set10('HAVE_APPARMOR', have)
802m4_defines += have ? ['-DHAVE_APPARMOR'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400803
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400804smack_run_label = get_option('smack-run-label')
805if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400806 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
807 m4_defines += ['-DHAVE_SMACK_RUN_LABEL']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400808endif
809
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400810want_polkit = get_option('polkit')
811install_polkit = false
812install_polkit_pkla = false
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400813if want_polkit != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400814 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400815
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400816 libpolkit = dependency('polkit-gobject-1',
817 required : false)
818 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
819 message('Old polkit detected, will install pkla files')
820 install_polkit_pkla = true
821 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400822endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200823conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400824
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400825want_acl = get_option('acl')
826if want_acl != 'false'
827 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200828 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400829else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200830 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400831 libacl = []
832endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200833conf.set10('HAVE_ACL', have)
834m4_defines += have ? ['-DHAVE_ACL'] : []
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400835
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400836want_audit = get_option('audit')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400837if want_audit != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400838 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200839 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400840else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200841 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400842 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400843endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200844conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400845
846want_blkid = get_option('blkid')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400847if want_blkid != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400848 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200849 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400850else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200851 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400852 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400853endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200854conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400855
856want_kmod = get_option('kmod')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400857if want_kmod != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400858 libkmod = dependency('libkmod',
859 version : '>= 15',
860 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200861 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400862else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200863 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400864 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400865endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200866conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400867
868want_pam = get_option('pam')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400869if want_pam != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400870 libpam = cc.find_library('pam', required : want_pam == 'true')
871 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200872 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400873else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200874 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400875 libpam = []
876 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400877endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200878conf.set10('HAVE_PAM', have)
879m4_defines += have ? ['-DHAVE_PAM'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400880
881want_microhttpd = get_option('microhttpd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400882if want_microhttpd != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400883 libmicrohttpd = dependency('libmicrohttpd',
884 version : '>= 0.9.33',
885 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200886 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400887else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200888 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400889 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400890endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200891conf.set10('HAVE_MICROHTTPD', have)
892m4_defines += have ? ['-DHAVE_MICROHTTPD'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400893
894want_libcryptsetup = get_option('libcryptsetup')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400895if want_libcryptsetup != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400896 libcryptsetup = dependency('libcryptsetup',
897 version : '>= 1.6.0',
898 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200899 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400900else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200901 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400902 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400903endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200904conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400905
906want_libcurl = get_option('libcurl')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400907if want_libcurl != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400908 libcurl = dependency('libcurl',
909 version : '>= 7.32.0',
910 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200911 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400912else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200913 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400914 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400915endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200916conf.set10('HAVE_LIBCURL', have)
917m4_defines += have ? ['-DHAVE_LIBCURL'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400918
919want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400920want_libidn2 = get_option('libidn2')
921if want_libidn == 'true' and want_libidn2 == 'true'
922 error('libidn and libidn2 cannot be requested simultaneously')
923endif
924
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400925if want_libidn != 'false' and want_libidn2 != 'true'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400926 libidn = dependency('libidn',
927 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200928 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400929else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200930 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400931 libidn = []
932endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200933conf.set10('HAVE_LIBIDN', have)
934m4_defines += have ? ['-DHAVE_LIBIDN'] : []
935if not have and want_libidn2 != 'false'
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400936 # libidn is used for both libidn and libidn2 objects
937 libidn = dependency('libidn2',
938 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200939 have = libidn.found()
940else
941 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400942endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200943conf.set10('HAVE_LIBIDN2', have)
944m4_defines += have ? ['-DHAVE_LIBIDN2'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400945
946want_libiptc = get_option('libiptc')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400947if want_libiptc != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400948 libiptc = dependency('libiptc',
949 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200950 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400951else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200952 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400953 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400954endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200955conf.set10('HAVE_LIBIPTC', have)
956m4_defines += have ? ['-DHAVE_LIBIPTC'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400957
958want_qrencode = get_option('qrencode')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400959if want_qrencode != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400960 libqrencode = dependency('libqrencode',
961 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200962 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400963else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200964 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400965 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400966endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200967conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400968
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400969want_gcrypt = get_option('gcrypt')
970if want_gcrypt != 'false'
971 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
972 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200973 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400974else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200975 have = false
976endif
977if not have
978 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400979 libgcrypt = []
980 libgpg_error = []
981endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200982conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400983
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400984want_gnutls = get_option('gnutls')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400985if want_gnutls != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400986 libgnutls = dependency('gnutls',
987 version : '>= 3.1.4',
988 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200989 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400990else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200991 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400992 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400993endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200994conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400995
996want_elfutils = get_option('elfutils')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400997if want_elfutils != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400998 libdw = dependency('libdw',
999 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001000 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001001else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001002 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001003 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001004endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001005conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001006
1007want_zlib = get_option('zlib')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001008if want_zlib != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001009 libz = dependency('zlib',
1010 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001011 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001012else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001013 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001014 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001015endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001016conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001017
1018want_bzip2 = get_option('bzip2')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001019if want_bzip2 != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001020 libbzip2 = cc.find_library('bz2',
1021 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001022 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001023else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001024 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001025 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001026endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001027conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001028
1029want_xz = get_option('xz')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001030if want_xz != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001031 libxz = dependency('liblzma',
1032 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001033 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001034else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001035 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001036 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001037endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001038conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001039
1040want_lz4 = get_option('lz4')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001041if want_lz4 != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001042 liblz4 = dependency('liblz4',
1043 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001044 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001045else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001046 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001047 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001048endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001049conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001050
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001051want_xkbcommon = get_option('xkbcommon')
1052if want_xkbcommon != 'false'
1053 libxkbcommon = dependency('xkbcommon',
1054 version : '>= 0.3.0',
1055 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001056 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001057else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001058 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001059 libxkbcommon = []
1060endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001061conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001062
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001063want_glib = get_option('glib')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001064if want_glib != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001065 libglib = dependency('glib-2.0',
1066 version : '>= 2.22.0',
1067 required : want_glib == 'true')
1068 libgobject = dependency('gobject-2.0',
1069 version : '>= 2.22.0',
1070 required : want_glib == 'true')
1071 libgio = dependency('gio-2.0',
1072 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001073 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001074else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001075 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001076 libglib = []
1077 libgobject = []
1078 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001079endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001080conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001081
1082want_dbus = get_option('dbus')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001083if want_dbus != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001084 libdbus = dependency('dbus-1',
1085 version : '>= 1.3.2',
1086 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001087 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001088else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001089 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001090 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001091endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001092conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001093
Yu Watanabe42303dc2017-06-18 05:22:32 +09001094default_dnssec = get_option('default-dnssec')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001095if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001096 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1097 default_dnssec = 'no'
1098endif
1099conf.set('DEFAULT_DNSSEC_MODE',
1100 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1101substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1102
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001103want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001104if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001105 have = (conf.get('HAVE_LIBCURL') == 1 and
1106 conf.get('HAVE_ZLIB') == 1 and
1107 conf.get('HAVE_BZIP2') == 1 and
1108 conf.get('HAVE_XZ') == 1 and
1109 conf.get('HAVE_GCRYPT') == 1)
1110 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001111 error('importd support was requested, but dependencies are not available')
1112 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001113else
1114 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001115endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001116conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001117
1118want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001119if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001120 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1121 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001122 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1123 # it's possible to build one without the other. Complain only if
1124 # support was explictly requested. The auxiliary files like sysusers
1125 # config should be installed when any of the programs are built.
1126 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1127 error('remote support was requested, but dependencies are not available')
1128 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001129 have = have_deps[0] or have_deps[1]
1130else
1131 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001132endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001133conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001134
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001135foreach term : ['utmp',
1136 'hibernate',
1137 'environment-d',
1138 'binfmt',
1139 'coredump',
1140 'resolve',
1141 'logind',
1142 'hostnamed',
1143 'localed',
1144 'machined',
1145 'networkd',
1146 'timedated',
1147 'timesyncd',
1148 'myhostname',
1149 'firstboot',
1150 'randomseed',
1151 'backlight',
1152 'vconsole',
1153 'quotacheck',
1154 'sysusers',
1155 'tmpfiles',
1156 'hwdb',
1157 'rfkill',
1158 'ldconfig',
1159 'efi',
1160 'tpm',
1161 'ima',
1162 'smack',
1163 'gshadow',
1164 'idn',
1165 'nss-systemd']
1166 have = get_option(term)
1167 name = 'ENABLE_' + term.underscorify().to_upper()
1168 conf.set10(name, have)
1169 m4_defines += have ? ['-D' + name] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001170endforeach
1171
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001172want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001173install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001174tests = []
1175
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001176conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', get_option('slow-tests'))
1177
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001178#####################################################################
1179
1180if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001181 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001182
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001183 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001184 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001185 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001186 elif efi_arch == 'x86_64'
1187 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001188 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001189 elif efi_arch == 'arm'
1190 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001191 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001192 elif efi_arch == 'aarch64'
1193 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001194 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001195 else
1196 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001197 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001198 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001199
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001200 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001201 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001202
1203 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001204else
1205 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001206endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001207conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001208
1209#####################################################################
1210
1211config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001212 output : 'config.h',
1213 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001214
1215includes = include_directories('src/basic',
1216 'src/shared',
1217 'src/systemd',
1218 'src/journal',
1219 'src/resolve',
1220 'src/timesync',
1221 'src/login',
1222 'src/udev',
1223 'src/libudev',
1224 'src/core',
1225 'src/libsystemd/sd-bus',
1226 'src/libsystemd/sd-device',
1227 'src/libsystemd/sd-hwdb',
1228 'src/libsystemd/sd-id128',
1229 'src/libsystemd/sd-netlink',
1230 'src/libsystemd/sd-network',
1231 'src/libsystemd-network',
Davide Cavalca5e1771a2017-08-30 08:34:44 -07001232 '.',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001233 )
1234
1235add_project_arguments('-include', 'config.h', language : 'c')
1236
1237gcrypt_util_sources = files('src/shared/gcrypt-util.h',
1238 'src/shared/gcrypt-util.c')
1239
1240subdir('po')
1241subdir('catalog')
1242subdir('src/systemd')
1243subdir('src/basic')
1244subdir('src/libsystemd')
1245subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001246subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001247subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001248
1249libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001250 'journal-core',
1251 libjournal_core_sources,
1252 journald_gperf_c,
1253 include_directories : includes,
1254 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001255
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001256libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001257libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001258 'systemd',
1259 libsystemd_internal_sources,
1260 journal_internal_sources,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001261 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001262 include_directories : includes,
1263 link_args : ['-shared',
1264 '-Wl,--version-script=' + libsystemd_sym_path],
1265 link_with : [libbasic],
1266 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001267 libgcrypt,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001268 librt,
1269 libxz,
1270 liblz4],
1271 link_depends : libsystemd_sym,
1272 install : true,
1273 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001274
1275############################################################
1276
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001277# binaries that have --help and are intended for use by humans,
1278# usually, but not always, installed in /bin.
1279public_programs = []
1280
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001281subdir('src/libudev')
1282subdir('src/shared')
1283subdir('src/core')
1284subdir('src/udev')
1285subdir('src/network')
1286
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001287subdir('src/analyze')
1288subdir('src/journal-remote')
1289subdir('src/coredump')
1290subdir('src/hostname')
1291subdir('src/import')
1292subdir('src/kernel-install')
1293subdir('src/locale')
1294subdir('src/machine')
1295subdir('src/nspawn')
1296subdir('src/resolve')
1297subdir('src/timedate')
1298subdir('src/timesync')
1299subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001300subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001301
1302subdir('src/test')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001303subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001304subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001305
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001306############################################################
1307
1308# only static linking apart from libdl, to make sure that the
1309# module is linked to all libraries that it uses.
1310test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001311 'test-dlopen',
1312 test_dlopen_c,
1313 include_directories : includes,
1314 link_with : [libbasic],
1315 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001316
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001317foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001318 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001319 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001320 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001321
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001322 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001323 if condition
1324 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001325
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001326 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1327 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001328
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001329 nss = shared_library(
1330 'nss_' + module,
1331 'src/nss-@0@/nss-@0@.c'.format(module),
1332 version : '2',
1333 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001334 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1335 link_args : ['-Wl,-z,nodelete',
1336 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001337 '-Wl,--version-script=' + version_script_arg,
1338 '-Wl,--undefined'],
1339 link_with : [libsystemd_internal,
1340 libbasic],
1341 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001342 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001343 link_depends : sym,
1344 install : true,
1345 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001346
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001347 # We cannot use shared_module because it does not support version suffix.
1348 # Unfortunately shared_library insists on creating the symlink…
1349 meson.add_install_script('sh', '-c',
1350 'rm $DESTDIR@0@/libnss_@1@.so'
1351 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001352
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001353 test('dlopen-nss_' + module,
1354 test_dlopen,
1355 args : [nss.full_path()]) # path to dlopen must include a slash
1356 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001357endforeach
1358
1359############################################################
1360
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001361executable('systemd',
1362 systemd_sources,
1363 include_directories : includes,
1364 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001365 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001366 dependencies : [threads,
1367 librt,
1368 libseccomp,
1369 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001370 libmount,
1371 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001372 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001373 install : true,
1374 install_dir : rootlibexecdir)
1375
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001376exe = executable('systemd-analyze',
1377 systemd_analyze_sources,
1378 include_directories : includes,
1379 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001380 libshared],
1381 dependencies : [threads,
1382 librt,
1383 libseccomp,
1384 libselinux,
1385 libmount,
1386 libblkid],
1387 install_rpath : rootlibexecdir,
1388 install : true)
1389public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001390
1391executable('systemd-journald',
1392 systemd_journald_sources,
1393 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001394 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001395 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001396 dependencies : [threads,
1397 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001398 liblz4,
1399 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001400 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001401 install : true,
1402 install_dir : rootlibexecdir)
1403
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001404exe = executable('systemd-cat',
1405 systemd_cat_sources,
1406 include_directories : includes,
1407 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001408 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001409 dependencies : [threads],
1410 install_rpath : rootlibexecdir,
1411 install : true)
1412public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001413
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001414exe = executable('journalctl',
1415 journalctl_sources,
1416 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001417 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001418 dependencies : [threads,
1419 libqrencode,
1420 libxz,
1421 liblz4],
1422 install_rpath : rootlibexecdir,
1423 install : true,
1424 install_dir : rootbindir)
1425public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001426
1427executable('systemd-getty-generator',
1428 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001429 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001430 link_with : [libshared],
1431 install_rpath : rootlibexecdir,
1432 install : true,
1433 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001434
1435executable('systemd-debug-generator',
1436 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001437 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001438 link_with : [libshared],
1439 install_rpath : rootlibexecdir,
1440 install : true,
1441 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001442
1443executable('systemd-fstab-generator',
1444 'src/fstab-generator/fstab-generator.c',
1445 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001446 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001447 link_with : [libshared],
1448 install_rpath : rootlibexecdir,
1449 install : true,
1450 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001451
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001452if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001453 executable('30-systemd-environment-d-generator',
1454 'src/environment-d-generator/environment-d-generator.c',
1455 include_directories : includes,
1456 link_with : [libshared],
1457 install_rpath : rootlibexecdir,
1458 install : true,
1459 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001460
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001461 meson.add_install_script(meson_make_symlink,
1462 join_paths(sysconfdir, 'environment'),
1463 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001464endif
1465
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001466if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001467 executable('systemd-hibernate-resume-generator',
1468 'src/hibernate-resume/hibernate-resume-generator.c',
1469 include_directories : includes,
1470 link_with : [libshared],
1471 install_rpath : rootlibexecdir,
1472 install : true,
1473 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001474
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001475 executable('systemd-hibernate-resume',
1476 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001477 include_directories : includes,
1478 link_with : [libshared],
1479 install_rpath : rootlibexecdir,
1480 install : true,
1481 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001482endif
1483
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001484if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001485 executable('systemd-gpt-auto-generator',
1486 'src/gpt-auto-generator/gpt-auto-generator.c',
1487 'src/basic/blkid-util.h',
1488 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001489 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001490 dependencies : libblkid,
1491 install_rpath : rootlibexecdir,
1492 install : true,
1493 install_dir : systemgeneratordir)
1494
1495 exe = executable('systemd-dissect',
1496 'src/dissect/dissect.c',
1497 include_directories : includes,
1498 link_with : [libshared],
1499 install_rpath : rootlibexecdir,
1500 install : true,
1501 install_dir : rootlibexecdir)
1502 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001503endif
1504
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001505if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001506 executable('systemd-resolved',
1507 systemd_resolved_sources,
Michael Biebl76c87412017-04-21 23:45:54 +02001508 gcrypt_util_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001509 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001510 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001511 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001512 libgcrypt,
1513 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001514 libm,
1515 libidn],
1516 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001517 install : true,
1518 install_dir : rootlibexecdir)
1519
1520 exe = executable('systemd-resolve',
1521 systemd_resolve_sources,
Michael Biebl76c87412017-04-21 23:45:54 +02001522 gcrypt_util_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001523 include_directories : includes,
1524 link_with : [libshared],
1525 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001526 libgcrypt,
1527 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001528 libm,
1529 libidn],
1530 install_rpath : rootlibexecdir,
1531 install : true)
1532 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001533endif
1534
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001535if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001536 executable('systemd-logind',
1537 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001538 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001539 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001540 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001541 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001542 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001543 install_rpath : rootlibexecdir,
1544 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001545 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001546
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001547 exe = executable('loginctl',
1548 loginctl_sources,
1549 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001550 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001551 dependencies : [threads,
1552 liblz4,
1553 libxz],
1554 install_rpath : rootlibexecdir,
1555 install : true,
1556 install_dir : rootbindir)
1557 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001558
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001559 exe = executable('systemd-inhibit',
1560 'src/login/inhibit.c',
1561 include_directories : includes,
1562 link_with : [libshared],
1563 install_rpath : rootlibexecdir,
1564 install : true,
1565 install_dir : rootbindir)
1566 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001567
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001568 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001569 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1570 pam_systemd = shared_library(
1571 'pam_systemd',
1572 pam_systemd_c,
1573 name_prefix : '',
1574 include_directories : includes,
1575 link_args : ['-shared',
1576 '-Wl,--version-script=' + version_script_arg],
1577 link_with : [libsystemd_internal,
1578 libshared_static],
1579 dependencies : [threads,
1580 libpam,
1581 libpam_misc],
1582 link_depends : pam_systemd_sym,
1583 install : true,
1584 install_dir : pamlibdir)
1585
1586 test('dlopen-pam_systemd',
1587 test_dlopen,
1588 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1589 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001590endif
1591
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001592if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001593 executable('systemd-user-sessions',
1594 'src/user-sessions/user-sessions.c',
1595 include_directories : includes,
1596 link_with : [libshared],
1597 install_rpath : rootlibexecdir,
1598 install : true,
1599 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001600endif
1601
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001602if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001603 exe = executable('bootctl',
1604 'src/boot/bootctl.c',
1605 include_directories : includes,
1606 link_with : [libshared],
1607 dependencies : [libblkid],
1608 install_rpath : rootlibexecdir,
1609 install : true)
1610 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001611endif
1612
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001613exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1614 include_directories : includes,
1615 link_with : [libshared],
1616 dependencies : [threads],
1617 install_rpath : rootlibexecdir,
1618 install : true)
1619public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001620
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001621exe = executable('systemctl', 'src/systemctl/systemctl.c',
1622 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001623 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001624 dependencies : [threads,
1625 libcap,
1626 libselinux,
1627 libxz,
1628 liblz4],
1629 install_rpath : rootlibexecdir,
1630 install : true,
1631 install_dir : rootbindir)
1632public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001633
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001634if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001635 executable('systemd-backlight',
1636 'src/backlight/backlight.c',
1637 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001638 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001639 install_rpath : rootlibexecdir,
1640 install : true,
1641 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001642endif
1643
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001644if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001645 executable('systemd-rfkill',
1646 'src/rfkill/rfkill.c',
1647 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001648 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001649 install_rpath : rootlibexecdir,
1650 install : true,
1651 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001652endif
1653
1654executable('systemd-system-update-generator',
1655 'src/system-update-generator/system-update-generator.c',
1656 include_directories : includes,
1657 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001658 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001659 install : true,
1660 install_dir : systemgeneratordir)
1661
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001662if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001663 executable('systemd-cryptsetup',
1664 'src/cryptsetup/cryptsetup.c',
1665 include_directories : includes,
1666 link_with : [libshared],
1667 dependencies : [libcryptsetup],
1668 install_rpath : rootlibexecdir,
1669 install : true,
1670 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001671
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001672 executable('systemd-cryptsetup-generator',
1673 'src/cryptsetup/cryptsetup-generator.c',
1674 include_directories : includes,
1675 link_with : [libshared],
1676 dependencies : [libcryptsetup],
1677 install_rpath : rootlibexecdir,
1678 install : true,
1679 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001680
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001681 executable('systemd-veritysetup',
1682 'src/veritysetup/veritysetup.c',
1683 include_directories : includes,
1684 link_with : [libshared],
1685 dependencies : [libcryptsetup],
1686 install_rpath : rootlibexecdir,
1687 install : true,
1688 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001689
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001690 executable('systemd-veritysetup-generator',
1691 'src/veritysetup/veritysetup-generator.c',
1692 include_directories : includes,
1693 link_with : [libshared],
1694 dependencies : [libcryptsetup],
1695 install_rpath : rootlibexecdir,
1696 install : true,
1697 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001698endif
1699
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001700if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001701 executable('systemd-sysv-generator',
1702 'src/sysv-generator/sysv-generator.c',
1703 include_directories : includes,
1704 link_with : [libshared],
1705 install_rpath : rootlibexecdir,
1706 install : true,
1707 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001708
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001709 executable('systemd-rc-local-generator',
1710 'src/rc-local-generator/rc-local-generator.c',
1711 include_directories : includes,
1712 link_with : [libshared],
1713 install_rpath : rootlibexecdir,
1714 install : true,
1715 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001716endif
1717
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001718if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001719 executable('systemd-hostnamed',
1720 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001721 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001722 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001723 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001724 install : true,
1725 install_dir : rootlibexecdir)
1726
1727 exe = executable('hostnamectl',
1728 'src/hostname/hostnamectl.c',
1729 include_directories : includes,
1730 link_with : [libshared],
1731 install_rpath : rootlibexecdir,
1732 install : true)
1733 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001734endif
1735
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001736if conf.get('ENABLE_LOCALED') == 1
1737 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001738 # logind will load libxkbcommon.so dynamically on its own
1739 deps = [libdl]
1740 else
1741 deps = []
1742 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001743
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001744 executable('systemd-localed',
1745 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001746 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001747 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001748 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001749 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001750 install : true,
1751 install_dir : rootlibexecdir)
1752
1753 exe = executable('localectl',
1754 localectl_sources,
1755 include_directories : includes,
1756 link_with : [libshared],
1757 install_rpath : rootlibexecdir,
1758 install : true)
1759 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001760endif
1761
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001762if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001763 executable('systemd-timedated',
1764 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001765 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001766 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001767 install_rpath : rootlibexecdir,
1768 install : true,
1769 install_dir : rootlibexecdir)
1770
1771 exe = executable('timedatectl',
1772 'src/timedate/timedatectl.c',
1773 include_directories : includes,
1774 install_rpath : rootlibexecdir,
1775 link_with : [libshared],
1776 install : true)
1777 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001778endif
1779
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001780if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001781 executable('systemd-timesyncd',
1782 systemd_timesyncd_sources,
1783 include_directories : includes,
1784 link_with : [libshared],
1785 dependencies : [threads,
1786 libm],
1787 install_rpath : rootlibexecdir,
1788 install : true,
1789 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001790endif
1791
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001792if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001793 executable('systemd-machined',
1794 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001795 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001796 link_with : [libmachine_core,
1797 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001798 install_rpath : rootlibexecdir,
1799 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001800 install_dir : rootlibexecdir)
1801
1802 exe = executable('machinectl',
1803 'src/machine/machinectl.c',
1804 include_directories : includes,
1805 link_with : [libshared],
1806 dependencies : [threads,
1807 libxz,
1808 liblz4],
1809 install_rpath : rootlibexecdir,
1810 install : true,
1811 install_dir : rootbindir)
1812 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001813endif
1814
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001815if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001816 executable('systemd-importd',
1817 systemd_importd_sources,
1818 include_directories : includes,
1819 link_with : [libshared],
1820 dependencies : [threads],
1821 install_rpath : rootlibexecdir,
1822 install : true,
1823 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001824
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001825 systemd_pull = executable('systemd-pull',
1826 systemd_pull_sources,
1827 include_directories : includes,
1828 link_with : [libshared],
1829 dependencies : [libcurl,
1830 libz,
1831 libbzip2,
1832 libxz,
1833 libgcrypt],
1834 install_rpath : rootlibexecdir,
1835 install : true,
1836 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001837
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001838 systemd_import = executable('systemd-import',
1839 systemd_import_sources,
1840 include_directories : includes,
1841 link_with : [libshared],
1842 dependencies : [libcurl,
1843 libz,
1844 libbzip2,
1845 libxz],
1846 install_rpath : rootlibexecdir,
1847 install : true,
1848 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001849
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001850 systemd_export = executable('systemd-export',
1851 systemd_export_sources,
1852 include_directories : includes,
1853 link_with : [libshared],
1854 dependencies : [libcurl,
1855 libz,
1856 libbzip2,
1857 libxz],
1858 install_rpath : rootlibexecdir,
1859 install : true,
1860 install_dir : rootlibexecdir)
1861 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001862endif
1863
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001864if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001865 exe = executable('systemd-journal-upload',
1866 systemd_journal_upload_sources,
1867 include_directories : includes,
1868 link_with : [libshared],
1869 dependencies : [threads,
1870 libcurl,
1871 libgnutls,
1872 libxz,
1873 liblz4],
1874 install_rpath : rootlibexecdir,
1875 install : true,
1876 install_dir : rootlibexecdir)
1877 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001878endif
1879
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001880if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001881 s_j_remote = executable('systemd-journal-remote',
1882 systemd_journal_remote_sources,
1883 include_directories : includes,
1884 link_with : [libshared],
1885 dependencies : [threads,
1886 libmicrohttpd,
1887 libgnutls,
1888 libxz,
1889 liblz4],
1890 install_rpath : rootlibexecdir,
1891 install : true,
1892 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001893
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001894 s_j_gatewayd = executable('systemd-journal-gatewayd',
1895 systemd_journal_gatewayd_sources,
1896 include_directories : includes,
1897 link_with : [libshared],
1898 dependencies : [threads,
1899 libmicrohttpd,
1900 libgnutls,
1901 libxz,
1902 liblz4],
1903 install_rpath : rootlibexecdir,
1904 install : true,
1905 install_dir : rootlibexecdir)
1906 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001907endif
1908
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001909if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001910 executable('systemd-coredump',
1911 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001912 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001913 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001914 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001915 libacl,
1916 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001917 libxz,
1918 liblz4],
1919 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001920 install : true,
1921 install_dir : rootlibexecdir)
1922
1923 exe = executable('coredumpctl',
1924 coredumpctl_sources,
1925 include_directories : includes,
1926 link_with : [libshared],
1927 dependencies : [threads,
1928 libxz,
1929 liblz4],
1930 install_rpath : rootlibexecdir,
1931 install : true)
1932 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001933endif
1934
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001935if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001936 exe = executable('systemd-binfmt',
1937 'src/binfmt/binfmt.c',
1938 include_directories : includes,
1939 link_with : [libshared],
1940 install_rpath : rootlibexecdir,
1941 install : true,
1942 install_dir : rootlibexecdir)
1943 public_programs += [exe]
1944
1945 meson.add_install_script('sh', '-c',
1946 mkdir_p.format(binfmtdir))
1947 meson.add_install_script('sh', '-c',
1948 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
1949endif
1950
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001951if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001952 executable('systemd-vconsole-setup',
1953 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001954 include_directories : includes,
1955 link_with : [libshared],
1956 install_rpath : rootlibexecdir,
1957 install : true,
1958 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001959endif
1960
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001961if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001962 executable('systemd-random-seed',
1963 'src/random-seed/random-seed.c',
1964 include_directories : includes,
1965 link_with : [libshared],
1966 install_rpath : rootlibexecdir,
1967 install : true,
1968 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001969endif
1970
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001971if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001972 executable('systemd-firstboot',
1973 'src/firstboot/firstboot.c',
1974 include_directories : includes,
1975 link_with : [libshared],
1976 dependencies : [libcrypt],
1977 install_rpath : rootlibexecdir,
1978 install : true,
1979 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001980endif
1981
1982executable('systemd-remount-fs',
1983 'src/remount-fs/remount-fs.c',
1984 'src/core/mount-setup.c',
1985 'src/core/mount-setup.h',
1986 include_directories : includes,
1987 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001988 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001989 install : true,
1990 install_dir : rootlibexecdir)
1991
1992executable('systemd-machine-id-setup',
1993 'src/machine-id-setup/machine-id-setup-main.c',
1994 'src/core/machine-id-setup.c',
1995 'src/core/machine-id-setup.h',
1996 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001997 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001998 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001999 install : true,
2000 install_dir : rootbindir)
2001
2002executable('systemd-fsck',
2003 'src/fsck/fsck.c',
2004 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002005 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002006 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002007 install : true,
2008 install_dir : rootlibexecdir)
2009
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002010executable('systemd-growfs',
2011 'src/partition/growfs.c',
2012 include_directories : includes,
2013 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002014 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002015 install_rpath : rootlibexecdir,
2016 install : true,
2017 install_dir : rootlibexecdir)
2018
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002019executable('systemd-makefs',
2020 'src/partition/makefs.c',
2021 include_directories : includes,
2022 link_with : [libshared],
2023 install_rpath : rootlibexecdir,
2024 install : true,
2025 install_dir : rootlibexecdir)
2026
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002027executable('systemd-sleep',
2028 'src/sleep/sleep.c',
2029 include_directories : includes,
2030 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002031 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002032 install : true,
2033 install_dir : rootlibexecdir)
2034
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002035exe = executable('systemd-sysctl',
2036 'src/sysctl/sysctl.c',
2037 include_directories : includes,
2038 link_with : [libshared],
2039 install_rpath : rootlibexecdir,
2040 install : true,
2041 install_dir : rootlibexecdir)
2042public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002043
2044executable('systemd-ac-power',
2045 'src/ac-power/ac-power.c',
2046 include_directories : includes,
2047 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002048 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002049 install : true,
2050 install_dir : rootlibexecdir)
2051
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002052exe = executable('systemd-detect-virt',
2053 'src/detect-virt/detect-virt.c',
2054 include_directories : includes,
2055 link_with : [libshared],
2056 install_rpath : rootlibexecdir,
2057 install : true)
2058public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002059
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002060exe = executable('systemd-delta',
2061 'src/delta/delta.c',
2062 include_directories : includes,
2063 link_with : [libshared],
2064 install_rpath : rootlibexecdir,
2065 install : true)
2066public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002067
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002068exe = executable('systemd-escape',
2069 'src/escape/escape.c',
2070 include_directories : includes,
2071 link_with : [libshared],
2072 install_rpath : rootlibexecdir,
2073 install : true,
2074 install_dir : rootbindir)
2075public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002076
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002077exe = executable('systemd-notify',
2078 'src/notify/notify.c',
2079 include_directories : includes,
2080 link_with : [libshared],
2081 install_rpath : rootlibexecdir,
2082 install : true,
2083 install_dir : rootbindir)
2084public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002085
2086executable('systemd-volatile-root',
2087 'src/volatile-root/volatile-root.c',
2088 include_directories : includes,
2089 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002090 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002091 install : true,
2092 install_dir : rootlibexecdir)
2093
2094executable('systemd-cgroups-agent',
2095 'src/cgroups-agent/cgroups-agent.c',
2096 include_directories : includes,
2097 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002098 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002099 install : true,
2100 install_dir : rootlibexecdir)
2101
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002102exe = executable('systemd-path',
2103 'src/path/path.c',
2104 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002105 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002106 install_rpath : rootlibexecdir,
2107 install : true)
2108public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002109
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002110exe = executable('systemd-ask-password',
2111 'src/ask-password/ask-password.c',
2112 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002113 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002114 install_rpath : rootlibexecdir,
2115 install : true,
2116 install_dir : rootbindir)
2117public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002118
2119executable('systemd-reply-password',
2120 'src/reply-password/reply-password.c',
2121 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002122 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002123 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002124 install : true,
2125 install_dir : rootlibexecdir)
2126
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002127exe = executable('systemd-tty-ask-password-agent',
2128 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2129 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002130 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002131 install_rpath : rootlibexecdir,
2132 install : true,
2133 install_dir : rootbindir)
2134public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002135
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002136exe = executable('systemd-cgls',
2137 'src/cgls/cgls.c',
2138 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002139 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002140 install_rpath : rootlibexecdir,
2141 install : true)
2142public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002143
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002144exe = executable('systemd-cgtop',
2145 'src/cgtop/cgtop.c',
2146 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002147 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002148 install_rpath : rootlibexecdir,
2149 install : true)
2150public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002151
2152executable('systemd-initctl',
2153 'src/initctl/initctl.c',
2154 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002155 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002156 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002157 install : true,
2158 install_dir : rootlibexecdir)
2159
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002160exe = executable('systemd-mount',
2161 'src/mount/mount-tool.c',
2162 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002163 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002164 install_rpath : rootlibexecdir,
2165 install : true)
2166public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002167
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002168meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002169 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002170
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002171exe = executable('systemd-run',
2172 'src/run/run.c',
2173 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002174 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002175 install_rpath : rootlibexecdir,
2176 install : true)
2177public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002178
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002179exe = executable('systemd-stdio-bridge',
2180 'src/stdio-bridge/stdio-bridge.c',
2181 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002182 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002183 install_rpath : rootlibexecdir,
2184 install : true)
2185public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002186
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002187exe = executable('busctl',
2188 'src/busctl/busctl.c',
2189 'src/busctl/busctl-introspect.c',
2190 'src/busctl/busctl-introspect.h',
2191 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002192 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002193 install_rpath : rootlibexecdir,
2194 install : true)
2195public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002196
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002197if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002198 exe = executable('systemd-sysusers',
2199 'src/sysusers/sysusers.c',
2200 include_directories : includes,
2201 link_with : [libshared],
2202 install_rpath : rootlibexecdir,
2203 install : true,
2204 install_dir : rootbindir)
2205 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002206endif
2207
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002208if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002209 exe = executable('systemd-tmpfiles',
2210 'src/tmpfiles/tmpfiles.c',
2211 include_directories : includes,
2212 link_with : [libshared],
2213 dependencies : [libacl],
2214 install_rpath : rootlibexecdir,
2215 install : true,
2216 install_dir : rootbindir)
2217 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002218
2219 test('test-systemd-tmpfiles',
2220 test_systemd_tmpfiles_py,
2221 args : exe.full_path())
2222 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002223endif
2224
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002225if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002226 exe = executable('systemd-hwdb',
2227 'src/hwdb/hwdb.c',
2228 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2229 include_directories : includes,
Michael Biebl0da6f392017-04-21 18:32:14 +02002230 link_with : [libudev_internal],
2231 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002232 install : true,
2233 install_dir : rootbindir)
2234 public_programs += [exe]
2235endif
2236
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002237if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002238 executable('systemd-quotacheck',
2239 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002240 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002241 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002242 install_rpath : rootlibexecdir,
2243 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002244 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002245endif
2246
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002247exe = executable('systemd-socket-proxyd',
2248 'src/socket-proxy/socket-proxyd.c',
2249 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002250 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002251 dependencies : [threads],
2252 install_rpath : rootlibexecdir,
2253 install : true,
2254 install_dir : rootlibexecdir)
2255public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002256
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002257exe = executable('systemd-udevd',
2258 systemd_udevd_sources,
2259 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002260 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002261 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002262 libsystemd_network,
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002263 libudev_internal],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002264 dependencies : [threads,
2265 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002266 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002267 libacl,
2268 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002269 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002270 install : true,
2271 install_dir : rootlibexecdir)
2272public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002273
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002274exe = executable('udevadm',
2275 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002276 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002277 include_directories : includes,
2278 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002279 libsystemd_network,
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002280 libudev_internal],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002281 dependencies : [threads,
2282 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002283 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002284 libacl,
2285 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002286 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002287 install : true,
2288 install_dir : rootbindir)
2289public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002290
2291executable('systemd-shutdown',
2292 systemd_shutdown_sources,
2293 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002294 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002295 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002296 install : true,
2297 install_dir : rootlibexecdir)
2298
2299executable('systemd-update-done',
2300 'src/update-done/update-done.c',
2301 include_directories : includes,
2302 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002303 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002304 install : true,
2305 install_dir : rootlibexecdir)
2306
2307executable('systemd-update-utmp',
2308 'src/update-utmp/update-utmp.c',
2309 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002310 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002311 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002312 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002313 install : true,
2314 install_dir : rootlibexecdir)
2315
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002316if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002317 executable('systemd-modules-load',
2318 'src/modules-load/modules-load.c',
2319 include_directories : includes,
2320 link_with : [libshared],
2321 dependencies : [libkmod],
2322 install_rpath : rootlibexecdir,
2323 install : true,
2324 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002325
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002326 meson.add_install_script('sh', '-c',
2327 mkdir_p.format(modulesloaddir))
2328 meson.add_install_script('sh', '-c',
2329 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002330endif
2331
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002332exe = executable('systemd-nspawn',
2333 systemd_nspawn_sources,
2334 'src/core/mount-setup.c', # FIXME: use a variable?
2335 'src/core/mount-setup.h',
2336 'src/core/loopback-setup.c',
2337 'src/core/loopback-setup.h',
2338 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002339 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002340 dependencies : [libacl,
2341 libblkid,
2342 libseccomp,
2343 libselinux],
2344 install_rpath : rootlibexecdir,
2345 install : true)
2346public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002347
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002348if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002349 executable('systemd-networkd',
2350 systemd_networkd_sources,
2351 include_directories : includes,
2352 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002353 libsystemd_network,
2354 libudev_internal,
2355 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002356 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002357 install_rpath : rootlibexecdir,
2358 install : true,
2359 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002360
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002361 executable('systemd-networkd-wait-online',
2362 systemd_networkd_wait_online_sources,
2363 include_directories : includes,
2364 link_with : [libnetworkd_core,
2365 libshared],
2366 install_rpath : rootlibexecdir,
2367 install : true,
2368 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002369
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002370 exe = executable('networkctl',
2371 networkctl_sources,
2372 include_directories : includes,
2373 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002374 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002375 install_rpath : rootlibexecdir,
2376 install : true,
2377 install_dir : rootbindir)
2378 public_programs += [exe]
2379endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002380
2381executable('systemd-sulogin-shell',
2382 ['src/sulogin-shell/sulogin-shell.c'],
2383 include_directories : includes,
2384 link_with : [libshared],
2385 install_rpath : rootlibexecdir,
2386 install : true,
2387 install_dir : rootlibexecdir)
2388
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002389############################################################
2390
2391foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002392 sources = tuple[0]
2393 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2394 dependencies = tuple[2]
2395 condition = tuple.length() >= 4 ? tuple[3] : ''
2396 type = tuple.length() >= 5 ? tuple[4] : ''
2397 defs = tuple.length() >= 6 ? tuple[5] : []
2398 incs = tuple.length() >= 7 ? tuple[6] : includes
2399 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002400
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002401 name = sources[0].split('/')[-1].split('.')[0]
2402 if type.startswith('timeout=')
2403 timeout = type.split('=')[1].to_int()
2404 type = ''
2405 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002406
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002407 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002408 exe = executable(
2409 name,
2410 sources,
2411 include_directories : incs,
2412 link_with : link_with,
2413 dependencies : dependencies,
2414 c_args : defs,
2415 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002416 install : install_tests,
2417 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002418
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002419 if type == 'manual'
2420 message('@0@ is a manual test'.format(name))
2421 elif type == 'unsafe' and want_tests != 'unsafe'
2422 message('@0@ is an unsafe test'.format(name))
2423 else
2424 test(name, exe,
2425 env : test_env,
2426 timeout : timeout)
2427 endif
2428 else
2429 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2430 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002431endforeach
2432
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002433test_libsystemd_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002434 'test-libsystemd-sym',
2435 test_libsystemd_sym_c,
2436 include_directories : includes,
2437 link_with : [libsystemd],
2438 install : install_tests,
2439 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002440test('test-libsystemd-sym',
2441 test_libsystemd_sym)
2442
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002443test_libudev_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002444 'test-libudev-sym',
2445 test_libudev_sym_c,
2446 include_directories : includes,
2447 c_args : ['-Wno-deprecated-declarations'],
2448 link_with : [libudev],
2449 install : install_tests,
2450 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002451test('test-libudev-sym',
2452 test_libudev_sym)
2453
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002454############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002455
2456make_directive_index_py = find_program('tools/make-directive-index.py')
2457make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002458xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002459hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002460
2461subdir('units')
2462subdir('sysctl.d')
2463subdir('sysusers.d')
2464subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002465subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002466subdir('hwdb')
2467subdir('network')
2468subdir('man')
2469subdir('shell-completion/bash')
2470subdir('shell-completion/zsh')
2471subdir('docs/sysvinit')
2472subdir('docs/var-log')
2473
2474# FIXME: figure out if the warning is true:
2475# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2476install_subdir('factory/etc',
2477 install_dir : factorydir)
2478
2479
2480install_data('xorg/50-systemd-user.sh',
2481 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002482install_data('modprobe.d/systemd.conf',
2483 install_dir : modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002484install_data('README',
2485 'NEWS',
2486 'CODING_STYLE',
2487 'DISTRO_PORTING',
2488 'ENVIRONMENT.md',
2489 'LICENSE.GPL2',
2490 'LICENSE.LGPL2.1',
Felipe Satelerf9f54412017-12-18 10:58:13 -03002491 'TRANSIENT-SETTINGS.md',
2492 'UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002493 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2494 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002495
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002496meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2497meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2498
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002499############################################################
2500
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002501meson_check_help = find_program('tools/meson-check-help.sh')
2502
2503foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002504 name = exec.full_path().split('/')[-1]
2505 test('check-help-' + name,
2506 meson_check_help,
2507 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002508endforeach
2509
2510############################################################
2511
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002512if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002513 all_files = run_command(
2514 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002515 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002516 'ls-files',
2517 ':/*.[ch]'])
2518 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002519
userwithuide85a6902017-08-09 13:41:44 +00002520 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002521 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002522 output : 'tags',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002523 command : ['env', 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002524 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002525 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002526 output : 'ctags',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002527 command : ['env', 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002528endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002529
2530if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002531 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002532 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002533 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002534 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002535endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002536
2537if git.found()
2538 git_head = run_command(
2539 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002540 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002541 'rev-parse', 'HEAD']).stdout().strip()
2542 git_head_short = run_command(
2543 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002544 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002545 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2546
2547 run_target(
2548 'git-snapshot',
2549 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002550 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002551 git_head_short),
2552 '--prefix', 'systemd-@0@/'.format(git_head),
2553 'HEAD'])
2554endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002555
2556############################################################
2557
2558status = [
2559 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2560
Yu Watanabe359b4962017-11-25 20:35:24 +09002561 'prefix directory: @0@'.format(prefixdir),
2562 'rootprefix directory: @0@'.format(rootprefixdir),
2563 'sysconf directory: @0@'.format(sysconfdir),
2564 'include directory: @0@'.format(includedir),
2565 'lib directory: @0@'.format(libdir),
2566 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002567 'SysV init scripts: @0@'.format(sysvinit_path),
2568 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002569 'PAM modules directory: @0@'.format(pamlibdir),
2570 'PAM configuration directory: @0@'.format(pamconfdir),
2571 'RPM macros directory: @0@'.format(rpmmacrosdir),
2572 'modprobe.d directory: @0@'.format(modprobedir),
2573 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2574 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2575 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2576 'bash completions directory: @0@'.format(bashcompletiondir),
2577 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002578 'extra start script: @0@'.format(get_option('rc-local')),
2579 'extra stop script: @0@'.format(get_option('halt-local')),
2580 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2581 get_option('debug-tty')),
2582 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002583 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002584 'maximum system UID: @0@'.format(system_uid_max),
2585 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002586 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2587 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2588 'minimum container UID base: @0@'.format(container_uid_base_min),
2589 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002590 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002591 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002592 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002593 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002594 'nobody user name: @0@'.format(nobody_user),
2595 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002596 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002597 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002598
2599 'default DNSSEC mode: @0@'.format(default_dnssec),
2600 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2601 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2602
2603alt_dns_servers = '\n '.join(dns_servers.split(' '))
2604alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2605status += [
2606 'default DNS servers: @0@'.format(alt_dns_servers),
2607 'default NTP servers: @0@'.format(alt_ntp_servers)]
2608
2609alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2610 '@@0@'.format(time_epoch)).stdout().strip()
2611status += [
2612 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2613
2614# TODO:
2615# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2616# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2617# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2618
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002619if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002620 status += [
2621 'efi arch: @0@'.format(efi_arch)]
2622
2623 if have_gnu_efi
2624 status += [
2625 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2626 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002627 'EFI lib directory: @0@'.format(efi_libdir),
2628 'EFI lds directory: @0@'.format(efi_ldsdir),
2629 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002630 endif
2631endif
2632
2633found = []
2634missing = []
2635
2636foreach tuple : [
2637 ['libcryptsetup'],
2638 ['PAM'],
2639 ['AUDIT'],
2640 ['IMA'],
2641 ['AppArmor'],
2642 ['SELinux'],
2643 ['SECCOMP'],
2644 ['SMACK'],
2645 ['zlib'],
2646 ['xz'],
2647 ['lz4'],
2648 ['bzip2'],
2649 ['ACL'],
2650 ['gcrypt'],
2651 ['qrencode'],
2652 ['microhttpd'],
2653 ['gnutls'],
2654 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002655 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002656 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002657 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002658 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002659 ['libiptc'],
2660 ['elfutils'],
2661 ['binfmt'],
2662 ['vconsole'],
2663 ['quotacheck'],
2664 ['tmpfiles'],
2665 ['environment.d'],
2666 ['sysusers'],
2667 ['firstboot'],
2668 ['randomseed'],
2669 ['backlight'],
2670 ['rfkill'],
2671 ['logind'],
2672 ['machined'],
2673 ['importd'],
2674 ['hostnamed'],
2675 ['timedated'],
2676 ['timesyncd'],
2677 ['localed'],
2678 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002679 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002680 ['coredump'],
2681 ['polkit'],
2682 ['legacy pkla', install_polkit_pkla],
2683 ['efi'],
2684 ['gnu-efi', have_gnu_efi],
2685 ['kmod'],
2686 ['xkbcommon'],
2687 ['blkid'],
2688 ['dbus'],
2689 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002690 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002691 ['hwdb'],
2692 ['tpm'],
2693 ['man pages', want_man],
2694 ['html pages', want_html],
2695 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002696 ['split /usr', conf.get('HAVE_SPLIT_USR') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002697 ['SysV compat'],
2698 ['utmp'],
2699 ['ldconfig'],
2700 ['hibernate'],
2701 ['adm group', get_option('adm-group')],
2702 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002703 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002704 ['debug hashmap'],
2705 ['debug mmap cache'],
2706]
2707
2708 cond = tuple.get(1, '')
2709 if cond == ''
2710 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2711 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002712 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002713 endif
2714 if cond
2715 found += [tuple[0]]
2716 else
2717 missing += [tuple[0]]
2718 endif
2719endforeach
2720
2721status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002722 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002723 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002724 '',
2725 'disabled features: @0@'.format(', '.join(missing)),
2726 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002727message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002728
2729if rootprefixdir != rootprefix_default
2730 message('WARNING:\n' +
2731 ' Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2732 ' systemd used fixed names for unit file directories and other paths, so anything\n' +
2733 ' except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
2734endif