blob: 686ec6ab8462128150168d449ed24a7f0634cb43 [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-Szmekc4c978a2018-01-12 05:47:17 +01001067want_pcre2 = get_option('pcre2')
1068if want_pcre2 != 'false'
1069 libpcre2 = dependency('libpcre2-8',
1070 required : want_pcre2 == 'true')
1071 have = libpcre2.found()
1072else
1073 have = false
1074 libpcre2 = []
1075endif
1076conf.set10('HAVE_PCRE2', have)
1077
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001078want_glib = get_option('glib')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001079if want_glib != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001080 libglib = dependency('glib-2.0',
1081 version : '>= 2.22.0',
1082 required : want_glib == 'true')
1083 libgobject = dependency('gobject-2.0',
1084 version : '>= 2.22.0',
1085 required : want_glib == 'true')
1086 libgio = dependency('gio-2.0',
1087 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001088 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001089else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001090 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001091 libglib = []
1092 libgobject = []
1093 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001094endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001095conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001096
1097want_dbus = get_option('dbus')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001098if want_dbus != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001099 libdbus = dependency('dbus-1',
1100 version : '>= 1.3.2',
1101 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001102 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001103else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001104 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001105 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001106endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001107conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001108
Yu Watanabe42303dc2017-06-18 05:22:32 +09001109default_dnssec = get_option('default-dnssec')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001110if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001111 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1112 default_dnssec = 'no'
1113endif
1114conf.set('DEFAULT_DNSSEC_MODE',
1115 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1116substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1117
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001118want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001119if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001120 have = (conf.get('HAVE_LIBCURL') == 1 and
1121 conf.get('HAVE_ZLIB') == 1 and
1122 conf.get('HAVE_BZIP2') == 1 and
1123 conf.get('HAVE_XZ') == 1 and
1124 conf.get('HAVE_GCRYPT') == 1)
1125 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001126 error('importd support was requested, but dependencies are not available')
1127 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001128else
1129 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001130endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001131conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001132
1133want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001134if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001135 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1136 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001137 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1138 # it's possible to build one without the other. Complain only if
1139 # support was explictly requested. The auxiliary files like sysusers
1140 # config should be installed when any of the programs are built.
1141 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1142 error('remote support was requested, but dependencies are not available')
1143 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001144 have = have_deps[0] or have_deps[1]
1145else
1146 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001147endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001148conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001149
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001150foreach term : ['utmp',
1151 'hibernate',
1152 'environment-d',
1153 'binfmt',
1154 'coredump',
1155 'resolve',
1156 'logind',
1157 'hostnamed',
1158 'localed',
1159 'machined',
1160 'networkd',
1161 'timedated',
1162 'timesyncd',
1163 'myhostname',
1164 'firstboot',
1165 'randomseed',
1166 'backlight',
1167 'vconsole',
1168 'quotacheck',
1169 'sysusers',
1170 'tmpfiles',
1171 'hwdb',
1172 'rfkill',
1173 'ldconfig',
1174 'efi',
1175 'tpm',
1176 'ima',
1177 'smack',
1178 'gshadow',
1179 'idn',
1180 'nss-systemd']
1181 have = get_option(term)
1182 name = 'ENABLE_' + term.underscorify().to_upper()
1183 conf.set10(name, have)
1184 m4_defines += have ? ['-D' + name] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001185endforeach
1186
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001187want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001188install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001189tests = []
1190
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001191conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', get_option('slow-tests'))
1192
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001193#####################################################################
1194
1195if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001196 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001197
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001198 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001199 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001200 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001201 elif efi_arch == 'x86_64'
1202 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001203 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001204 elif efi_arch == 'arm'
1205 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001206 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001207 elif efi_arch == 'aarch64'
1208 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001209 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001210 else
1211 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001212 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001213 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001214
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001215 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001216 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001217
1218 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001219else
1220 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001221endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001222conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001223
1224#####################################################################
1225
1226config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001227 output : 'config.h',
1228 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001229
1230includes = include_directories('src/basic',
1231 'src/shared',
1232 'src/systemd',
1233 'src/journal',
1234 'src/resolve',
1235 'src/timesync',
1236 'src/login',
1237 'src/udev',
1238 'src/libudev',
1239 'src/core',
1240 'src/libsystemd/sd-bus',
1241 'src/libsystemd/sd-device',
1242 'src/libsystemd/sd-hwdb',
1243 'src/libsystemd/sd-id128',
1244 'src/libsystemd/sd-netlink',
1245 'src/libsystemd/sd-network',
1246 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001247 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001248
1249add_project_arguments('-include', 'config.h', language : 'c')
1250
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001251subdir('po')
1252subdir('catalog')
1253subdir('src/systemd')
1254subdir('src/basic')
1255subdir('src/libsystemd')
1256subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001257subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001258subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001259
1260libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001261 'journal-core',
1262 libjournal_core_sources,
1263 journald_gperf_c,
1264 include_directories : includes,
1265 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001266
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001267libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001268libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001269 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001270 '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 +02001271 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001272 include_directories : includes,
1273 link_args : ['-shared',
1274 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001275 link_with : [libbasic,
1276 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001277 link_whole : [libsystemd_static,
1278 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001279 dependencies : [threads,
1280 librt,
1281 libxz,
1282 liblz4],
1283 link_depends : libsystemd_sym,
1284 install : true,
1285 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001286
1287############################################################
1288
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001289# binaries that have --help and are intended for use by humans,
1290# usually, but not always, installed in /bin.
1291public_programs = []
1292
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001293subdir('src/libudev')
1294subdir('src/shared')
1295subdir('src/core')
1296subdir('src/udev')
1297subdir('src/network')
1298
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001299subdir('src/analyze')
1300subdir('src/journal-remote')
1301subdir('src/coredump')
1302subdir('src/hostname')
1303subdir('src/import')
1304subdir('src/kernel-install')
1305subdir('src/locale')
1306subdir('src/machine')
1307subdir('src/nspawn')
1308subdir('src/resolve')
1309subdir('src/timedate')
1310subdir('src/timesync')
1311subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001312subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001313
1314subdir('src/test')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001315subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001316subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001317
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001318############################################################
1319
1320# only static linking apart from libdl, to make sure that the
1321# module is linked to all libraries that it uses.
1322test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001323 'test-dlopen',
1324 test_dlopen_c,
1325 include_directories : includes,
1326 link_with : [libbasic],
1327 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001328
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001329foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001330 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001331 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001332 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001333
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001334 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001335 if condition
1336 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001337
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001338 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1339 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001340
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001341 nss = shared_library(
1342 'nss_' + module,
1343 'src/nss-@0@/nss-@0@.c'.format(module),
1344 version : '2',
1345 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001346 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1347 link_args : ['-Wl,-z,nodelete',
1348 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001349 '-Wl,--version-script=' + version_script_arg,
1350 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001351 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001352 libbasic],
1353 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001354 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001355 link_depends : sym,
1356 install : true,
1357 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001358
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001359 # We cannot use shared_module because it does not support version suffix.
1360 # Unfortunately shared_library insists on creating the symlink…
1361 meson.add_install_script('sh', '-c',
1362 'rm $DESTDIR@0@/libnss_@1@.so'
1363 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001364
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001365 test('dlopen-nss_' + module,
1366 test_dlopen,
1367 args : [nss.full_path()]) # path to dlopen must include a slash
1368 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001369endforeach
1370
1371############################################################
1372
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001373executable('systemd',
1374 systemd_sources,
1375 include_directories : includes,
1376 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001377 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001378 dependencies : [threads,
1379 librt,
1380 libseccomp,
1381 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001382 libmount,
1383 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001384 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001385 install : true,
1386 install_dir : rootlibexecdir)
1387
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001388exe = executable('systemd-analyze',
1389 systemd_analyze_sources,
1390 include_directories : includes,
1391 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001392 libshared],
1393 dependencies : [threads,
1394 librt,
1395 libseccomp,
1396 libselinux,
1397 libmount,
1398 libblkid],
1399 install_rpath : rootlibexecdir,
1400 install : true)
1401public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001402
1403executable('systemd-journald',
1404 systemd_journald_sources,
1405 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001406 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001407 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001408 dependencies : [threads,
1409 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001410 liblz4,
1411 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001412 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001413 install : true,
1414 install_dir : rootlibexecdir)
1415
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001416exe = executable('systemd-cat',
1417 systemd_cat_sources,
1418 include_directories : includes,
1419 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001420 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001421 dependencies : [threads],
1422 install_rpath : rootlibexecdir,
1423 install : true)
1424public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001425
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001426exe = executable('journalctl',
1427 journalctl_sources,
1428 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001429 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001430 dependencies : [threads,
1431 libqrencode,
1432 libxz,
1433 liblz4],
1434 install_rpath : rootlibexecdir,
1435 install : true,
1436 install_dir : rootbindir)
1437public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001438
1439executable('systemd-getty-generator',
1440 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001441 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001442 link_with : [libshared],
1443 install_rpath : rootlibexecdir,
1444 install : true,
1445 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001446
1447executable('systemd-debug-generator',
1448 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001449 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001450 link_with : [libshared],
1451 install_rpath : rootlibexecdir,
1452 install : true,
1453 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001454
1455executable('systemd-fstab-generator',
1456 'src/fstab-generator/fstab-generator.c',
1457 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001458 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001459 link_with : [libshared],
1460 install_rpath : rootlibexecdir,
1461 install : true,
1462 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001463
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001464if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001465 executable('30-systemd-environment-d-generator',
1466 'src/environment-d-generator/environment-d-generator.c',
1467 include_directories : includes,
1468 link_with : [libshared],
1469 install_rpath : rootlibexecdir,
1470 install : true,
1471 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001472
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001473 meson.add_install_script(meson_make_symlink,
1474 join_paths(sysconfdir, 'environment'),
1475 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001476endif
1477
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001478if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001479 executable('systemd-hibernate-resume-generator',
1480 'src/hibernate-resume/hibernate-resume-generator.c',
1481 include_directories : includes,
1482 link_with : [libshared],
1483 install_rpath : rootlibexecdir,
1484 install : true,
1485 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001486
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001487 executable('systemd-hibernate-resume',
1488 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001489 include_directories : includes,
1490 link_with : [libshared],
1491 install_rpath : rootlibexecdir,
1492 install : true,
1493 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001494endif
1495
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001496if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001497 executable('systemd-gpt-auto-generator',
1498 'src/gpt-auto-generator/gpt-auto-generator.c',
1499 'src/basic/blkid-util.h',
1500 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001501 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001502 dependencies : libblkid,
1503 install_rpath : rootlibexecdir,
1504 install : true,
1505 install_dir : systemgeneratordir)
1506
1507 exe = executable('systemd-dissect',
1508 'src/dissect/dissect.c',
1509 include_directories : includes,
1510 link_with : [libshared],
1511 install_rpath : rootlibexecdir,
1512 install : true,
1513 install_dir : rootlibexecdir)
1514 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001515endif
1516
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001517if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001518 executable('systemd-resolved',
1519 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001520 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001521 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001522 libbasic_gcrypt,
1523 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001524 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001525 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001526 libm,
1527 libidn],
1528 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001529 install : true,
1530 install_dir : rootlibexecdir)
1531
1532 exe = executable('systemd-resolve',
1533 systemd_resolve_sources,
1534 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001535 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001536 libbasic_gcrypt,
1537 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001538 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001539 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001540 libm,
1541 libidn],
1542 install_rpath : rootlibexecdir,
1543 install : true)
1544 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001545endif
1546
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001547if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001548 executable('systemd-logind',
1549 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001550 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001551 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001552 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001553 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001554 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001555 install_rpath : rootlibexecdir,
1556 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001557 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001558
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001559 exe = executable('loginctl',
1560 loginctl_sources,
1561 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001562 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001563 dependencies : [threads,
1564 liblz4,
1565 libxz],
1566 install_rpath : rootlibexecdir,
1567 install : true,
1568 install_dir : rootbindir)
1569 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001570
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001571 exe = executable('systemd-inhibit',
1572 'src/login/inhibit.c',
1573 include_directories : includes,
1574 link_with : [libshared],
1575 install_rpath : rootlibexecdir,
1576 install : true,
1577 install_dir : rootbindir)
1578 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001579
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001580 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001581 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1582 pam_systemd = shared_library(
1583 'pam_systemd',
1584 pam_systemd_c,
1585 name_prefix : '',
1586 include_directories : includes,
1587 link_args : ['-shared',
1588 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001589 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001590 libshared_static],
1591 dependencies : [threads,
1592 libpam,
1593 libpam_misc],
1594 link_depends : pam_systemd_sym,
1595 install : true,
1596 install_dir : pamlibdir)
1597
1598 test('dlopen-pam_systemd',
1599 test_dlopen,
1600 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1601 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001602endif
1603
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001604if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001605 executable('systemd-user-sessions',
1606 'src/user-sessions/user-sessions.c',
1607 include_directories : includes,
1608 link_with : [libshared],
1609 install_rpath : rootlibexecdir,
1610 install : true,
1611 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001612endif
1613
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001614if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001615 exe = executable('bootctl',
1616 'src/boot/bootctl.c',
1617 include_directories : includes,
1618 link_with : [libshared],
1619 dependencies : [libblkid],
1620 install_rpath : rootlibexecdir,
1621 install : true)
1622 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001623endif
1624
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001625exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1626 include_directories : includes,
1627 link_with : [libshared],
1628 dependencies : [threads],
1629 install_rpath : rootlibexecdir,
1630 install : true)
1631public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001632
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001633exe = executable('systemctl', 'src/systemctl/systemctl.c',
1634 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001635 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001636 dependencies : [threads,
1637 libcap,
1638 libselinux,
1639 libxz,
1640 liblz4],
1641 install_rpath : rootlibexecdir,
1642 install : true,
1643 install_dir : rootbindir)
1644public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001645
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001646if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001647 executable('systemd-backlight',
1648 'src/backlight/backlight.c',
1649 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001650 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001651 install_rpath : rootlibexecdir,
1652 install : true,
1653 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001654endif
1655
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001656if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001657 executable('systemd-rfkill',
1658 'src/rfkill/rfkill.c',
1659 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001660 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001661 install_rpath : rootlibexecdir,
1662 install : true,
1663 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001664endif
1665
1666executable('systemd-system-update-generator',
1667 'src/system-update-generator/system-update-generator.c',
1668 include_directories : includes,
1669 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001670 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001671 install : true,
1672 install_dir : systemgeneratordir)
1673
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001674if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001675 executable('systemd-cryptsetup',
1676 'src/cryptsetup/cryptsetup.c',
1677 include_directories : includes,
1678 link_with : [libshared],
1679 dependencies : [libcryptsetup],
1680 install_rpath : rootlibexecdir,
1681 install : true,
1682 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001683
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001684 executable('systemd-cryptsetup-generator',
1685 'src/cryptsetup/cryptsetup-generator.c',
1686 include_directories : includes,
1687 link_with : [libshared],
1688 dependencies : [libcryptsetup],
1689 install_rpath : rootlibexecdir,
1690 install : true,
1691 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001692
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001693 executable('systemd-veritysetup',
1694 'src/veritysetup/veritysetup.c',
1695 include_directories : includes,
1696 link_with : [libshared],
1697 dependencies : [libcryptsetup],
1698 install_rpath : rootlibexecdir,
1699 install : true,
1700 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001701
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001702 executable('systemd-veritysetup-generator',
1703 'src/veritysetup/veritysetup-generator.c',
1704 include_directories : includes,
1705 link_with : [libshared],
1706 dependencies : [libcryptsetup],
1707 install_rpath : rootlibexecdir,
1708 install : true,
1709 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001710endif
1711
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001712if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001713 executable('systemd-sysv-generator',
1714 'src/sysv-generator/sysv-generator.c',
1715 include_directories : includes,
1716 link_with : [libshared],
1717 install_rpath : rootlibexecdir,
1718 install : true,
1719 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001720
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001721 executable('systemd-rc-local-generator',
1722 'src/rc-local-generator/rc-local-generator.c',
1723 include_directories : includes,
1724 link_with : [libshared],
1725 install_rpath : rootlibexecdir,
1726 install : true,
1727 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001728endif
1729
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001730if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001731 executable('systemd-hostnamed',
1732 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001733 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001734 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001735 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001736 install : true,
1737 install_dir : rootlibexecdir)
1738
1739 exe = executable('hostnamectl',
1740 'src/hostname/hostnamectl.c',
1741 include_directories : includes,
1742 link_with : [libshared],
1743 install_rpath : rootlibexecdir,
1744 install : true)
1745 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001746endif
1747
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001748if conf.get('ENABLE_LOCALED') == 1
1749 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001750 # logind will load libxkbcommon.so dynamically on its own
1751 deps = [libdl]
1752 else
1753 deps = []
1754 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001755
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001756 executable('systemd-localed',
1757 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001758 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001759 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001760 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001761 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001762 install : true,
1763 install_dir : rootlibexecdir)
1764
1765 exe = executable('localectl',
1766 localectl_sources,
1767 include_directories : includes,
1768 link_with : [libshared],
1769 install_rpath : rootlibexecdir,
1770 install : true)
1771 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001772endif
1773
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001774if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001775 executable('systemd-timedated',
1776 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001777 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001778 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001779 install_rpath : rootlibexecdir,
1780 install : true,
1781 install_dir : rootlibexecdir)
1782
1783 exe = executable('timedatectl',
1784 'src/timedate/timedatectl.c',
1785 include_directories : includes,
1786 install_rpath : rootlibexecdir,
1787 link_with : [libshared],
1788 install : true)
1789 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001790endif
1791
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001792if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001793 executable('systemd-timesyncd',
1794 systemd_timesyncd_sources,
1795 include_directories : includes,
1796 link_with : [libshared],
1797 dependencies : [threads,
1798 libm],
1799 install_rpath : rootlibexecdir,
1800 install : true,
1801 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001802endif
1803
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001804if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001805 executable('systemd-machined',
1806 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001807 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001808 link_with : [libmachine_core,
1809 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001810 install_rpath : rootlibexecdir,
1811 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001812 install_dir : rootlibexecdir)
1813
1814 exe = executable('machinectl',
1815 'src/machine/machinectl.c',
1816 include_directories : includes,
1817 link_with : [libshared],
1818 dependencies : [threads,
1819 libxz,
1820 liblz4],
1821 install_rpath : rootlibexecdir,
1822 install : true,
1823 install_dir : rootbindir)
1824 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001825endif
1826
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001827if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001828 executable('systemd-importd',
1829 systemd_importd_sources,
1830 include_directories : includes,
1831 link_with : [libshared],
1832 dependencies : [threads],
1833 install_rpath : rootlibexecdir,
1834 install : true,
1835 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001836
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001837 systemd_pull = executable('systemd-pull',
1838 systemd_pull_sources,
1839 include_directories : includes,
1840 link_with : [libshared],
1841 dependencies : [libcurl,
1842 libz,
1843 libbzip2,
1844 libxz,
1845 libgcrypt],
1846 install_rpath : rootlibexecdir,
1847 install : true,
1848 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001849
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001850 systemd_import = executable('systemd-import',
1851 systemd_import_sources,
1852 include_directories : includes,
1853 link_with : [libshared],
1854 dependencies : [libcurl,
1855 libz,
1856 libbzip2,
1857 libxz],
1858 install_rpath : rootlibexecdir,
1859 install : true,
1860 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001861
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001862 systemd_export = executable('systemd-export',
1863 systemd_export_sources,
1864 include_directories : includes,
1865 link_with : [libshared],
1866 dependencies : [libcurl,
1867 libz,
1868 libbzip2,
1869 libxz],
1870 install_rpath : rootlibexecdir,
1871 install : true,
1872 install_dir : rootlibexecdir)
1873 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001874endif
1875
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001876if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001877 exe = executable('systemd-journal-upload',
1878 systemd_journal_upload_sources,
1879 include_directories : includes,
1880 link_with : [libshared],
1881 dependencies : [threads,
1882 libcurl,
1883 libgnutls,
1884 libxz,
1885 liblz4],
1886 install_rpath : rootlibexecdir,
1887 install : true,
1888 install_dir : rootlibexecdir)
1889 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001890endif
1891
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001892if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001893 s_j_remote = executable('systemd-journal-remote',
1894 systemd_journal_remote_sources,
1895 include_directories : includes,
1896 link_with : [libshared],
1897 dependencies : [threads,
1898 libmicrohttpd,
1899 libgnutls,
1900 libxz,
1901 liblz4],
1902 install_rpath : rootlibexecdir,
1903 install : true,
1904 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001905
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001906 s_j_gatewayd = executable('systemd-journal-gatewayd',
1907 systemd_journal_gatewayd_sources,
1908 include_directories : includes,
1909 link_with : [libshared],
1910 dependencies : [threads,
1911 libmicrohttpd,
1912 libgnutls,
1913 libxz,
1914 liblz4],
1915 install_rpath : rootlibexecdir,
1916 install : true,
1917 install_dir : rootlibexecdir)
1918 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001919endif
1920
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001921if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001922 executable('systemd-coredump',
1923 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001924 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001925 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001926 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001927 libacl,
1928 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001929 libxz,
1930 liblz4],
1931 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001932 install : true,
1933 install_dir : rootlibexecdir)
1934
1935 exe = executable('coredumpctl',
1936 coredumpctl_sources,
1937 include_directories : includes,
1938 link_with : [libshared],
1939 dependencies : [threads,
1940 libxz,
1941 liblz4],
1942 install_rpath : rootlibexecdir,
1943 install : true)
1944 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001945endif
1946
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001947if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001948 exe = executable('systemd-binfmt',
1949 'src/binfmt/binfmt.c',
1950 include_directories : includes,
1951 link_with : [libshared],
1952 install_rpath : rootlibexecdir,
1953 install : true,
1954 install_dir : rootlibexecdir)
1955 public_programs += [exe]
1956
1957 meson.add_install_script('sh', '-c',
1958 mkdir_p.format(binfmtdir))
1959 meson.add_install_script('sh', '-c',
1960 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
1961endif
1962
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001963if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001964 executable('systemd-vconsole-setup',
1965 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001966 include_directories : includes,
1967 link_with : [libshared],
1968 install_rpath : rootlibexecdir,
1969 install : true,
1970 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001971endif
1972
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001973if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001974 executable('systemd-random-seed',
1975 'src/random-seed/random-seed.c',
1976 include_directories : includes,
1977 link_with : [libshared],
1978 install_rpath : rootlibexecdir,
1979 install : true,
1980 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001981endif
1982
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001983if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001984 executable('systemd-firstboot',
1985 'src/firstboot/firstboot.c',
1986 include_directories : includes,
1987 link_with : [libshared],
1988 dependencies : [libcrypt],
1989 install_rpath : rootlibexecdir,
1990 install : true,
1991 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001992endif
1993
1994executable('systemd-remount-fs',
1995 'src/remount-fs/remount-fs.c',
1996 'src/core/mount-setup.c',
1997 'src/core/mount-setup.h',
1998 include_directories : includes,
1999 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002000 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002001 install : true,
2002 install_dir : rootlibexecdir)
2003
2004executable('systemd-machine-id-setup',
2005 'src/machine-id-setup/machine-id-setup-main.c',
2006 'src/core/machine-id-setup.c',
2007 'src/core/machine-id-setup.h',
2008 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002009 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002010 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002011 install : true,
2012 install_dir : rootbindir)
2013
2014executable('systemd-fsck',
2015 'src/fsck/fsck.c',
2016 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002017 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002018 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002019 install : true,
2020 install_dir : rootlibexecdir)
2021
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002022executable('systemd-growfs',
2023 'src/partition/growfs.c',
2024 include_directories : includes,
2025 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002026 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002027 install_rpath : rootlibexecdir,
2028 install : true,
2029 install_dir : rootlibexecdir)
2030
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002031executable('systemd-makefs',
2032 'src/partition/makefs.c',
2033 include_directories : includes,
2034 link_with : [libshared],
2035 install_rpath : rootlibexecdir,
2036 install : true,
2037 install_dir : rootlibexecdir)
2038
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002039executable('systemd-sleep',
2040 'src/sleep/sleep.c',
2041 include_directories : includes,
2042 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002043 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002044 install : true,
2045 install_dir : rootlibexecdir)
2046
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002047exe = executable('systemd-sysctl',
2048 'src/sysctl/sysctl.c',
2049 include_directories : includes,
2050 link_with : [libshared],
2051 install_rpath : rootlibexecdir,
2052 install : true,
2053 install_dir : rootlibexecdir)
2054public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002055
2056executable('systemd-ac-power',
2057 'src/ac-power/ac-power.c',
2058 include_directories : includes,
2059 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002060 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002061 install : true,
2062 install_dir : rootlibexecdir)
2063
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002064exe = executable('systemd-detect-virt',
2065 'src/detect-virt/detect-virt.c',
2066 include_directories : includes,
2067 link_with : [libshared],
2068 install_rpath : rootlibexecdir,
2069 install : true)
2070public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002071
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002072exe = executable('systemd-delta',
2073 'src/delta/delta.c',
2074 include_directories : includes,
2075 link_with : [libshared],
2076 install_rpath : rootlibexecdir,
2077 install : true)
2078public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002079
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002080exe = executable('systemd-escape',
2081 'src/escape/escape.c',
2082 include_directories : includes,
2083 link_with : [libshared],
2084 install_rpath : rootlibexecdir,
2085 install : true,
2086 install_dir : rootbindir)
2087public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002088
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002089exe = executable('systemd-notify',
2090 'src/notify/notify.c',
2091 include_directories : includes,
2092 link_with : [libshared],
2093 install_rpath : rootlibexecdir,
2094 install : true,
2095 install_dir : rootbindir)
2096public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002097
2098executable('systemd-volatile-root',
2099 'src/volatile-root/volatile-root.c',
2100 include_directories : includes,
2101 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002102 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002103 install : true,
2104 install_dir : rootlibexecdir)
2105
2106executable('systemd-cgroups-agent',
2107 'src/cgroups-agent/cgroups-agent.c',
2108 include_directories : includes,
2109 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002110 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002111 install : true,
2112 install_dir : rootlibexecdir)
2113
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002114exe = executable('systemd-path',
2115 'src/path/path.c',
2116 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002117 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002118 install_rpath : rootlibexecdir,
2119 install : true)
2120public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002121
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002122exe = executable('systemd-ask-password',
2123 'src/ask-password/ask-password.c',
2124 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002125 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002126 install_rpath : rootlibexecdir,
2127 install : true,
2128 install_dir : rootbindir)
2129public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002130
2131executable('systemd-reply-password',
2132 'src/reply-password/reply-password.c',
2133 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002134 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002135 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002136 install : true,
2137 install_dir : rootlibexecdir)
2138
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002139exe = executable('systemd-tty-ask-password-agent',
2140 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2141 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002142 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002143 install_rpath : rootlibexecdir,
2144 install : true,
2145 install_dir : rootbindir)
2146public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002147
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002148exe = executable('systemd-cgls',
2149 'src/cgls/cgls.c',
2150 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002151 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002152 install_rpath : rootlibexecdir,
2153 install : true)
2154public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002155
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002156exe = executable('systemd-cgtop',
2157 'src/cgtop/cgtop.c',
2158 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002159 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002160 install_rpath : rootlibexecdir,
2161 install : true)
2162public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002163
2164executable('systemd-initctl',
2165 'src/initctl/initctl.c',
2166 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002167 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002168 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002169 install : true,
2170 install_dir : rootlibexecdir)
2171
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002172exe = executable('systemd-mount',
2173 'src/mount/mount-tool.c',
2174 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002175 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-Szmek7b76fce2017-04-09 23:55:50 -04002180meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002181 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002182
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002183exe = executable('systemd-run',
2184 'src/run/run.c',
2185 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002186 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002187 install_rpath : rootlibexecdir,
2188 install : true)
2189public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002190
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002191exe = executable('systemd-stdio-bridge',
2192 'src/stdio-bridge/stdio-bridge.c',
2193 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002194 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002195 install_rpath : rootlibexecdir,
2196 install : true)
2197public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002198
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002199exe = executable('busctl',
2200 'src/busctl/busctl.c',
2201 'src/busctl/busctl-introspect.c',
2202 'src/busctl/busctl-introspect.h',
2203 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002204 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002205 install_rpath : rootlibexecdir,
2206 install : true)
2207public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002208
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002209if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002210 exe = executable('systemd-sysusers',
2211 'src/sysusers/sysusers.c',
2212 include_directories : includes,
2213 link_with : [libshared],
2214 install_rpath : rootlibexecdir,
2215 install : true,
2216 install_dir : rootbindir)
2217 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002218endif
2219
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002220if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002221 exe = executable('systemd-tmpfiles',
2222 'src/tmpfiles/tmpfiles.c',
2223 include_directories : includes,
2224 link_with : [libshared],
2225 dependencies : [libacl],
2226 install_rpath : rootlibexecdir,
2227 install : true,
2228 install_dir : rootbindir)
2229 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002230
2231 test('test-systemd-tmpfiles',
2232 test_systemd_tmpfiles_py,
2233 args : exe.full_path())
2234 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002235endif
2236
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002237if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002238 exe = executable('systemd-hwdb',
2239 'src/hwdb/hwdb.c',
2240 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2241 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002242 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002243 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002244 install : true,
2245 install_dir : rootbindir)
2246 public_programs += [exe]
2247endif
2248
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002249if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002250 executable('systemd-quotacheck',
2251 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002252 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002253 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002254 install_rpath : rootlibexecdir,
2255 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002256 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002257endif
2258
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002259exe = executable('systemd-socket-proxyd',
2260 'src/socket-proxy/socket-proxyd.c',
2261 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002262 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002263 dependencies : [threads],
2264 install_rpath : rootlibexecdir,
2265 install : true,
2266 install_dir : rootlibexecdir)
2267public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002268
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002269exe = executable('systemd-udevd',
2270 systemd_udevd_sources,
2271 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002272 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002273 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002274 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002275 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002276 dependencies : [threads,
2277 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002278 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002279 libacl,
2280 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002281 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002282 install : true,
2283 install_dir : rootlibexecdir)
2284public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002285
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002286exe = executable('udevadm',
2287 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002288 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002289 include_directories : includes,
2290 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002291 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002292 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002293 dependencies : [threads,
2294 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002295 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002296 libacl,
2297 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002298 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002299 install : true,
2300 install_dir : rootbindir)
2301public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002302
2303executable('systemd-shutdown',
2304 systemd_shutdown_sources,
2305 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002306 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002307 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002308 install : true,
2309 install_dir : rootlibexecdir)
2310
2311executable('systemd-update-done',
2312 'src/update-done/update-done.c',
2313 include_directories : includes,
2314 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002315 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002316 install : true,
2317 install_dir : rootlibexecdir)
2318
2319executable('systemd-update-utmp',
2320 'src/update-utmp/update-utmp.c',
2321 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002322 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002323 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002324 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002325 install : true,
2326 install_dir : rootlibexecdir)
2327
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002328if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002329 executable('systemd-modules-load',
2330 'src/modules-load/modules-load.c',
2331 include_directories : includes,
2332 link_with : [libshared],
2333 dependencies : [libkmod],
2334 install_rpath : rootlibexecdir,
2335 install : true,
2336 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002337
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002338 meson.add_install_script('sh', '-c',
2339 mkdir_p.format(modulesloaddir))
2340 meson.add_install_script('sh', '-c',
2341 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002342endif
2343
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002344exe = executable('systemd-nspawn',
2345 systemd_nspawn_sources,
2346 'src/core/mount-setup.c', # FIXME: use a variable?
2347 'src/core/mount-setup.h',
2348 'src/core/loopback-setup.c',
2349 'src/core/loopback-setup.h',
2350 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002351 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002352 dependencies : [libacl,
2353 libblkid,
2354 libseccomp,
2355 libselinux],
2356 install_rpath : rootlibexecdir,
2357 install : true)
2358public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002359
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002360if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002361 executable('systemd-networkd',
2362 systemd_networkd_sources,
2363 include_directories : includes,
2364 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002365 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002366 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002367 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002368 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002369 install_rpath : rootlibexecdir,
2370 install : true,
2371 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002372
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002373 executable('systemd-networkd-wait-online',
2374 systemd_networkd_wait_online_sources,
2375 include_directories : includes,
2376 link_with : [libnetworkd_core,
2377 libshared],
2378 install_rpath : rootlibexecdir,
2379 install : true,
2380 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002381
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002382 exe = executable('networkctl',
2383 networkctl_sources,
2384 include_directories : includes,
2385 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002386 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002387 install_rpath : rootlibexecdir,
2388 install : true,
2389 install_dir : rootbindir)
2390 public_programs += [exe]
2391endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002392
2393executable('systemd-sulogin-shell',
2394 ['src/sulogin-shell/sulogin-shell.c'],
2395 include_directories : includes,
2396 link_with : [libshared],
2397 install_rpath : rootlibexecdir,
2398 install : true,
2399 install_dir : rootlibexecdir)
2400
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002401############################################################
2402
2403foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002404 sources = tuple[0]
2405 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2406 dependencies = tuple[2]
2407 condition = tuple.length() >= 4 ? tuple[3] : ''
2408 type = tuple.length() >= 5 ? tuple[4] : ''
2409 defs = tuple.length() >= 6 ? tuple[5] : []
2410 incs = tuple.length() >= 7 ? tuple[6] : includes
2411 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002412
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002413 name = sources[0].split('/')[-1].split('.')[0]
2414 if type.startswith('timeout=')
2415 timeout = type.split('=')[1].to_int()
2416 type = ''
2417 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002418
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002419 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002420 exe = executable(
2421 name,
2422 sources,
2423 include_directories : incs,
2424 link_with : link_with,
2425 dependencies : dependencies,
2426 c_args : defs,
2427 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002428 install : install_tests,
2429 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002430
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002431 if type == 'manual'
2432 message('@0@ is a manual test'.format(name))
2433 elif type == 'unsafe' and want_tests != 'unsafe'
2434 message('@0@ is an unsafe test'.format(name))
2435 else
2436 test(name, exe,
2437 env : test_env,
2438 timeout : timeout)
2439 endif
2440 else
2441 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2442 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002443endforeach
2444
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002445test_libsystemd_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002446 'test-libsystemd-sym',
2447 test_libsystemd_sym_c,
2448 include_directories : includes,
2449 link_with : [libsystemd],
2450 install : install_tests,
2451 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002452test('test-libsystemd-sym',
2453 test_libsystemd_sym)
2454
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002455test_libudev_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002456 'test-libudev-sym',
2457 test_libudev_sym_c,
2458 include_directories : includes,
2459 c_args : ['-Wno-deprecated-declarations'],
2460 link_with : [libudev],
2461 install : install_tests,
2462 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002463test('test-libudev-sym',
2464 test_libudev_sym)
2465
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002466############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002467
2468make_directive_index_py = find_program('tools/make-directive-index.py')
2469make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002470xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002471hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002472
2473subdir('units')
2474subdir('sysctl.d')
2475subdir('sysusers.d')
2476subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002477subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002478subdir('hwdb')
2479subdir('network')
2480subdir('man')
2481subdir('shell-completion/bash')
2482subdir('shell-completion/zsh')
2483subdir('docs/sysvinit')
2484subdir('docs/var-log')
2485
2486# FIXME: figure out if the warning is true:
2487# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2488install_subdir('factory/etc',
2489 install_dir : factorydir)
2490
2491
2492install_data('xorg/50-systemd-user.sh',
2493 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002494install_data('modprobe.d/systemd.conf',
2495 install_dir : modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002496install_data('README',
2497 'NEWS',
2498 'CODING_STYLE',
2499 'DISTRO_PORTING',
2500 'ENVIRONMENT.md',
2501 'LICENSE.GPL2',
2502 'LICENSE.LGPL2.1',
Felipe Satelerf9f54412017-12-18 10:58:13 -03002503 'TRANSIENT-SETTINGS.md',
2504 'UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002505 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2506 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002507
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002508meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2509meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2510
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002511############################################################
2512
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002513meson_check_help = find_program('tools/meson-check-help.sh')
2514
2515foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002516 name = exec.full_path().split('/')[-1]
2517 test('check-help-' + name,
2518 meson_check_help,
2519 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002520endforeach
2521
2522############################################################
2523
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002524if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002525 all_files = run_command(
2526 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002527 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002528 'ls-files',
2529 ':/*.[ch]'])
2530 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002531
userwithuide85a6902017-08-09 13:41:44 +00002532 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002533 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002534 output : 'tags',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002535 command : ['env', 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002536 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002537 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002538 output : 'ctags',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002539 command : ['env', 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002540endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002541
2542if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002543 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002544 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002545 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002546 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002547endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002548
2549if git.found()
2550 git_head = run_command(
2551 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002552 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002553 'rev-parse', 'HEAD']).stdout().strip()
2554 git_head_short = run_command(
2555 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002556 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002557 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2558
2559 run_target(
2560 'git-snapshot',
2561 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002562 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002563 git_head_short),
2564 '--prefix', 'systemd-@0@/'.format(git_head),
2565 'HEAD'])
2566endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002567
2568############################################################
2569
Lennart Poettering51b13862017-12-20 12:51:14 +01002570meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2571run_target(
2572 'check-api-docs',
2573 depends : [man, libsystemd, libudev],
2574 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2575
2576############################################################
2577
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002578status = [
2579 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2580
Yu Watanabe359b4962017-11-25 20:35:24 +09002581 'prefix directory: @0@'.format(prefixdir),
2582 'rootprefix directory: @0@'.format(rootprefixdir),
2583 'sysconf directory: @0@'.format(sysconfdir),
2584 'include directory: @0@'.format(includedir),
2585 'lib directory: @0@'.format(libdir),
2586 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002587 'SysV init scripts: @0@'.format(sysvinit_path),
2588 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002589 'PAM modules directory: @0@'.format(pamlibdir),
2590 'PAM configuration directory: @0@'.format(pamconfdir),
2591 'RPM macros directory: @0@'.format(rpmmacrosdir),
2592 'modprobe.d directory: @0@'.format(modprobedir),
2593 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2594 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2595 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2596 'bash completions directory: @0@'.format(bashcompletiondir),
2597 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002598 'extra start script: @0@'.format(get_option('rc-local')),
2599 'extra stop script: @0@'.format(get_option('halt-local')),
2600 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2601 get_option('debug-tty')),
2602 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002603 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002604 'maximum system UID: @0@'.format(system_uid_max),
2605 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002606 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2607 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2608 'minimum container UID base: @0@'.format(container_uid_base_min),
2609 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002610 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002611 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002612 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002613 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002614 'nobody user name: @0@'.format(nobody_user),
2615 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002616 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002617 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002618
2619 'default DNSSEC mode: @0@'.format(default_dnssec),
2620 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2621 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2622
2623alt_dns_servers = '\n '.join(dns_servers.split(' '))
2624alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2625status += [
2626 'default DNS servers: @0@'.format(alt_dns_servers),
2627 'default NTP servers: @0@'.format(alt_ntp_servers)]
2628
2629alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2630 '@@0@'.format(time_epoch)).stdout().strip()
2631status += [
2632 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2633
2634# TODO:
2635# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2636# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2637# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2638
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002639if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002640 status += [
2641 'efi arch: @0@'.format(efi_arch)]
2642
2643 if have_gnu_efi
2644 status += [
2645 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2646 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002647 'EFI lib directory: @0@'.format(efi_libdir),
2648 'EFI lds directory: @0@'.format(efi_ldsdir),
2649 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002650 endif
2651endif
2652
2653found = []
2654missing = []
2655
2656foreach tuple : [
2657 ['libcryptsetup'],
2658 ['PAM'],
2659 ['AUDIT'],
2660 ['IMA'],
2661 ['AppArmor'],
2662 ['SELinux'],
2663 ['SECCOMP'],
2664 ['SMACK'],
2665 ['zlib'],
2666 ['xz'],
2667 ['lz4'],
2668 ['bzip2'],
2669 ['ACL'],
2670 ['gcrypt'],
2671 ['qrencode'],
2672 ['microhttpd'],
2673 ['gnutls'],
2674 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002675 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002676 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002677 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002678 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002679 ['libiptc'],
2680 ['elfutils'],
2681 ['binfmt'],
2682 ['vconsole'],
2683 ['quotacheck'],
2684 ['tmpfiles'],
2685 ['environment.d'],
2686 ['sysusers'],
2687 ['firstboot'],
2688 ['randomseed'],
2689 ['backlight'],
2690 ['rfkill'],
2691 ['logind'],
2692 ['machined'],
2693 ['importd'],
2694 ['hostnamed'],
2695 ['timedated'],
2696 ['timesyncd'],
2697 ['localed'],
2698 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002699 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002700 ['coredump'],
2701 ['polkit'],
2702 ['legacy pkla', install_polkit_pkla],
2703 ['efi'],
2704 ['gnu-efi', have_gnu_efi],
2705 ['kmod'],
2706 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01002707 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002708 ['blkid'],
2709 ['dbus'],
2710 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002711 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002712 ['hwdb'],
2713 ['tpm'],
2714 ['man pages', want_man],
2715 ['html pages', want_html],
2716 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002717 ['split /usr', conf.get('HAVE_SPLIT_USR') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002718 ['SysV compat'],
2719 ['utmp'],
2720 ['ldconfig'],
2721 ['hibernate'],
2722 ['adm group', get_option('adm-group')],
2723 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002724 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002725 ['debug hashmap'],
2726 ['debug mmap cache'],
2727]
2728
2729 cond = tuple.get(1, '')
2730 if cond == ''
2731 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2732 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002733 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002734 endif
2735 if cond
2736 found += [tuple[0]]
2737 else
2738 missing += [tuple[0]]
2739 endif
2740endforeach
2741
2742status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002743 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002744 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002745 '',
2746 'disabled features: @0@'.format(', '.join(missing)),
2747 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002748message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002749
2750if rootprefixdir != rootprefix_default
2751 message('WARNING:\n' +
2752 ' Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2753 ' systemd used fixed names for unit file directories and other paths, so anything\n' +
2754 ' except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
2755endif