blob: 924274de630af0d1c3b28dc24d2987efdedb6a5f [file] [log] [blame]
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01001# SPDX-License-Identifier: LGPL-2.1+
2#
3# Copyright 2017 Zbigniew Jędrzejewski-Szmek
4#
5# systemd is free software; you can redistribute it and/or modify it
6# under the terms of the GNU Lesser General Public License as published by
7# the Free Software Foundation; either version 2.1 of the License, or
8# (at your option) any later version.
9#
10# systemd is distributed in the hope that it will be useful, but
11# WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13# Lesser General Public License for more details.
14#
15# You should have received a copy of the GNU Lesser General Public License
16# along with systemd; If not, see <http://www.gnu.org/licenses/>.
17
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040018project('systemd', 'c',
Lennart Poetteringcbd73c62017-12-11 16:10:25 +010019 version : '236',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040020 license : 'LGPLv2+',
21 default_options: [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040022 'c_std=gnu99',
23 'prefix=/usr',
24 'sysconfdir=/etc',
25 'localstatedir=/var',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040026 ],
Zbigniew Jędrzejewski-Szmek86ea8d72017-11-20 08:08:43 +010027 meson_version : '>= 0.41',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040028 )
29
Lennart Poetteringcbd73c62017-12-11 16:10:25 +010030libsystemd_version = '0.20.0'
31libudev_version = '1.6.8'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020032
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040033# We need the same data in three different formats, ugh!
34# Also, for hysterical reasons, we use different variable
35# names, sometimes. Not all variables are included in every
36# set. Ugh, ugh, ugh!
37conf = configuration_data()
38conf.set_quoted('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version())
39conf.set_quoted('PACKAGE_VERSION', meson.project_version())
40
41substs = configuration_data()
42substs.set('PACKAGE_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
43substs.set('PACKAGE_VERSION', meson.project_version())
44
45m4_defines = []
46
47#####################################################################
48
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040049# Try to install the git pre-commit hook
50git_hook = run_command(join_paths(meson.source_root(), 'tools/add-git-hook.sh'))
51if git_hook.returncode() == 0
52 message(git_hook.stdout().strip())
53endif
54
55#####################################################################
56
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010057split_usr = get_option('split-usr')
58conf.set10('HAVE_SPLIT_USR', split_usr)
59
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010060rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010061# Unusual rootprefixdir values are used by some distros
62# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010063rootprefix_default = get_option('split-usr') ? '/' : '/usr'
64if rootprefixdir == ''
65 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010066endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040067
68sysvinit_path = get_option('sysvinit-path')
69sysvrcnd_path = get_option('sysvrcnd-path')
Max Harmathy54248242017-12-15 16:05:25 +010070have = sysvinit_path != '' and sysvrcnd_path != ''
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020071conf.set10('HAVE_SYSV_COMPAT', have,
72 description : 'SysV init scripts and rcN.d links are supported')
73m4_defines += have ? ['-DHAVE_SYSV_COMPAT'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040074
75# join_paths ignore the preceding arguments if an absolute component is
76# encountered, so this should canonicalize various paths when they are
77# absolute or relative.
78prefixdir = get_option('prefix')
79if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040080 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040081endif
82bindir = join_paths(prefixdir, get_option('bindir'))
83libdir = join_paths(prefixdir, get_option('libdir'))
84sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
85includedir = join_paths(prefixdir, get_option('includedir'))
86datadir = join_paths(prefixdir, get_option('datadir'))
87localstatedir = join_paths('/', get_option('localstatedir'))
88
89rootbindir = join_paths(rootprefixdir, 'bin')
90rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
91
92rootlibdir = get_option('rootlibdir')
93if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040094 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040095endif
96
97# Dirs of external packages
Michael Bieble17e5ba2017-04-13 10:30:56 -040098pkgconfigdatadir = join_paths(datadir, 'pkgconfig')
99pkgconfiglibdir = join_paths(libdir, 'pkgconfig')
100polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
101polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
102polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
103varlogdir = join_paths(localstatedir, 'log')
104xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900105rpmmacrosdir = get_option('rpmmacrosdir')
106if rpmmacrosdir != 'no'
107 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
108endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200109modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400110
111# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400112pkgdatadir = join_paths(datadir, 'systemd')
113environmentdir = join_paths(prefixdir, 'lib/environment.d')
114pkgsysconfdir = join_paths(sysconfdir, 'systemd')
115userunitdir = join_paths(prefixdir, 'lib/systemd/user')
116userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
117tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
118sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
119sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
120binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
121modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
122networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
123pkgincludedir = join_paths(includedir, 'systemd')
124systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
125usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
126systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
127userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
128systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
129systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
130systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
131systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
132udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
133udevhomedir = udevlibexecdir
134udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
135udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
136catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
137kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
138factorydir = join_paths(datadir, 'factory')
139docdir = join_paths(datadir, 'doc/systemd')
140bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
141testsdir = join_paths(prefixdir, 'lib/systemd/tests')
142systemdstatedir = join_paths(localstatedir, 'lib/systemd')
143catalogstatedir = join_paths(systemdstatedir, 'catalog')
144randomseeddir = join_paths(localstatedir, 'lib/systemd')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400145
146dbuspolicydir = get_option('dbuspolicydir')
147if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400148 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400149endif
150
151dbussessionservicedir = get_option('dbussessionservicedir')
152if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400153 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400154endif
155
156dbussystemservicedir = get_option('dbussystemservicedir')
157if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400158 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400159endif
160
161pamlibdir = get_option('pamlibdir')
162if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400163 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400164endif
165
166pamconfdir = get_option('pamconfdir')
167if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400168 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400169endif
170
171conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400172conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400173conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
174conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
175conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400176conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
177conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400178conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400179conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
180conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400181conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
182conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
183conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
184conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100185conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100186conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400187conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
188conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
189conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
190conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
191conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100192conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400193conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400194conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
195conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400196conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
197conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
198conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
199conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
200conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
201conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400202conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
203conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400204conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400205conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400206conf.set_quoted('LIBDIR', libdir)
207conf.set_quoted('ROOTLIBDIR', rootlibdir)
208conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
209conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400210conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
211conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
212conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
213conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
214conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
215conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400216
217conf.set_quoted('ABS_BUILD_DIR', meson.build_root())
218conf.set_quoted('ABS_SRC_DIR', meson.source_root())
219
220substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400221substs.set('exec_prefix', prefixdir)
222substs.set('libdir', libdir)
223substs.set('rootlibdir', rootlibdir)
224substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400225substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400226substs.set('bindir', bindir)
227substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400228substs.set('rootlibexecdir', rootlibexecdir)
229substs.set('systemunitdir', systemunitdir)
230substs.set('userunitdir', userunitdir)
231substs.set('systempresetdir', systempresetdir)
232substs.set('userpresetdir', userpresetdir)
233substs.set('udevhwdbdir', udevhwdbdir)
234substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400235substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400236substs.set('catalogdir', catalogdir)
237substs.set('tmpfilesdir', tmpfilesdir)
238substs.set('sysusersdir', sysusersdir)
239substs.set('sysctldir', sysctldir)
240substs.set('binfmtdir', binfmtdir)
241substs.set('modulesloaddir', modulesloaddir)
242substs.set('systemgeneratordir', systemgeneratordir)
243substs.set('usergeneratordir', usergeneratordir)
244substs.set('systemenvgeneratordir', systemenvgeneratordir)
245substs.set('userenvgeneratordir', userenvgeneratordir)
246substs.set('systemshutdowndir', systemshutdowndir)
247substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400248substs.set('VARLOGDIR', varlogdir)
249substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400250substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
251substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400252substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
253substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
254substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
255substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400256
257#####################################################################
258
259cc = meson.get_compiler('c')
260pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400261check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400262
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400263cxx = find_program('c++', required : false)
264if cxx.found()
265 # Used only for tests
266 add_languages('cpp')
267endif
268
Zbigniew Jędrzejewski-Szmek75cf1d62017-07-04 17:59:15 -0400269foreach arg : ['-Wextra',
Zbigniew Jędrzejewski-Szmek70160ce2017-10-03 12:11:49 +0200270 '-Werror=undef',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400271 '-Wlogical-op',
272 '-Wmissing-include-dirs',
273 '-Wold-style-definition',
274 '-Wpointer-arith',
275 '-Winit-self',
276 '-Wdeclaration-after-statement',
277 '-Wfloat-equal',
278 '-Wsuggest-attribute=noreturn',
279 '-Werror=missing-prototypes',
280 '-Werror=implicit-function-declaration',
281 '-Werror=missing-declarations',
282 '-Werror=return-type',
283 '-Werror=incompatible-pointer-types',
284 '-Werror=format=2',
285 '-Wstrict-prototypes',
286 '-Wredundant-decls',
287 '-Wmissing-noreturn',
Zbigniew Jędrzejewski-Szmek97279d82017-11-20 14:23:40 +0100288 '-Wimplicit-fallthrough=5',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400289 '-Wshadow',
290 '-Wendif-labels',
291 '-Wstrict-aliasing=2',
292 '-Wwrite-strings',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400293 '-Werror=overflow',
294 '-Wdate-time',
295 '-Wnested-externs',
296 '-ffast-math',
297 '-fno-common',
298 '-fdiagnostics-show-option',
299 '-fno-strict-aliasing',
300 '-fvisibility=hidden',
301 '-fstack-protector',
302 '-fstack-protector-strong',
303 '-fPIE',
304 '--param=ssp-buffer-size=4',
305 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400306 if cc.has_argument(arg)
307 add_project_arguments(arg, language : 'c')
308 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400309endforeach
310
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400311# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
312# arguments, just emits a warnings. So test for the "positive" version instead.
313foreach arg : ['unused-parameter',
314 'missing-field-initializers',
315 'unused-result',
Zbigniew Jędrzejewski-Szmekfb1b5882017-09-04 19:49:12 +0300316 'format-signedness',
317 'error=nonnull', # work-around for gcc 7.1 turning this on on its own
318 ]
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400319 if cc.has_argument('-W' + arg)
320 add_project_arguments('-Wno-' + arg, language : 'c')
321 endif
322endforeach
323
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400324if cc.compiles('
325 #include <time.h>
326 #include <inttypes.h>
327 typedef uint64_t usec_t;
328 usec_t now(clockid_t clock);
329 int main(void) {
330 struct timespec now;
331 return 0;
332 }
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400333', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400334 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400335endif
336
337if cc.get_id() == 'clang'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400338 foreach arg : ['-Wno-typedef-redefinition',
339 '-Wno-gnu-variable-sized-type-not-at-end',
340 ]
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400341 if cc.has_argument(arg,
342 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400343 add_project_arguments(arg, language : 'c')
344 endif
345 endforeach
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400346endif
347
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400348link_test_c = files('tools/meson-link-test.c')
349
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400350# --as-needed and --no-undefined are provided by meson by default,
351# run mesonconf to see what is enabled
352foreach arg : ['-Wl,-z,relro',
353 '-Wl,-z,now',
354 '-pie',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400355 ]
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400356
357 have = run_command(check_compilation_sh,
358 cc.cmd_array(), '-x', 'c', arg,
359 '-include', link_test_c).returncode() == 0
360 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
361 if have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400362 add_project_link_arguments(arg, language : 'c')
363 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400364endforeach
365
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400366if get_option('buildtype') != 'debug'
367 foreach arg : ['-ffunction-sections',
368 '-fdata-sections']
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400369 if cc.has_argument(arg,
370 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400371 add_project_arguments(arg, language : 'c')
372 endif
373 endforeach
374
375 foreach arg : ['-Wl,--gc-sections']
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400376 have = run_command(check_compilation_sh,
377 cc.cmd_array(), '-x', 'c', arg,
378 '-include', link_test_c).returncode() == 0
379 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
380 if have
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400381 add_project_link_arguments(arg, language : 'c')
382 endif
383 endforeach
384endif
385
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400386cpp = ' '.join(cc.cmd_array()) + ' -E'
387
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400388#####################################################################
389# compilation result tests
390
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400391conf.set('_GNU_SOURCE', true)
392conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400393
394conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
395conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
396conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
397conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
398conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
399conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
400conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
401
402decl_headers = '''
403#include <uchar.h>
404#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000405#include <linux/fib_rules.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400406'''
407# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
408
409foreach decl : ['char16_t',
410 'char32_t',
411 'key_serial_t',
412 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000413 'struct fib_rule_uid_range',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400414 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400415
416 # We get -1 if the size cannot be determined
417 have = cc.sizeof(decl, prefix : decl_headers) > 0
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200418 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400419endforeach
420
421foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
422 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
423 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
424 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530425 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400426 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
427 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
428 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
429 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
430 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530431 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400432 # if_tunnel.h is buggy and cannot be included on its own
433 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
434 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
435 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
436 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
437 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
438 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
439 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530440 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400441 ['NDA_IFINDEX', 'linux/neighbour.h'],
442 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000443 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400444 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530445 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400446 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400447 prefix = decl.length() > 2 ? decl[2] : ''
448 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200449 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400450endforeach
451
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400452foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200453 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400454endforeach
455
456foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100457 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100458 ['gettid', '''#include <sys/types.h>
459 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100460 ['pivot_root', '''#include <stdlib.h>
461 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100462 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400463 #include <sys/stat.h>
464 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100465 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100466 ['renameat2', '''#include <stdio.h>
467 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400468 ['kcmp', '''#include <linux/kcmp.h>'''],
469 ['keyctl', '''#include <sys/types.h>
470 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100471 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400472 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200473 ['bpf', '''#include <sys/syscall.h>
474 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmek38f1ae02017-04-19 16:14:16 -0400475 ['explicit_bzero' , '''#include <string.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400476]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400477
Lennart Poettering85db59b2017-12-25 12:01:14 +0100478 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200479 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400480endforeach
481
Lennart Poettering85db59b2017-12-25 12:01:14 +0100482if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200483 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200484 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400485else
486 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200487 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200488 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400489endif
490
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400491#####################################################################
492
493sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400494awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400495m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400496stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400497git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400498
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400499meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400500mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400501test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
502splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400503
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400504# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
505# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500506progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400507 ['quotacheck', '/usr/sbin/quotacheck' ],
508 ['kill', '/usr/bin/kill' ],
509 ['kmod', '/usr/bin/kmod' ],
510 ['kexec', '/usr/sbin/kexec' ],
511 ['sulogin', '/usr/sbin/sulogin' ],
512 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
513 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
514 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
515 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
516 ]
517foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400518 path = get_option(prog[0] + '-path')
519 if path != ''
520 message('Using @1@ for @0@'.format(prog[0], path))
521 else
522 exe = find_program(prog[0],
523 '/usr/sbin/' + prog[0],
524 '/sbin/' + prog[0],
525 required: false)
526 path = exe.found() ? exe.path() : prog[1]
527 endif
528 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
529 conf.set_quoted(name, path)
530 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400531endforeach
532
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500533conf.set_quoted('TELINIT', get_option('telinit-path'))
534
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400535if run_command('ln', '--relative', '--help').returncode() != 0
536 error('ln does not support --relative')
537endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400538
539############################################################
540
541gperf = find_program('gperf')
542
543gperf_test_format = '''
544#include <string.h>
545const char * in_word_set(const char *, @0@);
546@1@
547'''
548gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
549gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
550gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
551if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400552 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400553else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400554 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
555 if cc.compiles(gperf_test)
556 gperf_len_type = 'unsigned'
557 else
558 error('unable to determine gperf len type')
559 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400560endif
561message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400562conf.set('GPERF_LEN_TYPE', gperf_len_type,
563 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400564
565############################################################
566
567if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400568 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400569endif
570foreach header : ['linux/btrfs.h',
571 'linux/memfd.h',
572 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200573 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400574 'valgrind/memcheck.h',
575 'valgrind/valgrind.h',
576 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400577
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200578 conf.set10('HAVE_' + header.underscorify().to_upper(),
579 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400580endforeach
581
582############################################################
583
584conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400585conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
586gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400587
588default_hierarchy = get_option('default-hierarchy')
589conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
590 description : 'default cgroup hierarchy as string')
591if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400592 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400593elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400594 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400595else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400596 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400597endif
598
599time_epoch = get_option('time-epoch')
600if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400601 NEWS = files('NEWS')
602 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400603endif
604time_epoch = time_epoch.to_int()
605conf.set('TIME_EPOCH', time_epoch)
606
607system_uid_max = get_option('system-uid-max')
608if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400609 system_uid_max = run_command(
610 awk,
611 'BEGIN { uid=999 } /^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
612 '/etc/login.defs').stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400613endif
614system_uid_max = system_uid_max.to_int()
615conf.set('SYSTEM_UID_MAX', system_uid_max)
616substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400617message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400618
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400619system_gid_max = get_option('system-gid-max')
620if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400621 system_gid_max = run_command(
622 awk,
623 'BEGIN { gid=999 } /^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
624 '/etc/login.defs').stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400625endif
626system_gid_max = system_gid_max.to_int()
627conf.set('SYSTEM_GID_MAX', system_gid_max)
628substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400629message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400630
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100631dynamic_uid_min = get_option('dynamic-uid-min').to_int()
632dynamic_uid_max = get_option('dynamic-uid-max').to_int()
633conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
634conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
635substs.set('dynamicuidmin', dynamic_uid_min)
636substs.set('dynamicuidmax', dynamic_uid_max)
637
638container_uid_base_min = get_option('container-uid-base-min').to_int()
639container_uid_base_max = get_option('container-uid-base-max').to_int()
640conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
641conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
642substs.set('containeruidbasemin', container_uid_base_min)
643substs.set('containeruidbasemax', container_uid_base_max)
644
Lennart Poetteringafde4572017-12-05 11:00:24 +0100645nobody_user = get_option('nobody-user')
646nobody_group = get_option('nobody-group')
647
648getent_result = run_command('getent', 'passwd', '65534')
649if getent_result.returncode() == 0
650 name = getent_result.stdout().split(':')[0]
651 if name != nobody_user
652 message('WARNING:\n' +
653 ' The local user with the UID 65534 does not match the configured user name "@0@" of the nobody user (its name is @1@).\n'.format(nobody_user, name) +
654 ' Your build will result in an user table setup that is incompatible with the local system.')
655 endif
656endif
657id_result = run_command('id', '-u', nobody_user)
658if id_result.returncode() == 0
659 id = id_result.stdout().to_int()
660 if id != 65534
661 message('WARNING:\n' +
662 ' The local user with the configured user name "@0@" of the nobody user does not have UID 65534 (it has @1@).\n'.format(nobody_user, id) +
663 ' Your build will result in an user table setup that is incompatible with the local system.')
664 endif
665endif
666
667getent_result = run_command('getent', 'group', '65534')
668if getent_result.returncode() == 0
669 name = getent_result.stdout().split(':')[0]
670 if name != nobody_group
671 message('WARNING:\n' +
672 ' The local group with the GID 65534 does not match the configured group name "@0@" of the nobody group (its name is @1@).\n'.format(nobody_group, name) +
673 ' Your build will result in an group table setup that is incompatible with the local system.')
674 endif
675endif
676id_result = run_command('id', '-g', nobody_group)
677if id_result.returncode() == 0
678 id = id_result.stdout().to_int()
679 if id != 65534
680 message('WARNING:\n' +
681 ' The local group with the configured group name "@0@" of the nobody group does not have UID 65534 (it has @1@).\n'.format(nobody_group, id) +
682 ' Your build will result in an group table setup that is incompatible with the local system.')
683 endif
684endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900685if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
686 message('WARNING:\n' +
687 ' The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
688 ' Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
689endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100690
691conf.set_quoted('NOBODY_USER_NAME', nobody_user)
692conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900693substs.set('NOBODY_USER_NAME', nobody_user)
694substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100695
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400696tty_gid = get_option('tty-gid')
697conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400698substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400699
Ikey Doherty84786b82017-12-03 12:28:23 +0000700# Ensure provided GID argument is numeric, otherwise fallback to default assignment
701if get_option('users-gid') != ''
Yu Watanabed6806872017-12-05 14:01:39 +0900702 users_gid = get_option('users-gid').to_int()
Ikey Doherty84786b82017-12-03 12:28:23 +0000703else
Yu Watanabed6806872017-12-05 14:01:39 +0900704 users_gid = '-'
Ikey Doherty84786b82017-12-03 12:28:23 +0000705endif
706substs.set('USERS_GID', users_gid)
707
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400708if get_option('adm-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400709 m4_defines += ['-DENABLE_ADM_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400710endif
711
712if get_option('wheel-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400713 m4_defines += ['-DENABLE_WHEEL_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400714endif
715
716substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700717substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400718
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400719kill_user_processes = get_option('default-kill-user-processes')
720conf.set10('KILL_USER_PROCESSES', kill_user_processes)
721substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400722
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400723dns_servers = get_option('dns-servers')
724conf.set_quoted('DNS_SERVERS', dns_servers)
725substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400726
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400727ntp_servers = get_option('ntp-servers')
728conf.set_quoted('NTP_SERVERS', ntp_servers)
729substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400730
731conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
732
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400733substs.set('SUSHELL', get_option('debug-shell'))
734substs.set('DEBUGTTY', get_option('debug-tty'))
735
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400736debug = get_option('debug')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200737enable_debug_hashmap = false
738enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400739if debug != ''
740 foreach name : debug.split(',')
741 if name == 'hashmap'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200742 enable_debug_hashmap = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400743 elif name == 'mmap-cache'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200744 enable_debug_mmap_cache = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400745 else
746 message('unknown debug option "@0@", ignoring'.format(name))
747 endif
748 endforeach
749endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200750conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
751conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400752
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400753#####################################################################
754
755threads = dependency('threads')
756librt = cc.find_library('rt')
757libm = cc.find_library('m')
758libdl = cc.find_library('dl')
759libcrypt = cc.find_library('crypt')
760
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400761libcap = dependency('libcap', required : false)
762if not libcap.found()
763 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
764 libcap = cc.find_library('cap')
765endif
766
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400767libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekd6e80962017-09-15 14:47:57 +0200768 version : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400769
770want_seccomp = get_option('seccomp')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400771if want_seccomp != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400772 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400773 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400774 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200775 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400776else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200777 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400778 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400779endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200780conf.set10('HAVE_SECCOMP', have)
781m4_defines += have ? ['-DHAVE_SECCOMP'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400782
783want_selinux = get_option('selinux')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400784if want_selinux != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400785 libselinux = dependency('libselinux',
786 version : '>= 2.1.9',
787 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200788 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400789else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200790 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400791 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400792endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200793conf.set10('HAVE_SELINUX', have)
794m4_defines += have ? ['-DHAVE_SELINUX'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400795
796want_apparmor = get_option('apparmor')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400797if want_apparmor != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400798 libapparmor = dependency('libapparmor',
799 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200800 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400801else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200802 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400803 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400804endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200805conf.set10('HAVE_APPARMOR', have)
806m4_defines += have ? ['-DHAVE_APPARMOR'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400807
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400808smack_run_label = get_option('smack-run-label')
809if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400810 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
811 m4_defines += ['-DHAVE_SMACK_RUN_LABEL']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400812endif
813
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400814want_polkit = get_option('polkit')
815install_polkit = false
816install_polkit_pkla = false
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400817if want_polkit != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400818 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400819
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400820 libpolkit = dependency('polkit-gobject-1',
821 required : false)
822 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
823 message('Old polkit detected, will install pkla files')
824 install_polkit_pkla = true
825 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400826endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200827conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400828
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400829want_acl = get_option('acl')
830if want_acl != 'false'
831 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200832 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400833else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200834 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400835 libacl = []
836endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200837conf.set10('HAVE_ACL', have)
838m4_defines += have ? ['-DHAVE_ACL'] : []
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400839
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400840want_audit = get_option('audit')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400841if want_audit != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400842 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200843 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400844else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200845 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400846 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400847endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200848conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400849
850want_blkid = get_option('blkid')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400851if want_blkid != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400852 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200853 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400854else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200855 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400856 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400857endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200858conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400859
860want_kmod = get_option('kmod')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400861if want_kmod != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400862 libkmod = dependency('libkmod',
863 version : '>= 15',
864 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200865 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400866else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200867 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400868 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400869endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200870conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400871
872want_pam = get_option('pam')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400873if want_pam != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400874 libpam = cc.find_library('pam', required : want_pam == 'true')
875 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200876 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400877else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200878 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400879 libpam = []
880 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400881endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200882conf.set10('HAVE_PAM', have)
883m4_defines += have ? ['-DHAVE_PAM'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400884
885want_microhttpd = get_option('microhttpd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400886if want_microhttpd != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400887 libmicrohttpd = dependency('libmicrohttpd',
888 version : '>= 0.9.33',
889 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200890 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400891else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200892 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400893 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400894endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200895conf.set10('HAVE_MICROHTTPD', have)
896m4_defines += have ? ['-DHAVE_MICROHTTPD'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400897
898want_libcryptsetup = get_option('libcryptsetup')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400899if want_libcryptsetup != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400900 libcryptsetup = dependency('libcryptsetup',
901 version : '>= 1.6.0',
902 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200903 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400904else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200905 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400906 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400907endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200908conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400909
910want_libcurl = get_option('libcurl')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400911if want_libcurl != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400912 libcurl = dependency('libcurl',
913 version : '>= 7.32.0',
914 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200915 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400916else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200917 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400918 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400919endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200920conf.set10('HAVE_LIBCURL', have)
921m4_defines += have ? ['-DHAVE_LIBCURL'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400922
923want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400924want_libidn2 = get_option('libidn2')
925if want_libidn == 'true' and want_libidn2 == 'true'
926 error('libidn and libidn2 cannot be requested simultaneously')
927endif
928
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400929if want_libidn != 'false' and want_libidn2 != 'true'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400930 libidn = dependency('libidn',
931 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200932 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400933else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200934 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400935 libidn = []
936endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200937conf.set10('HAVE_LIBIDN', have)
938m4_defines += have ? ['-DHAVE_LIBIDN'] : []
939if not have and want_libidn2 != 'false'
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400940 # libidn is used for both libidn and libidn2 objects
941 libidn = dependency('libidn2',
942 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200943 have = libidn.found()
944else
945 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400946endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200947conf.set10('HAVE_LIBIDN2', have)
948m4_defines += have ? ['-DHAVE_LIBIDN2'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400949
950want_libiptc = get_option('libiptc')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400951if want_libiptc != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400952 libiptc = dependency('libiptc',
953 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200954 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400955else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200956 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400957 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400958endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200959conf.set10('HAVE_LIBIPTC', have)
960m4_defines += have ? ['-DHAVE_LIBIPTC'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400961
962want_qrencode = get_option('qrencode')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400963if want_qrencode != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400964 libqrencode = dependency('libqrencode',
965 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200966 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400967else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200968 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400969 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400970endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200971conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400972
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400973want_gcrypt = get_option('gcrypt')
974if want_gcrypt != 'false'
975 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
976 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200977 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400978else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200979 have = false
980endif
981if not have
982 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400983 libgcrypt = []
984 libgpg_error = []
985endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200986conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400987
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400988want_gnutls = get_option('gnutls')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400989if want_gnutls != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400990 libgnutls = dependency('gnutls',
991 version : '>= 3.1.4',
992 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200993 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400994else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200995 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400996 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400997endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200998conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400999
1000want_elfutils = get_option('elfutils')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001001if want_elfutils != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001002 libdw = dependency('libdw',
1003 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001004 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001005else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001006 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001007 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001008endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001009conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001010
1011want_zlib = get_option('zlib')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001012if want_zlib != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001013 libz = dependency('zlib',
1014 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001015 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001016else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001017 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001018 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001019endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001020conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001021
1022want_bzip2 = get_option('bzip2')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001023if want_bzip2 != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001024 libbzip2 = cc.find_library('bz2',
1025 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001026 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001027else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001028 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001029 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001030endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001031conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001032
1033want_xz = get_option('xz')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001034if want_xz != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001035 libxz = dependency('liblzma',
1036 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001037 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001038else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001039 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001040 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001041endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001042conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001043
1044want_lz4 = get_option('lz4')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001045if want_lz4 != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001046 liblz4 = dependency('liblz4',
1047 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001048 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001049else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001050 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001051 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001052endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001053conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001054
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001055want_xkbcommon = get_option('xkbcommon')
1056if want_xkbcommon != 'false'
1057 libxkbcommon = dependency('xkbcommon',
1058 version : '>= 0.3.0',
1059 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001060 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001061else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001062 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001063 libxkbcommon = []
1064endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001065conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001066
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001067want_glib = get_option('glib')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001068if want_glib != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001069 libglib = dependency('glib-2.0',
1070 version : '>= 2.22.0',
1071 required : want_glib == 'true')
1072 libgobject = dependency('gobject-2.0',
1073 version : '>= 2.22.0',
1074 required : want_glib == 'true')
1075 libgio = dependency('gio-2.0',
1076 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001077 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001078else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001079 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001080 libglib = []
1081 libgobject = []
1082 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001083endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001084conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001085
1086want_dbus = get_option('dbus')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001087if want_dbus != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001088 libdbus = dependency('dbus-1',
1089 version : '>= 1.3.2',
1090 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001091 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001092else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001093 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001094 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001095endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001096conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001097
Yu Watanabe42303dc2017-06-18 05:22:32 +09001098default_dnssec = get_option('default-dnssec')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001099if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001100 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1101 default_dnssec = 'no'
1102endif
1103conf.set('DEFAULT_DNSSEC_MODE',
1104 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1105substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1106
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001107want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001108if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001109 have = (conf.get('HAVE_LIBCURL') == 1 and
1110 conf.get('HAVE_ZLIB') == 1 and
1111 conf.get('HAVE_BZIP2') == 1 and
1112 conf.get('HAVE_XZ') == 1 and
1113 conf.get('HAVE_GCRYPT') == 1)
1114 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001115 error('importd support was requested, but dependencies are not available')
1116 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001117else
1118 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001119endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001120conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001121
1122want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001123if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001124 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1125 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001126 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1127 # it's possible to build one without the other. Complain only if
1128 # support was explictly requested. The auxiliary files like sysusers
1129 # config should be installed when any of the programs are built.
1130 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1131 error('remote support was requested, but dependencies are not available')
1132 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001133 have = have_deps[0] or have_deps[1]
1134else
1135 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001136endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001137conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001138
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001139foreach term : ['utmp',
1140 'hibernate',
1141 'environment-d',
1142 'binfmt',
1143 'coredump',
1144 'resolve',
1145 'logind',
1146 'hostnamed',
1147 'localed',
1148 'machined',
1149 'networkd',
1150 'timedated',
1151 'timesyncd',
1152 'myhostname',
1153 'firstboot',
1154 'randomseed',
1155 'backlight',
1156 'vconsole',
1157 'quotacheck',
1158 'sysusers',
1159 'tmpfiles',
1160 'hwdb',
1161 'rfkill',
1162 'ldconfig',
1163 'efi',
1164 'tpm',
1165 'ima',
1166 'smack',
1167 'gshadow',
1168 'idn',
1169 'nss-systemd']
1170 have = get_option(term)
1171 name = 'ENABLE_' + term.underscorify().to_upper()
1172 conf.set10(name, have)
1173 m4_defines += have ? ['-D' + name] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001174endforeach
1175
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001176want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001177install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001178tests = []
1179
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001180conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', get_option('slow-tests'))
1181
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001182#####################################################################
1183
1184if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001185 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001186
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001187 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001188 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001189 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001190 elif efi_arch == 'x86_64'
1191 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001192 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001193 elif efi_arch == 'arm'
1194 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001195 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001196 elif efi_arch == 'aarch64'
1197 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001198 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001199 else
1200 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001201 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001202 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001203
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001204 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001205 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001206
1207 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001208else
1209 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001210endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001211conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001212
1213#####################################################################
1214
1215config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001216 output : 'config.h',
1217 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001218
1219includes = include_directories('src/basic',
1220 'src/shared',
1221 'src/systemd',
1222 'src/journal',
1223 'src/resolve',
1224 'src/timesync',
1225 'src/login',
1226 'src/udev',
1227 'src/libudev',
1228 'src/core',
1229 'src/libsystemd/sd-bus',
1230 'src/libsystemd/sd-device',
1231 'src/libsystemd/sd-hwdb',
1232 'src/libsystemd/sd-id128',
1233 'src/libsystemd/sd-netlink',
1234 'src/libsystemd/sd-network',
1235 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001236 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001237
1238add_project_arguments('-include', 'config.h', language : 'c')
1239
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001240subdir('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',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001259 'src/systemd/sd-id128.h', # pick a header file at random to work around old meson bug
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001260 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001261 include_directories : includes,
1262 link_args : ['-shared',
1263 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001264 link_with : [libbasic,
1265 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001266 link_whole : [libsystemd_static,
1267 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001268 dependencies : [threads,
1269 librt,
1270 libxz,
1271 liblz4],
1272 link_depends : libsystemd_sym,
1273 install : true,
1274 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001275
1276############################################################
1277
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001278# binaries that have --help and are intended for use by humans,
1279# usually, but not always, installed in /bin.
1280public_programs = []
1281
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001282subdir('src/libudev')
1283subdir('src/shared')
1284subdir('src/core')
1285subdir('src/udev')
1286subdir('src/network')
1287
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001288subdir('src/analyze')
1289subdir('src/journal-remote')
1290subdir('src/coredump')
1291subdir('src/hostname')
1292subdir('src/import')
1293subdir('src/kernel-install')
1294subdir('src/locale')
1295subdir('src/machine')
1296subdir('src/nspawn')
1297subdir('src/resolve')
1298subdir('src/timedate')
1299subdir('src/timesync')
1300subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001301subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001302
1303subdir('src/test')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001304subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001305subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001306
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001307############################################################
1308
1309# only static linking apart from libdl, to make sure that the
1310# module is linked to all libraries that it uses.
1311test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001312 'test-dlopen',
1313 test_dlopen_c,
1314 include_directories : includes,
1315 link_with : [libbasic],
1316 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001317
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001318foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001319 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001320 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001321 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001322
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001323 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001324 if condition
1325 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001326
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001327 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1328 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001329
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001330 nss = shared_library(
1331 'nss_' + module,
1332 'src/nss-@0@/nss-@0@.c'.format(module),
1333 version : '2',
1334 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001335 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1336 link_args : ['-Wl,-z,nodelete',
1337 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001338 '-Wl,--version-script=' + version_script_arg,
1339 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001340 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001341 libbasic],
1342 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001343 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001344 link_depends : sym,
1345 install : true,
1346 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001347
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001348 # We cannot use shared_module because it does not support version suffix.
1349 # Unfortunately shared_library insists on creating the symlink…
1350 meson.add_install_script('sh', '-c',
1351 'rm $DESTDIR@0@/libnss_@1@.so'
1352 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001353
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001354 test('dlopen-nss_' + module,
1355 test_dlopen,
1356 args : [nss.full_path()]) # path to dlopen must include a slash
1357 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001358endforeach
1359
1360############################################################
1361
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001362executable('systemd',
1363 systemd_sources,
1364 include_directories : includes,
1365 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001366 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001367 dependencies : [threads,
1368 librt,
1369 libseccomp,
1370 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001371 libmount,
1372 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001373 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001374 install : true,
1375 install_dir : rootlibexecdir)
1376
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001377exe = executable('systemd-analyze',
1378 systemd_analyze_sources,
1379 include_directories : includes,
1380 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001381 libshared],
1382 dependencies : [threads,
1383 librt,
1384 libseccomp,
1385 libselinux,
1386 libmount,
1387 libblkid],
1388 install_rpath : rootlibexecdir,
1389 install : true)
1390public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001391
1392executable('systemd-journald',
1393 systemd_journald_sources,
1394 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001395 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001396 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001397 dependencies : [threads,
1398 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001399 liblz4,
1400 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001401 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001402 install : true,
1403 install_dir : rootlibexecdir)
1404
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001405exe = executable('systemd-cat',
1406 systemd_cat_sources,
1407 include_directories : includes,
1408 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001409 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001410 dependencies : [threads],
1411 install_rpath : rootlibexecdir,
1412 install : true)
1413public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001414
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001415exe = executable('journalctl',
1416 journalctl_sources,
1417 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001418 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001419 dependencies : [threads,
1420 libqrencode,
1421 libxz,
1422 liblz4],
1423 install_rpath : rootlibexecdir,
1424 install : true,
1425 install_dir : rootbindir)
1426public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001427
1428executable('systemd-getty-generator',
1429 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001430 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001431 link_with : [libshared],
1432 install_rpath : rootlibexecdir,
1433 install : true,
1434 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001435
1436executable('systemd-debug-generator',
1437 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001438 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001439 link_with : [libshared],
1440 install_rpath : rootlibexecdir,
1441 install : true,
1442 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001443
1444executable('systemd-fstab-generator',
1445 'src/fstab-generator/fstab-generator.c',
1446 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001447 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001448 link_with : [libshared],
1449 install_rpath : rootlibexecdir,
1450 install : true,
1451 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001452
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001453if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001454 executable('30-systemd-environment-d-generator',
1455 'src/environment-d-generator/environment-d-generator.c',
1456 include_directories : includes,
1457 link_with : [libshared],
1458 install_rpath : rootlibexecdir,
1459 install : true,
1460 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001461
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001462 meson.add_install_script(meson_make_symlink,
1463 join_paths(sysconfdir, 'environment'),
1464 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001465endif
1466
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001467if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001468 executable('systemd-hibernate-resume-generator',
1469 'src/hibernate-resume/hibernate-resume-generator.c',
1470 include_directories : includes,
1471 link_with : [libshared],
1472 install_rpath : rootlibexecdir,
1473 install : true,
1474 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001475
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001476 executable('systemd-hibernate-resume',
1477 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001478 include_directories : includes,
1479 link_with : [libshared],
1480 install_rpath : rootlibexecdir,
1481 install : true,
1482 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001483endif
1484
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001485if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001486 executable('systemd-gpt-auto-generator',
1487 'src/gpt-auto-generator/gpt-auto-generator.c',
1488 'src/basic/blkid-util.h',
1489 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001490 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001491 dependencies : libblkid,
1492 install_rpath : rootlibexecdir,
1493 install : true,
1494 install_dir : systemgeneratordir)
1495
1496 exe = executable('systemd-dissect',
1497 'src/dissect/dissect.c',
1498 include_directories : includes,
1499 link_with : [libshared],
1500 install_rpath : rootlibexecdir,
1501 install : true,
1502 install_dir : rootlibexecdir)
1503 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001504endif
1505
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001506if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001507 executable('systemd-resolved',
1508 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001509 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001510 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001511 libbasic_gcrypt,
1512 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001513 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001514 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001515 libm,
1516 libidn],
1517 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001518 install : true,
1519 install_dir : rootlibexecdir)
1520
1521 exe = executable('systemd-resolve',
1522 systemd_resolve_sources,
1523 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001524 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001525 libbasic_gcrypt,
1526 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001527 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001528 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001529 libm,
1530 libidn],
1531 install_rpath : rootlibexecdir,
1532 install : true)
1533 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001534endif
1535
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001536if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001537 executable('systemd-logind',
1538 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001539 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001540 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001541 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001542 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001543 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001544 install_rpath : rootlibexecdir,
1545 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001546 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001547
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001548 exe = executable('loginctl',
1549 loginctl_sources,
1550 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001551 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001552 dependencies : [threads,
1553 liblz4,
1554 libxz],
1555 install_rpath : rootlibexecdir,
1556 install : true,
1557 install_dir : rootbindir)
1558 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001559
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001560 exe = executable('systemd-inhibit',
1561 'src/login/inhibit.c',
1562 include_directories : includes,
1563 link_with : [libshared],
1564 install_rpath : rootlibexecdir,
1565 install : true,
1566 install_dir : rootbindir)
1567 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001568
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001569 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001570 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1571 pam_systemd = shared_library(
1572 'pam_systemd',
1573 pam_systemd_c,
1574 name_prefix : '',
1575 include_directories : includes,
1576 link_args : ['-shared',
1577 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001578 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001579 libshared_static],
1580 dependencies : [threads,
1581 libpam,
1582 libpam_misc],
1583 link_depends : pam_systemd_sym,
1584 install : true,
1585 install_dir : pamlibdir)
1586
1587 test('dlopen-pam_systemd',
1588 test_dlopen,
1589 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1590 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001591endif
1592
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001593if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001594 executable('systemd-user-sessions',
1595 'src/user-sessions/user-sessions.c',
1596 include_directories : includes,
1597 link_with : [libshared],
1598 install_rpath : rootlibexecdir,
1599 install : true,
1600 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001601endif
1602
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001603if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001604 exe = executable('bootctl',
1605 'src/boot/bootctl.c',
1606 include_directories : includes,
1607 link_with : [libshared],
1608 dependencies : [libblkid],
1609 install_rpath : rootlibexecdir,
1610 install : true)
1611 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001612endif
1613
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001614exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1615 include_directories : includes,
1616 link_with : [libshared],
1617 dependencies : [threads],
1618 install_rpath : rootlibexecdir,
1619 install : true)
1620public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001621
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001622exe = executable('systemctl', 'src/systemctl/systemctl.c',
1623 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001624 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001625 dependencies : [threads,
1626 libcap,
1627 libselinux,
1628 libxz,
1629 liblz4],
1630 install_rpath : rootlibexecdir,
1631 install : true,
1632 install_dir : rootbindir)
1633public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001634
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001635if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001636 executable('systemd-backlight',
1637 'src/backlight/backlight.c',
1638 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001639 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001640 install_rpath : rootlibexecdir,
1641 install : true,
1642 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001643endif
1644
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001645if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001646 executable('systemd-rfkill',
1647 'src/rfkill/rfkill.c',
1648 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001649 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001650 install_rpath : rootlibexecdir,
1651 install : true,
1652 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001653endif
1654
1655executable('systemd-system-update-generator',
1656 'src/system-update-generator/system-update-generator.c',
1657 include_directories : includes,
1658 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001659 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001660 install : true,
1661 install_dir : systemgeneratordir)
1662
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001663if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001664 executable('systemd-cryptsetup',
1665 'src/cryptsetup/cryptsetup.c',
1666 include_directories : includes,
1667 link_with : [libshared],
1668 dependencies : [libcryptsetup],
1669 install_rpath : rootlibexecdir,
1670 install : true,
1671 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001672
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001673 executable('systemd-cryptsetup-generator',
1674 'src/cryptsetup/cryptsetup-generator.c',
1675 include_directories : includes,
1676 link_with : [libshared],
1677 dependencies : [libcryptsetup],
1678 install_rpath : rootlibexecdir,
1679 install : true,
1680 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001681
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001682 executable('systemd-veritysetup',
1683 'src/veritysetup/veritysetup.c',
1684 include_directories : includes,
1685 link_with : [libshared],
1686 dependencies : [libcryptsetup],
1687 install_rpath : rootlibexecdir,
1688 install : true,
1689 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001690
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001691 executable('systemd-veritysetup-generator',
1692 'src/veritysetup/veritysetup-generator.c',
1693 include_directories : includes,
1694 link_with : [libshared],
1695 dependencies : [libcryptsetup],
1696 install_rpath : rootlibexecdir,
1697 install : true,
1698 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001699endif
1700
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001701if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001702 executable('systemd-sysv-generator',
1703 'src/sysv-generator/sysv-generator.c',
1704 include_directories : includes,
1705 link_with : [libshared],
1706 install_rpath : rootlibexecdir,
1707 install : true,
1708 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001709
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001710 executable('systemd-rc-local-generator',
1711 'src/rc-local-generator/rc-local-generator.c',
1712 include_directories : includes,
1713 link_with : [libshared],
1714 install_rpath : rootlibexecdir,
1715 install : true,
1716 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001717endif
1718
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001719if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001720 executable('systemd-hostnamed',
1721 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001722 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001723 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001724 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001725 install : true,
1726 install_dir : rootlibexecdir)
1727
1728 exe = executable('hostnamectl',
1729 'src/hostname/hostnamectl.c',
1730 include_directories : includes,
1731 link_with : [libshared],
1732 install_rpath : rootlibexecdir,
1733 install : true)
1734 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001735endif
1736
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001737if conf.get('ENABLE_LOCALED') == 1
1738 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001739 # logind will load libxkbcommon.so dynamically on its own
1740 deps = [libdl]
1741 else
1742 deps = []
1743 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001744
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001745 executable('systemd-localed',
1746 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001747 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001748 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001749 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001750 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001751 install : true,
1752 install_dir : rootlibexecdir)
1753
1754 exe = executable('localectl',
1755 localectl_sources,
1756 include_directories : includes,
1757 link_with : [libshared],
1758 install_rpath : rootlibexecdir,
1759 install : true)
1760 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001761endif
1762
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001763if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001764 executable('systemd-timedated',
1765 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001766 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001767 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001768 install_rpath : rootlibexecdir,
1769 install : true,
1770 install_dir : rootlibexecdir)
1771
1772 exe = executable('timedatectl',
1773 'src/timedate/timedatectl.c',
1774 include_directories : includes,
1775 install_rpath : rootlibexecdir,
1776 link_with : [libshared],
1777 install : true)
1778 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001779endif
1780
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001781if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001782 executable('systemd-timesyncd',
1783 systemd_timesyncd_sources,
1784 include_directories : includes,
1785 link_with : [libshared],
1786 dependencies : [threads,
1787 libm],
1788 install_rpath : rootlibexecdir,
1789 install : true,
1790 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001791endif
1792
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001793if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001794 executable('systemd-machined',
1795 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001796 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001797 link_with : [libmachine_core,
1798 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001799 install_rpath : rootlibexecdir,
1800 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001801 install_dir : rootlibexecdir)
1802
1803 exe = executable('machinectl',
1804 'src/machine/machinectl.c',
1805 include_directories : includes,
1806 link_with : [libshared],
1807 dependencies : [threads,
1808 libxz,
1809 liblz4],
1810 install_rpath : rootlibexecdir,
1811 install : true,
1812 install_dir : rootbindir)
1813 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001814endif
1815
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001816if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001817 executable('systemd-importd',
1818 systemd_importd_sources,
1819 include_directories : includes,
1820 link_with : [libshared],
1821 dependencies : [threads],
1822 install_rpath : rootlibexecdir,
1823 install : true,
1824 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001825
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001826 systemd_pull = executable('systemd-pull',
1827 systemd_pull_sources,
1828 include_directories : includes,
1829 link_with : [libshared],
1830 dependencies : [libcurl,
1831 libz,
1832 libbzip2,
1833 libxz,
1834 libgcrypt],
1835 install_rpath : rootlibexecdir,
1836 install : true,
1837 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001838
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001839 systemd_import = executable('systemd-import',
1840 systemd_import_sources,
1841 include_directories : includes,
1842 link_with : [libshared],
1843 dependencies : [libcurl,
1844 libz,
1845 libbzip2,
1846 libxz],
1847 install_rpath : rootlibexecdir,
1848 install : true,
1849 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001850
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001851 systemd_export = executable('systemd-export',
1852 systemd_export_sources,
1853 include_directories : includes,
1854 link_with : [libshared],
1855 dependencies : [libcurl,
1856 libz,
1857 libbzip2,
1858 libxz],
1859 install_rpath : rootlibexecdir,
1860 install : true,
1861 install_dir : rootlibexecdir)
1862 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001863endif
1864
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001865if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001866 exe = executable('systemd-journal-upload',
1867 systemd_journal_upload_sources,
1868 include_directories : includes,
1869 link_with : [libshared],
1870 dependencies : [threads,
1871 libcurl,
1872 libgnutls,
1873 libxz,
1874 liblz4],
1875 install_rpath : rootlibexecdir,
1876 install : true,
1877 install_dir : rootlibexecdir)
1878 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001879endif
1880
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001881if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001882 s_j_remote = executable('systemd-journal-remote',
1883 systemd_journal_remote_sources,
1884 include_directories : includes,
1885 link_with : [libshared],
1886 dependencies : [threads,
1887 libmicrohttpd,
1888 libgnutls,
1889 libxz,
1890 liblz4],
1891 install_rpath : rootlibexecdir,
1892 install : true,
1893 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001894
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001895 s_j_gatewayd = executable('systemd-journal-gatewayd',
1896 systemd_journal_gatewayd_sources,
1897 include_directories : includes,
1898 link_with : [libshared],
1899 dependencies : [threads,
1900 libmicrohttpd,
1901 libgnutls,
1902 libxz,
1903 liblz4],
1904 install_rpath : rootlibexecdir,
1905 install : true,
1906 install_dir : rootlibexecdir)
1907 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001908endif
1909
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001910if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001911 executable('systemd-coredump',
1912 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001913 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001914 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001915 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001916 libacl,
1917 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001918 libxz,
1919 liblz4],
1920 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001921 install : true,
1922 install_dir : rootlibexecdir)
1923
1924 exe = executable('coredumpctl',
1925 coredumpctl_sources,
1926 include_directories : includes,
1927 link_with : [libshared],
1928 dependencies : [threads,
1929 libxz,
1930 liblz4],
1931 install_rpath : rootlibexecdir,
1932 install : true)
1933 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001934endif
1935
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001936if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001937 exe = executable('systemd-binfmt',
1938 'src/binfmt/binfmt.c',
1939 include_directories : includes,
1940 link_with : [libshared],
1941 install_rpath : rootlibexecdir,
1942 install : true,
1943 install_dir : rootlibexecdir)
1944 public_programs += [exe]
1945
1946 meson.add_install_script('sh', '-c',
1947 mkdir_p.format(binfmtdir))
1948 meson.add_install_script('sh', '-c',
1949 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
1950endif
1951
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001952if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001953 executable('systemd-vconsole-setup',
1954 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001955 include_directories : includes,
1956 link_with : [libshared],
1957 install_rpath : rootlibexecdir,
1958 install : true,
1959 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001960endif
1961
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001962if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001963 executable('systemd-random-seed',
1964 'src/random-seed/random-seed.c',
1965 include_directories : includes,
1966 link_with : [libshared],
1967 install_rpath : rootlibexecdir,
1968 install : true,
1969 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001970endif
1971
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001972if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001973 executable('systemd-firstboot',
1974 'src/firstboot/firstboot.c',
1975 include_directories : includes,
1976 link_with : [libshared],
1977 dependencies : [libcrypt],
1978 install_rpath : rootlibexecdir,
1979 install : true,
1980 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001981endif
1982
1983executable('systemd-remount-fs',
1984 'src/remount-fs/remount-fs.c',
1985 'src/core/mount-setup.c',
1986 'src/core/mount-setup.h',
1987 include_directories : includes,
1988 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001989 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001990 install : true,
1991 install_dir : rootlibexecdir)
1992
1993executable('systemd-machine-id-setup',
1994 'src/machine-id-setup/machine-id-setup-main.c',
1995 'src/core/machine-id-setup.c',
1996 'src/core/machine-id-setup.h',
1997 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001998 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001999 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002000 install : true,
2001 install_dir : rootbindir)
2002
2003executable('systemd-fsck',
2004 'src/fsck/fsck.c',
2005 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002006 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002007 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002008 install : true,
2009 install_dir : rootlibexecdir)
2010
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002011executable('systemd-growfs',
2012 'src/partition/growfs.c',
2013 include_directories : includes,
2014 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002015 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002016 install_rpath : rootlibexecdir,
2017 install : true,
2018 install_dir : rootlibexecdir)
2019
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002020executable('systemd-makefs',
2021 'src/partition/makefs.c',
2022 include_directories : includes,
2023 link_with : [libshared],
2024 install_rpath : rootlibexecdir,
2025 install : true,
2026 install_dir : rootlibexecdir)
2027
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002028executable('systemd-sleep',
2029 'src/sleep/sleep.c',
2030 include_directories : includes,
2031 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002032 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002033 install : true,
2034 install_dir : rootlibexecdir)
2035
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002036exe = executable('systemd-sysctl',
2037 'src/sysctl/sysctl.c',
2038 include_directories : includes,
2039 link_with : [libshared],
2040 install_rpath : rootlibexecdir,
2041 install : true,
2042 install_dir : rootlibexecdir)
2043public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002044
2045executable('systemd-ac-power',
2046 'src/ac-power/ac-power.c',
2047 include_directories : includes,
2048 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002049 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002050 install : true,
2051 install_dir : rootlibexecdir)
2052
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002053exe = executable('systemd-detect-virt',
2054 'src/detect-virt/detect-virt.c',
2055 include_directories : includes,
2056 link_with : [libshared],
2057 install_rpath : rootlibexecdir,
2058 install : true)
2059public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002060
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002061exe = executable('systemd-delta',
2062 'src/delta/delta.c',
2063 include_directories : includes,
2064 link_with : [libshared],
2065 install_rpath : rootlibexecdir,
2066 install : true)
2067public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002068
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002069exe = executable('systemd-escape',
2070 'src/escape/escape.c',
2071 include_directories : includes,
2072 link_with : [libshared],
2073 install_rpath : rootlibexecdir,
2074 install : true,
2075 install_dir : rootbindir)
2076public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002077
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002078exe = executable('systemd-notify',
2079 'src/notify/notify.c',
2080 include_directories : includes,
2081 link_with : [libshared],
2082 install_rpath : rootlibexecdir,
2083 install : true,
2084 install_dir : rootbindir)
2085public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002086
2087executable('systemd-volatile-root',
2088 'src/volatile-root/volatile-root.c',
2089 include_directories : includes,
2090 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002091 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002092 install : true,
2093 install_dir : rootlibexecdir)
2094
2095executable('systemd-cgroups-agent',
2096 'src/cgroups-agent/cgroups-agent.c',
2097 include_directories : includes,
2098 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002099 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002100 install : true,
2101 install_dir : rootlibexecdir)
2102
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002103exe = executable('systemd-path',
2104 'src/path/path.c',
2105 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002106 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002107 install_rpath : rootlibexecdir,
2108 install : true)
2109public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002110
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002111exe = executable('systemd-ask-password',
2112 'src/ask-password/ask-password.c',
2113 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002114 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002115 install_rpath : rootlibexecdir,
2116 install : true,
2117 install_dir : rootbindir)
2118public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002119
2120executable('systemd-reply-password',
2121 'src/reply-password/reply-password.c',
2122 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002123 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002124 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002125 install : true,
2126 install_dir : rootlibexecdir)
2127
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002128exe = executable('systemd-tty-ask-password-agent',
2129 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2130 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002131 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002132 install_rpath : rootlibexecdir,
2133 install : true,
2134 install_dir : rootbindir)
2135public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002136
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002137exe = executable('systemd-cgls',
2138 'src/cgls/cgls.c',
2139 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002140 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002141 install_rpath : rootlibexecdir,
2142 install : true)
2143public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002144
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002145exe = executable('systemd-cgtop',
2146 'src/cgtop/cgtop.c',
2147 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002148 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002149 install_rpath : rootlibexecdir,
2150 install : true)
2151public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002152
2153executable('systemd-initctl',
2154 'src/initctl/initctl.c',
2155 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002156 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002157 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002158 install : true,
2159 install_dir : rootlibexecdir)
2160
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002161exe = executable('systemd-mount',
2162 'src/mount/mount-tool.c',
2163 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002164 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002165 install_rpath : rootlibexecdir,
2166 install : true)
2167public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002168
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002169meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002170 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002171
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002172exe = executable('systemd-run',
2173 'src/run/run.c',
2174 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002175 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002176 install_rpath : rootlibexecdir,
2177 install : true)
2178public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002179
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002180exe = executable('systemd-stdio-bridge',
2181 'src/stdio-bridge/stdio-bridge.c',
2182 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002183 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002184 install_rpath : rootlibexecdir,
2185 install : true)
2186public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002187
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002188exe = executable('busctl',
2189 'src/busctl/busctl.c',
2190 'src/busctl/busctl-introspect.c',
2191 'src/busctl/busctl-introspect.h',
2192 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002193 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002194 install_rpath : rootlibexecdir,
2195 install : true)
2196public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002197
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002198if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002199 exe = executable('systemd-sysusers',
2200 'src/sysusers/sysusers.c',
2201 include_directories : includes,
2202 link_with : [libshared],
2203 install_rpath : rootlibexecdir,
2204 install : true,
2205 install_dir : rootbindir)
2206 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002207endif
2208
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002209if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002210 exe = executable('systemd-tmpfiles',
2211 'src/tmpfiles/tmpfiles.c',
2212 include_directories : includes,
2213 link_with : [libshared],
2214 dependencies : [libacl],
2215 install_rpath : rootlibexecdir,
2216 install : true,
2217 install_dir : rootbindir)
2218 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002219
2220 test('test-systemd-tmpfiles',
2221 test_systemd_tmpfiles_py,
2222 args : exe.full_path())
2223 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002224endif
2225
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002226if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002227 exe = executable('systemd-hwdb',
2228 'src/hwdb/hwdb.c',
2229 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2230 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002231 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002232 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002233 install : true,
2234 install_dir : rootbindir)
2235 public_programs += [exe]
2236endif
2237
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002238if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002239 executable('systemd-quotacheck',
2240 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002241 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002242 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002243 install_rpath : rootlibexecdir,
2244 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002245 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002246endif
2247
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002248exe = executable('systemd-socket-proxyd',
2249 'src/socket-proxy/socket-proxyd.c',
2250 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002251 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002252 dependencies : [threads],
2253 install_rpath : rootlibexecdir,
2254 install : true,
2255 install_dir : rootlibexecdir)
2256public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002257
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002258exe = executable('systemd-udevd',
2259 systemd_udevd_sources,
2260 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002261 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002262 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002263 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002264 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002265 dependencies : [threads,
2266 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002267 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002268 libacl,
2269 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002270 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002271 install : true,
2272 install_dir : rootlibexecdir)
2273public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002274
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002275exe = executable('udevadm',
2276 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002277 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002278 include_directories : includes,
2279 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002280 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002281 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002282 dependencies : [threads,
2283 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002284 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002285 libacl,
2286 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002287 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002288 install : true,
2289 install_dir : rootbindir)
2290public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002291
2292executable('systemd-shutdown',
2293 systemd_shutdown_sources,
2294 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002295 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002296 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002297 install : true,
2298 install_dir : rootlibexecdir)
2299
2300executable('systemd-update-done',
2301 'src/update-done/update-done.c',
2302 include_directories : includes,
2303 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002304 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002305 install : true,
2306 install_dir : rootlibexecdir)
2307
2308executable('systemd-update-utmp',
2309 'src/update-utmp/update-utmp.c',
2310 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002311 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002312 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002313 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002314 install : true,
2315 install_dir : rootlibexecdir)
2316
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002317if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002318 executable('systemd-modules-load',
2319 'src/modules-load/modules-load.c',
2320 include_directories : includes,
2321 link_with : [libshared],
2322 dependencies : [libkmod],
2323 install_rpath : rootlibexecdir,
2324 install : true,
2325 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002326
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002327 meson.add_install_script('sh', '-c',
2328 mkdir_p.format(modulesloaddir))
2329 meson.add_install_script('sh', '-c',
2330 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002331endif
2332
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002333exe = executable('systemd-nspawn',
2334 systemd_nspawn_sources,
2335 'src/core/mount-setup.c', # FIXME: use a variable?
2336 'src/core/mount-setup.h',
2337 'src/core/loopback-setup.c',
2338 'src/core/loopback-setup.h',
2339 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002340 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002341 dependencies : [libacl,
2342 libblkid,
2343 libseccomp,
2344 libselinux],
2345 install_rpath : rootlibexecdir,
2346 install : true)
2347public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002348
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002349if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002350 executable('systemd-networkd',
2351 systemd_networkd_sources,
2352 include_directories : includes,
2353 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002354 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002355 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002356 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002357 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002358 install_rpath : rootlibexecdir,
2359 install : true,
2360 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002361
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002362 executable('systemd-networkd-wait-online',
2363 systemd_networkd_wait_online_sources,
2364 include_directories : includes,
2365 link_with : [libnetworkd_core,
2366 libshared],
2367 install_rpath : rootlibexecdir,
2368 install : true,
2369 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002370
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002371 exe = executable('networkctl',
2372 networkctl_sources,
2373 include_directories : includes,
2374 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002375 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002376 install_rpath : rootlibexecdir,
2377 install : true,
2378 install_dir : rootbindir)
2379 public_programs += [exe]
2380endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002381
2382executable('systemd-sulogin-shell',
2383 ['src/sulogin-shell/sulogin-shell.c'],
2384 include_directories : includes,
2385 link_with : [libshared],
2386 install_rpath : rootlibexecdir,
2387 install : true,
2388 install_dir : rootlibexecdir)
2389
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002390############################################################
2391
2392foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002393 sources = tuple[0]
2394 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2395 dependencies = tuple[2]
2396 condition = tuple.length() >= 4 ? tuple[3] : ''
2397 type = tuple.length() >= 5 ? tuple[4] : ''
2398 defs = tuple.length() >= 6 ? tuple[5] : []
2399 incs = tuple.length() >= 7 ? tuple[6] : includes
2400 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002401
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002402 name = sources[0].split('/')[-1].split('.')[0]
2403 if type.startswith('timeout=')
2404 timeout = type.split('=')[1].to_int()
2405 type = ''
2406 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002407
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002408 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002409 exe = executable(
2410 name,
2411 sources,
2412 include_directories : incs,
2413 link_with : link_with,
2414 dependencies : dependencies,
2415 c_args : defs,
2416 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002417 install : install_tests,
2418 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002419
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002420 if type == 'manual'
2421 message('@0@ is a manual test'.format(name))
2422 elif type == 'unsafe' and want_tests != 'unsafe'
2423 message('@0@ is an unsafe test'.format(name))
2424 else
2425 test(name, exe,
2426 env : test_env,
2427 timeout : timeout)
2428 endif
2429 else
2430 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2431 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002432endforeach
2433
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002434test_libsystemd_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002435 'test-libsystemd-sym',
2436 test_libsystemd_sym_c,
2437 include_directories : includes,
2438 link_with : [libsystemd],
2439 install : install_tests,
2440 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002441test('test-libsystemd-sym',
2442 test_libsystemd_sym)
2443
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002444test_libudev_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002445 'test-libudev-sym',
2446 test_libudev_sym_c,
2447 include_directories : includes,
2448 c_args : ['-Wno-deprecated-declarations'],
2449 link_with : [libudev],
2450 install : install_tests,
2451 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002452test('test-libudev-sym',
2453 test_libudev_sym)
2454
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002455############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002456
2457make_directive_index_py = find_program('tools/make-directive-index.py')
2458make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002459xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002460hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002461
2462subdir('units')
2463subdir('sysctl.d')
2464subdir('sysusers.d')
2465subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002466subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002467subdir('hwdb')
2468subdir('network')
2469subdir('man')
2470subdir('shell-completion/bash')
2471subdir('shell-completion/zsh')
2472subdir('docs/sysvinit')
2473subdir('docs/var-log')
2474
2475# FIXME: figure out if the warning is true:
2476# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2477install_subdir('factory/etc',
2478 install_dir : factorydir)
2479
2480
2481install_data('xorg/50-systemd-user.sh',
2482 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002483install_data('modprobe.d/systemd.conf',
2484 install_dir : modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002485install_data('README',
2486 'NEWS',
2487 'CODING_STYLE',
2488 'DISTRO_PORTING',
2489 'ENVIRONMENT.md',
2490 'LICENSE.GPL2',
2491 'LICENSE.LGPL2.1',
Felipe Satelerf9f54412017-12-18 10:58:13 -03002492 'TRANSIENT-SETTINGS.md',
2493 'UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002494 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2495 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002496
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002497meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2498meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2499
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002500############################################################
2501
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002502meson_check_help = find_program('tools/meson-check-help.sh')
2503
2504foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002505 name = exec.full_path().split('/')[-1]
2506 test('check-help-' + name,
2507 meson_check_help,
2508 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002509endforeach
2510
2511############################################################
2512
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002513if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002514 all_files = run_command(
2515 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002516 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002517 'ls-files',
2518 ':/*.[ch]'])
2519 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002520
userwithuide85a6902017-08-09 13:41:44 +00002521 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002522 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002523 output : 'tags',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002524 command : ['env', 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002525 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002526 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002527 output : 'ctags',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002528 command : ['env', 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002529endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002530
2531if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002532 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002533 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002534 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002535 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002536endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002537
2538if git.found()
2539 git_head = run_command(
2540 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002541 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002542 'rev-parse', 'HEAD']).stdout().strip()
2543 git_head_short = run_command(
2544 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002545 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002546 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2547
2548 run_target(
2549 'git-snapshot',
2550 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002551 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002552 git_head_short),
2553 '--prefix', 'systemd-@0@/'.format(git_head),
2554 'HEAD'])
2555endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002556
2557############################################################
2558
Lennart Poettering51b13862017-12-20 12:51:14 +01002559meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2560run_target(
2561 'check-api-docs',
2562 depends : [man, libsystemd, libudev],
2563 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2564
2565############################################################
2566
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002567status = [
2568 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2569
Yu Watanabe359b4962017-11-25 20:35:24 +09002570 'prefix directory: @0@'.format(prefixdir),
2571 'rootprefix directory: @0@'.format(rootprefixdir),
2572 'sysconf directory: @0@'.format(sysconfdir),
2573 'include directory: @0@'.format(includedir),
2574 'lib directory: @0@'.format(libdir),
2575 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002576 'SysV init scripts: @0@'.format(sysvinit_path),
2577 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002578 'PAM modules directory: @0@'.format(pamlibdir),
2579 'PAM configuration directory: @0@'.format(pamconfdir),
2580 'RPM macros directory: @0@'.format(rpmmacrosdir),
2581 'modprobe.d directory: @0@'.format(modprobedir),
2582 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2583 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2584 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2585 'bash completions directory: @0@'.format(bashcompletiondir),
2586 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002587 'extra start script: @0@'.format(get_option('rc-local')),
2588 'extra stop script: @0@'.format(get_option('halt-local')),
2589 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2590 get_option('debug-tty')),
2591 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002592 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002593 'maximum system UID: @0@'.format(system_uid_max),
2594 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002595 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2596 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2597 'minimum container UID base: @0@'.format(container_uid_base_min),
2598 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002599 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002600 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002601 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002602 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002603 'nobody user name: @0@'.format(nobody_user),
2604 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002605 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002606 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002607
2608 'default DNSSEC mode: @0@'.format(default_dnssec),
2609 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2610 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2611
2612alt_dns_servers = '\n '.join(dns_servers.split(' '))
2613alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2614status += [
2615 'default DNS servers: @0@'.format(alt_dns_servers),
2616 'default NTP servers: @0@'.format(alt_ntp_servers)]
2617
2618alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2619 '@@0@'.format(time_epoch)).stdout().strip()
2620status += [
2621 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2622
2623# TODO:
2624# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2625# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2626# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2627
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002628if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002629 status += [
2630 'efi arch: @0@'.format(efi_arch)]
2631
2632 if have_gnu_efi
2633 status += [
2634 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2635 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002636 'EFI lib directory: @0@'.format(efi_libdir),
2637 'EFI lds directory: @0@'.format(efi_ldsdir),
2638 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002639 endif
2640endif
2641
2642found = []
2643missing = []
2644
2645foreach tuple : [
2646 ['libcryptsetup'],
2647 ['PAM'],
2648 ['AUDIT'],
2649 ['IMA'],
2650 ['AppArmor'],
2651 ['SELinux'],
2652 ['SECCOMP'],
2653 ['SMACK'],
2654 ['zlib'],
2655 ['xz'],
2656 ['lz4'],
2657 ['bzip2'],
2658 ['ACL'],
2659 ['gcrypt'],
2660 ['qrencode'],
2661 ['microhttpd'],
2662 ['gnutls'],
2663 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002664 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002665 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002666 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002667 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002668 ['libiptc'],
2669 ['elfutils'],
2670 ['binfmt'],
2671 ['vconsole'],
2672 ['quotacheck'],
2673 ['tmpfiles'],
2674 ['environment.d'],
2675 ['sysusers'],
2676 ['firstboot'],
2677 ['randomseed'],
2678 ['backlight'],
2679 ['rfkill'],
2680 ['logind'],
2681 ['machined'],
2682 ['importd'],
2683 ['hostnamed'],
2684 ['timedated'],
2685 ['timesyncd'],
2686 ['localed'],
2687 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002688 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002689 ['coredump'],
2690 ['polkit'],
2691 ['legacy pkla', install_polkit_pkla],
2692 ['efi'],
2693 ['gnu-efi', have_gnu_efi],
2694 ['kmod'],
2695 ['xkbcommon'],
2696 ['blkid'],
2697 ['dbus'],
2698 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002699 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002700 ['hwdb'],
2701 ['tpm'],
2702 ['man pages', want_man],
2703 ['html pages', want_html],
2704 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002705 ['split /usr', conf.get('HAVE_SPLIT_USR') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002706 ['SysV compat'],
2707 ['utmp'],
2708 ['ldconfig'],
2709 ['hibernate'],
2710 ['adm group', get_option('adm-group')],
2711 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002712 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002713 ['debug hashmap'],
2714 ['debug mmap cache'],
2715]
2716
2717 cond = tuple.get(1, '')
2718 if cond == ''
2719 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2720 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002721 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002722 endif
2723 if cond
2724 found += [tuple[0]]
2725 else
2726 missing += [tuple[0]]
2727 endif
2728endforeach
2729
2730status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002731 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002732 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002733 '',
2734 'disabled features: @0@'.format(', '.join(missing)),
2735 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002736message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002737
2738if rootprefixdir != rootprefix_default
2739 message('WARNING:\n' +
2740 ' Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2741 ' systemd used fixed names for unit file directories and other paths, so anything\n' +
2742 ' except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
2743endif