blob: e0e8178910f6518b8bd54094340eb960d737cb6d [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 Poettering63950422017-09-28 11:29:52 +020019 version : '235',
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 Poetteringd128f362017-10-05 17:14:04 +020030libsystemd_version = '0.19.1'
31libudev_version = '1.6.7'
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')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020070have = sysvinit_path != '' or sysvrcnd_path != ''
71conf.set10('HAVE_SYSV_COMPAT', have,
72 description : 'SysV init scripts and rcN.d links are supported')
73m4_defines += have ? ['-DHAVE_SYSV_COMPAT'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040074
75# join_paths ignore the preceding arguments if an absolute component is
76# encountered, so this should canonicalize various paths when they are
77# absolute or relative.
78prefixdir = get_option('prefix')
79if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040080 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040081endif
82bindir = join_paths(prefixdir, get_option('bindir'))
83libdir = join_paths(prefixdir, get_option('libdir'))
84sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
85includedir = join_paths(prefixdir, get_option('includedir'))
86datadir = join_paths(prefixdir, get_option('datadir'))
87localstatedir = join_paths('/', get_option('localstatedir'))
88
89rootbindir = join_paths(rootprefixdir, 'bin')
90rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
91
92rootlibdir = get_option('rootlibdir')
93if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040094 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040095endif
96
97# Dirs of external packages
Michael Bieble17e5ba2017-04-13 10:30:56 -040098pkgconfigdatadir = join_paths(datadir, 'pkgconfig')
99pkgconfiglibdir = join_paths(libdir, 'pkgconfig')
100polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
101polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
102polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
103varlogdir = join_paths(localstatedir, 'log')
104xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900105rpmmacrosdir = get_option('rpmmacrosdir')
106if rpmmacrosdir != 'no'
107 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
108endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200109modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400110
111# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400112pkgdatadir = join_paths(datadir, 'systemd')
113environmentdir = join_paths(prefixdir, 'lib/environment.d')
114pkgsysconfdir = join_paths(sysconfdir, 'systemd')
115userunitdir = join_paths(prefixdir, 'lib/systemd/user')
116userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
117tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
118sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
119sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
120binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
121modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
122networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
123pkgincludedir = join_paths(includedir, 'systemd')
124systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
125usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
126systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
127userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
128systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
129systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
130systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
131systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
132udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
133udevhomedir = udevlibexecdir
134udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
135udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
136catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
137kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
138factorydir = join_paths(datadir, 'factory')
139docdir = join_paths(datadir, 'doc/systemd')
140bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
141testsdir = join_paths(prefixdir, 'lib/systemd/tests')
142systemdstatedir = join_paths(localstatedir, 'lib/systemd')
143catalogstatedir = join_paths(systemdstatedir, 'catalog')
144randomseeddir = join_paths(localstatedir, 'lib/systemd')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400145
146dbuspolicydir = get_option('dbuspolicydir')
147if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400148 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400149endif
150
151dbussessionservicedir = get_option('dbussessionservicedir')
152if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400153 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400154endif
155
156dbussystemservicedir = get_option('dbussystemservicedir')
157if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400158 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400159endif
160
161pamlibdir = get_option('pamlibdir')
162if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400163 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400164endif
165
166pamconfdir = get_option('pamconfdir')
167if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400168 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400169endif
170
171conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400172conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400173conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
174conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
175conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400176conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
177conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400178conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400179conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
180conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400181conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
182conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
183conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
184conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100185conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100186conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400187conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
188conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
189conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
190conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
191conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100192conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400193conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400194conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
195conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400196conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
197conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
198conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
199conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
200conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
201conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400202conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
203conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400204conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400205conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400206conf.set_quoted('LIBDIR', libdir)
207conf.set_quoted('ROOTLIBDIR', rootlibdir)
208conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
209conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400210conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
211conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
212conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
213conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
214conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
215conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400216
217conf.set_quoted('ABS_BUILD_DIR', meson.build_root())
218conf.set_quoted('ABS_SRC_DIR', meson.source_root())
219
220substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400221substs.set('exec_prefix', prefixdir)
222substs.set('libdir', libdir)
223substs.set('rootlibdir', rootlibdir)
224substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400225substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400226substs.set('bindir', bindir)
227substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400228substs.set('rootlibexecdir', rootlibexecdir)
229substs.set('systemunitdir', systemunitdir)
230substs.set('userunitdir', userunitdir)
231substs.set('systempresetdir', systempresetdir)
232substs.set('userpresetdir', userpresetdir)
233substs.set('udevhwdbdir', udevhwdbdir)
234substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400235substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400236substs.set('catalogdir', catalogdir)
237substs.set('tmpfilesdir', tmpfilesdir)
238substs.set('sysusersdir', sysusersdir)
239substs.set('sysctldir', sysctldir)
240substs.set('binfmtdir', binfmtdir)
241substs.set('modulesloaddir', modulesloaddir)
242substs.set('systemgeneratordir', systemgeneratordir)
243substs.set('usergeneratordir', usergeneratordir)
244substs.set('systemenvgeneratordir', systemenvgeneratordir)
245substs.set('userenvgeneratordir', userenvgeneratordir)
246substs.set('systemshutdowndir', systemshutdowndir)
247substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400248substs.set('VARLOGDIR', varlogdir)
249substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400250substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
251substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400252substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
253substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
254substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
255substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400256
257#####################################################################
258
259cc = meson.get_compiler('c')
260pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400261check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400262
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400263cxx = find_program('c++', required : false)
264if cxx.found()
265 # Used only for tests
266 add_languages('cpp')
267endif
268
Zbigniew Jędrzejewski-Szmek75cf1d62017-07-04 17:59:15 -0400269foreach arg : ['-Wextra',
Zbigniew Jędrzejewski-Szmek70160ce2017-10-03 12:11:49 +0200270 '-Werror=undef',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400271 '-Wlogical-op',
272 '-Wmissing-include-dirs',
273 '-Wold-style-definition',
274 '-Wpointer-arith',
275 '-Winit-self',
276 '-Wdeclaration-after-statement',
277 '-Wfloat-equal',
278 '-Wsuggest-attribute=noreturn',
279 '-Werror=missing-prototypes',
280 '-Werror=implicit-function-declaration',
281 '-Werror=missing-declarations',
282 '-Werror=return-type',
283 '-Werror=incompatible-pointer-types',
284 '-Werror=format=2',
285 '-Wstrict-prototypes',
286 '-Wredundant-decls',
287 '-Wmissing-noreturn',
Zbigniew Jędrzejewski-Szmek97279d82017-11-20 14:23:40 +0100288 '-Wimplicit-fallthrough=5',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400289 '-Wshadow',
290 '-Wendif-labels',
291 '-Wstrict-aliasing=2',
292 '-Wwrite-strings',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400293 '-Werror=overflow',
294 '-Wdate-time',
295 '-Wnested-externs',
296 '-ffast-math',
297 '-fno-common',
298 '-fdiagnostics-show-option',
299 '-fno-strict-aliasing',
300 '-fvisibility=hidden',
301 '-fstack-protector',
302 '-fstack-protector-strong',
303 '-fPIE',
304 '--param=ssp-buffer-size=4',
305 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400306 if cc.has_argument(arg)
307 add_project_arguments(arg, language : 'c')
308 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400309endforeach
310
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400311# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
312# arguments, just emits a warnings. So test for the "positive" version instead.
313foreach arg : ['unused-parameter',
314 'missing-field-initializers',
315 'unused-result',
Zbigniew Jędrzejewski-Szmekfb1b5882017-09-04 19:49:12 +0300316 'format-signedness',
317 'error=nonnull', # work-around for gcc 7.1 turning this on on its own
318 ]
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400319 if cc.has_argument('-W' + arg)
320 add_project_arguments('-Wno-' + arg, language : 'c')
321 endif
322endforeach
323
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400324if cc.compiles('
325 #include <time.h>
326 #include <inttypes.h>
327 typedef uint64_t usec_t;
328 usec_t now(clockid_t clock);
329 int main(void) {
330 struct timespec now;
331 return 0;
332 }
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400333', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400334 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400335endif
336
337if cc.get_id() == 'clang'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400338 foreach arg : ['-Wno-typedef-redefinition',
339 '-Wno-gnu-variable-sized-type-not-at-end',
340 ]
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400341 if cc.has_argument(arg,
342 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400343 add_project_arguments(arg, language : 'c')
344 endif
345 endforeach
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400346endif
347
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400348link_test_c = files('tools/meson-link-test.c')
349
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400350# --as-needed and --no-undefined are provided by meson by default,
351# run mesonconf to see what is enabled
352foreach arg : ['-Wl,-z,relro',
353 '-Wl,-z,now',
354 '-pie',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400355 ]
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400356
357 have = run_command(check_compilation_sh,
358 cc.cmd_array(), '-x', 'c', arg,
359 '-include', link_test_c).returncode() == 0
360 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
361 if have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400362 add_project_link_arguments(arg, language : 'c')
363 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400364endforeach
365
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400366if get_option('buildtype') != 'debug'
367 foreach arg : ['-ffunction-sections',
368 '-fdata-sections']
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400369 if cc.has_argument(arg,
370 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400371 add_project_arguments(arg, language : 'c')
372 endif
373 endforeach
374
375 foreach arg : ['-Wl,--gc-sections']
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400376 have = run_command(check_compilation_sh,
377 cc.cmd_array(), '-x', 'c', arg,
378 '-include', link_test_c).returncode() == 0
379 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
380 if have
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400381 add_project_link_arguments(arg, language : 'c')
382 endif
383 endforeach
384endif
385
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400386cpp = ' '.join(cc.cmd_array()) + ' -E'
387
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400388#####################################################################
389# compilation result tests
390
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400391conf.set('_GNU_SOURCE', true)
392conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400393
394conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
395conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
396conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
397conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
398conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
399conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
400conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
401
402decl_headers = '''
403#include <uchar.h>
404#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000405#include <linux/fib_rules.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400406'''
407# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
408
409foreach decl : ['char16_t',
410 'char32_t',
411 'key_serial_t',
412 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000413 'struct fib_rule_uid_range',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400414 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400415
416 # We get -1 if the size cannot be determined
417 have = cc.sizeof(decl, prefix : decl_headers) > 0
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200418 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400419endforeach
420
421foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
422 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
423 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
424 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
425 ['IFLA_IPVLAN_MODE', 'linux/if_link.h'],
426 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
427 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
428 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
429 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
430 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530431 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400432 # if_tunnel.h is buggy and cannot be included on its own
433 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
434 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
435 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
436 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
437 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
438 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
439 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
440 ['NDA_IFINDEX', 'linux/neighbour.h'],
441 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000442 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400443 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530444 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400445 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400446 prefix = decl.length() > 2 ? decl[2] : ''
447 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200448 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400449endforeach
450
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400451foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200452 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400453endforeach
454
455foreach ident : [
Yu Watanabee4816452017-11-26 02:17:06 +0900456 ['memfd_create', '''#define _GNU_SOURCE
457 #include <sys/mman.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400458 ['gettid', '''#include <sys/types.h>'''],
459 ['pivot_root', '''#include <stdlib.h>'''], # no known header declares pivot_root
460 ['name_to_handle_at', '''#define _GNU_SOURCE
461 #include <sys/types.h>
462 #include <sys/stat.h>
463 #include <fcntl.h>'''],
464 ['setns', '''#define _GNU_SOURCE
465 #include <sched.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400466 ['renameat2', '''#include <stdio.h>'''],
467 ['kcmp', '''#include <linux/kcmp.h>'''],
468 ['keyctl', '''#include <sys/types.h>
469 #include <keyutils.h>'''],
470 ['copy_file_range', '''#include <sys/syscall.h>
471 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200472 ['bpf', '''#include <sys/syscall.h>
473 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmek38f1ae02017-04-19 16:14:16 -0400474 ['explicit_bzero' , '''#include <string.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400475]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400476
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400477 have = cc.has_function(ident[0], prefix : ident[1])
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200478 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400479endforeach
480
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400481if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200482 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200483 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400484else
485 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200486 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200487 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400488endif
489
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400490#####################################################################
491
492sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400493awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400494m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400495stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400496git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400497
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400498meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400499mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400500test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
501splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400502
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400503# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
504# /usr/sbin, /sbin, and fall back to the default from middle column.
505progs = [['telinit', '/lib/sysvinit/telinit'],
506 ['quotaon', '/usr/sbin/quotaon' ],
507 ['quotacheck', '/usr/sbin/quotacheck' ],
508 ['kill', '/usr/bin/kill' ],
509 ['kmod', '/usr/bin/kmod' ],
510 ['kexec', '/usr/sbin/kexec' ],
511 ['sulogin', '/usr/sbin/sulogin' ],
512 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
513 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
514 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
515 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
516 ]
517foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400518 path = get_option(prog[0] + '-path')
519 if path != ''
520 message('Using @1@ for @0@'.format(prog[0], path))
521 else
522 exe = find_program(prog[0],
523 '/usr/sbin/' + prog[0],
524 '/sbin/' + prog[0],
525 required: false)
526 path = exe.found() ? exe.path() : prog[1]
527 endif
528 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
529 conf.set_quoted(name, path)
530 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400531endforeach
532
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400533if run_command('ln', '--relative', '--help').returncode() != 0
534 error('ln does not support --relative')
535endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400536
537############################################################
538
539gperf = find_program('gperf')
540
541gperf_test_format = '''
542#include <string.h>
543const char * in_word_set(const char *, @0@);
544@1@
545'''
546gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
547gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
548gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
549if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400550 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400551else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400552 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
553 if cc.compiles(gperf_test)
554 gperf_len_type = 'unsigned'
555 else
556 error('unable to determine gperf len type')
557 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400558endif
559message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400560conf.set('GPERF_LEN_TYPE', gperf_len_type,
561 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400562
563############################################################
564
565if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400566 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400567endif
568foreach header : ['linux/btrfs.h',
569 'linux/memfd.h',
570 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200571 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400572 'valgrind/memcheck.h',
573 'valgrind/valgrind.h',
574 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400575
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200576 conf.set10('HAVE_' + header.underscorify().to_upper(),
577 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400578endforeach
579
580############################################################
581
582conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400583conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
584gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400585
586default_hierarchy = get_option('default-hierarchy')
587conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
588 description : 'default cgroup hierarchy as string')
589if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400590 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400591elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400592 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400593else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400594 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400595endif
596
597time_epoch = get_option('time-epoch')
598if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400599 NEWS = files('NEWS')
600 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400601endif
602time_epoch = time_epoch.to_int()
603conf.set('TIME_EPOCH', time_epoch)
604
605system_uid_max = get_option('system-uid-max')
606if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400607 system_uid_max = run_command(
608 awk,
609 'BEGIN { uid=999 } /^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
610 '/etc/login.defs').stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400611endif
612system_uid_max = system_uid_max.to_int()
613conf.set('SYSTEM_UID_MAX', system_uid_max)
614substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400615message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400616
617conf.set_quoted('NOBODY_USER_NAME', get_option('nobody-user'))
618conf.set_quoted('NOBODY_GROUP_NAME', get_option('nobody-group'))
619
620system_gid_max = get_option('system-gid-max')
621if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400622 system_gid_max = run_command(
623 awk,
624 'BEGIN { gid=999 } /^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
625 '/etc/login.defs').stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400626endif
627system_gid_max = system_gid_max.to_int()
628conf.set('SYSTEM_GID_MAX', system_gid_max)
629substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400630message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400631
632tty_gid = get_option('tty-gid')
633conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400634substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400635
Ikey Doherty84786b82017-12-03 12:28:23 +0000636# Ensure provided GID argument is numeric, otherwise fallback to default assignment
637if get_option('users-gid') != ''
638 users_gid = get_option('users-gid').to_int()
639else
640 users_gid = '-'
641endif
642substs.set('USERS_GID', users_gid)
643
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400644if get_option('adm-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400645 m4_defines += ['-DENABLE_ADM_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400646endif
647
648if get_option('wheel-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400649 m4_defines += ['-DENABLE_WHEEL_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400650endif
651
652substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700653substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400654
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400655kill_user_processes = get_option('default-kill-user-processes')
656conf.set10('KILL_USER_PROCESSES', kill_user_processes)
657substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400658
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400659dns_servers = get_option('dns-servers')
660conf.set_quoted('DNS_SERVERS', dns_servers)
661substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400662
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400663ntp_servers = get_option('ntp-servers')
664conf.set_quoted('NTP_SERVERS', ntp_servers)
665substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400666
667conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
668
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400669substs.set('SUSHELL', get_option('debug-shell'))
670substs.set('DEBUGTTY', get_option('debug-tty'))
671
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400672debug = get_option('debug')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200673enable_debug_hashmap = false
674enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400675if debug != ''
676 foreach name : debug.split(',')
677 if name == 'hashmap'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200678 enable_debug_hashmap = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400679 elif name == 'mmap-cache'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200680 enable_debug_mmap_cache = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400681 else
682 message('unknown debug option "@0@", ignoring'.format(name))
683 endif
684 endforeach
685endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200686conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
687conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400688
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400689#####################################################################
690
691threads = dependency('threads')
692librt = cc.find_library('rt')
693libm = cc.find_library('m')
694libdl = cc.find_library('dl')
695libcrypt = cc.find_library('crypt')
696
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400697libcap = dependency('libcap', required : false)
698if not libcap.found()
699 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
700 libcap = cc.find_library('cap')
701endif
702
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400703libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekd6e80962017-09-15 14:47:57 +0200704 version : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400705
706want_seccomp = get_option('seccomp')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400707if want_seccomp != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400708 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400709 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400710 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200711 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400712else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200713 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400714 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400715endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200716conf.set10('HAVE_SECCOMP', have)
717m4_defines += have ? ['-DHAVE_SECCOMP'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400718
719want_selinux = get_option('selinux')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400720if want_selinux != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400721 libselinux = dependency('libselinux',
722 version : '>= 2.1.9',
723 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200724 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400725else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200726 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400727 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400728endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200729conf.set10('HAVE_SELINUX', have)
730m4_defines += have ? ['-DHAVE_SELINUX'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400731
732want_apparmor = get_option('apparmor')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400733if want_apparmor != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400734 libapparmor = dependency('libapparmor',
735 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200736 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400737else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200738 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400739 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400740endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200741conf.set10('HAVE_APPARMOR', have)
742m4_defines += have ? ['-DHAVE_APPARMOR'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400743
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400744smack_run_label = get_option('smack-run-label')
745if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400746 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
747 m4_defines += ['-DHAVE_SMACK_RUN_LABEL']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400748endif
749
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400750want_polkit = get_option('polkit')
751install_polkit = false
752install_polkit_pkla = false
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400753if want_polkit != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400754 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400755
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400756 libpolkit = dependency('polkit-gobject-1',
757 required : false)
758 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
759 message('Old polkit detected, will install pkla files')
760 install_polkit_pkla = true
761 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400762endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200763conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400764
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400765want_acl = get_option('acl')
766if want_acl != 'false'
767 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200768 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400769else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200770 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400771 libacl = []
772endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200773conf.set10('HAVE_ACL', have)
774m4_defines += have ? ['-DHAVE_ACL'] : []
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400775
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400776want_audit = get_option('audit')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400777if want_audit != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400778 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200779 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400780else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200781 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400782 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400783endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200784conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400785
786want_blkid = get_option('blkid')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400787if want_blkid != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400788 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200789 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400790else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200791 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400792 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400793endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200794conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400795
796want_kmod = get_option('kmod')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400797if want_kmod != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400798 libkmod = dependency('libkmod',
799 version : '>= 15',
800 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200801 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400802else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200803 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400804 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400805endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200806conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400807
808want_pam = get_option('pam')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400809if want_pam != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400810 libpam = cc.find_library('pam', required : want_pam == 'true')
811 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200812 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400813else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200814 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400815 libpam = []
816 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400817endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200818conf.set10('HAVE_PAM', have)
819m4_defines += have ? ['-DHAVE_PAM'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400820
821want_microhttpd = get_option('microhttpd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400822if want_microhttpd != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400823 libmicrohttpd = dependency('libmicrohttpd',
824 version : '>= 0.9.33',
825 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200826 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400827else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200828 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400829 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400830endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200831conf.set10('HAVE_MICROHTTPD', have)
832m4_defines += have ? ['-DHAVE_MICROHTTPD'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400833
834want_libcryptsetup = get_option('libcryptsetup')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400835if want_libcryptsetup != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400836 libcryptsetup = dependency('libcryptsetup',
837 version : '>= 1.6.0',
838 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200839 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400840else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200841 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400842 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400843endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200844conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400845
846want_libcurl = get_option('libcurl')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400847if want_libcurl != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400848 libcurl = dependency('libcurl',
849 version : '>= 7.32.0',
850 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200851 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400852else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200853 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400854 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400855endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200856conf.set10('HAVE_LIBCURL', have)
857m4_defines += have ? ['-DHAVE_LIBCURL'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400858
859want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400860want_libidn2 = get_option('libidn2')
861if want_libidn == 'true' and want_libidn2 == 'true'
862 error('libidn and libidn2 cannot be requested simultaneously')
863endif
864
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400865if want_libidn != 'false' and want_libidn2 != 'true'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400866 libidn = dependency('libidn',
867 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200868 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400869else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200870 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400871 libidn = []
872endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200873conf.set10('HAVE_LIBIDN', have)
874m4_defines += have ? ['-DHAVE_LIBIDN'] : []
875if not have and want_libidn2 != 'false'
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400876 # libidn is used for both libidn and libidn2 objects
877 libidn = dependency('libidn2',
878 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200879 have = libidn.found()
880else
881 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400882endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200883conf.set10('HAVE_LIBIDN2', have)
884m4_defines += have ? ['-DHAVE_LIBIDN2'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400885
886want_libiptc = get_option('libiptc')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400887if want_libiptc != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400888 libiptc = dependency('libiptc',
889 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200890 have = libiptc.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 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400894endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200895conf.set10('HAVE_LIBIPTC', have)
896m4_defines += have ? ['-DHAVE_LIBIPTC'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400897
898want_qrencode = get_option('qrencode')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400899if want_qrencode != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400900 libqrencode = dependency('libqrencode',
901 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200902 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400903else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200904 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400905 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400906endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200907conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400908
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400909want_gcrypt = get_option('gcrypt')
910if want_gcrypt != 'false'
911 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
912 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200913 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400914else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200915 have = false
916endif
917if not have
918 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400919 libgcrypt = []
920 libgpg_error = []
921endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200922conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400923
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400924want_gnutls = get_option('gnutls')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400925if want_gnutls != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400926 libgnutls = dependency('gnutls',
927 version : '>= 3.1.4',
928 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200929 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400930else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200931 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400932 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400933endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200934conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400935
936want_elfutils = get_option('elfutils')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400937if want_elfutils != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400938 libdw = dependency('libdw',
939 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200940 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400941else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200942 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400943 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400944endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200945conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400946
947want_zlib = get_option('zlib')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400948if want_zlib != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400949 libz = dependency('zlib',
950 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200951 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400952else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200953 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400954 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400955endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200956conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400957
958want_bzip2 = get_option('bzip2')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400959if want_bzip2 != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400960 libbzip2 = cc.find_library('bz2',
961 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200962 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400963else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200964 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400965 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400966endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200967conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400968
969want_xz = get_option('xz')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400970if want_xz != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400971 libxz = dependency('liblzma',
972 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200973 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400974else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200975 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400976 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400977endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200978conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400979
980want_lz4 = get_option('lz4')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400981if want_lz4 != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400982 liblz4 = dependency('liblz4',
983 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200984 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400985else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200986 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400987 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400988endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200989conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400990
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400991want_xkbcommon = get_option('xkbcommon')
992if want_xkbcommon != 'false'
993 libxkbcommon = dependency('xkbcommon',
994 version : '>= 0.3.0',
995 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200996 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400997else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200998 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400999 libxkbcommon = []
1000endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001001conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001002
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001003want_glib = get_option('glib')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001004if want_glib != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001005 libglib = dependency('glib-2.0',
1006 version : '>= 2.22.0',
1007 required : want_glib == 'true')
1008 libgobject = dependency('gobject-2.0',
1009 version : '>= 2.22.0',
1010 required : want_glib == 'true')
1011 libgio = dependency('gio-2.0',
1012 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001013 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001014else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001015 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001016 libglib = []
1017 libgobject = []
1018 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001019endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001020conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001021
1022want_dbus = get_option('dbus')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001023if want_dbus != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001024 libdbus = dependency('dbus-1',
1025 version : '>= 1.3.2',
1026 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001027 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001028else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001029 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001030 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001031endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001032conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001033
Yu Watanabe42303dc2017-06-18 05:22:32 +09001034default_dnssec = get_option('default-dnssec')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001035if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001036 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1037 default_dnssec = 'no'
1038endif
1039conf.set('DEFAULT_DNSSEC_MODE',
1040 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1041substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1042
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001043want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001044if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001045 have = (conf.get('HAVE_LIBCURL') == 1 and
1046 conf.get('HAVE_ZLIB') == 1 and
1047 conf.get('HAVE_BZIP2') == 1 and
1048 conf.get('HAVE_XZ') == 1 and
1049 conf.get('HAVE_GCRYPT') == 1)
1050 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001051 error('importd support was requested, but dependencies are not available')
1052 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001053else
1054 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001055endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001056conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001057
1058want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001059if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001060 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1061 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001062 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1063 # it's possible to build one without the other. Complain only if
1064 # support was explictly requested. The auxiliary files like sysusers
1065 # config should be installed when any of the programs are built.
1066 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1067 error('remote support was requested, but dependencies are not available')
1068 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001069 have = have_deps[0] or have_deps[1]
1070else
1071 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001072endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001073conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001074
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001075foreach term : ['utmp',
1076 'hibernate',
1077 'environment-d',
1078 'binfmt',
1079 'coredump',
1080 'resolve',
1081 'logind',
1082 'hostnamed',
1083 'localed',
1084 'machined',
1085 'networkd',
1086 'timedated',
1087 'timesyncd',
1088 'myhostname',
1089 'firstboot',
1090 'randomseed',
1091 'backlight',
1092 'vconsole',
1093 'quotacheck',
1094 'sysusers',
1095 'tmpfiles',
1096 'hwdb',
1097 'rfkill',
1098 'ldconfig',
1099 'efi',
1100 'tpm',
1101 'ima',
1102 'smack',
1103 'gshadow',
1104 'idn',
1105 'nss-systemd']
1106 have = get_option(term)
1107 name = 'ENABLE_' + term.underscorify().to_upper()
1108 conf.set10(name, have)
1109 m4_defines += have ? ['-D' + name] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001110endforeach
1111
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001112want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001113install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001114tests = []
1115
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001116conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', get_option('slow-tests'))
1117
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001118#####################################################################
1119
1120if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001121 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001122
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001123 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001124 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001125 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001126 elif efi_arch == 'x86_64'
1127 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001128 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001129 elif efi_arch == 'arm'
1130 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001131 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001132 elif efi_arch == 'aarch64'
1133 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001134 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001135 else
1136 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001137 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001138 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001139
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001140 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001141 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001142
1143 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001144else
1145 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001146endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001147conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001148
1149#####################################################################
1150
1151config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001152 output : 'config.h',
1153 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001154
1155includes = include_directories('src/basic',
1156 'src/shared',
1157 'src/systemd',
1158 'src/journal',
1159 'src/resolve',
1160 'src/timesync',
1161 'src/login',
1162 'src/udev',
1163 'src/libudev',
1164 'src/core',
1165 'src/libsystemd/sd-bus',
1166 'src/libsystemd/sd-device',
1167 'src/libsystemd/sd-hwdb',
1168 'src/libsystemd/sd-id128',
1169 'src/libsystemd/sd-netlink',
1170 'src/libsystemd/sd-network',
1171 'src/libsystemd-network',
Davide Cavalca5e1771a2017-08-30 08:34:44 -07001172 '.',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001173 )
1174
1175add_project_arguments('-include', 'config.h', language : 'c')
1176
1177gcrypt_util_sources = files('src/shared/gcrypt-util.h',
1178 'src/shared/gcrypt-util.c')
1179
1180subdir('po')
1181subdir('catalog')
1182subdir('src/systemd')
1183subdir('src/basic')
1184subdir('src/libsystemd')
1185subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001186subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001187subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001188
1189libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001190 'journal-core',
1191 libjournal_core_sources,
1192 journald_gperf_c,
1193 include_directories : includes,
1194 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001195
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001196libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001197libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001198 'systemd',
1199 libsystemd_internal_sources,
1200 journal_internal_sources,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001201 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001202 include_directories : includes,
1203 link_args : ['-shared',
1204 '-Wl,--version-script=' + libsystemd_sym_path],
1205 link_with : [libbasic],
1206 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001207 libgcrypt,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001208 librt,
1209 libxz,
1210 liblz4],
1211 link_depends : libsystemd_sym,
1212 install : true,
1213 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001214
1215############################################################
1216
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001217# binaries that have --help and are intended for use by humans,
1218# usually, but not always, installed in /bin.
1219public_programs = []
1220
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001221subdir('src/libudev')
1222subdir('src/shared')
1223subdir('src/core')
1224subdir('src/udev')
1225subdir('src/network')
1226
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001227subdir('src/analyze')
1228subdir('src/journal-remote')
1229subdir('src/coredump')
1230subdir('src/hostname')
1231subdir('src/import')
1232subdir('src/kernel-install')
1233subdir('src/locale')
1234subdir('src/machine')
1235subdir('src/nspawn')
1236subdir('src/resolve')
1237subdir('src/timedate')
1238subdir('src/timesync')
1239subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmek4e4ab1c2017-04-10 12:37:52 -04001240subdir('src/sulogin-shell')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001241subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001242
1243subdir('src/test')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001244subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001245subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001246
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001247############################################################
1248
1249# only static linking apart from libdl, to make sure that the
1250# module is linked to all libraries that it uses.
1251test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001252 'test-dlopen',
1253 test_dlopen_c,
1254 include_directories : includes,
1255 link_with : [libbasic],
1256 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001257
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001258foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001259 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001260 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001261 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001262
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001263 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001264 if condition
1265 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001266
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001267 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1268 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001269
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001270 nss = shared_library(
1271 'nss_' + module,
1272 'src/nss-@0@/nss-@0@.c'.format(module),
1273 version : '2',
1274 include_directories : includes,
1275 link_args : ['-shared',
1276 '-Wl,--version-script=' + version_script_arg,
1277 '-Wl,--undefined'],
1278 link_with : [libsystemd_internal,
1279 libbasic],
1280 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001281 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001282 link_depends : sym,
1283 install : true,
1284 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001285
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001286 # We cannot use shared_module because it does not support version suffix.
1287 # Unfortunately shared_library insists on creating the symlink…
1288 meson.add_install_script('sh', '-c',
1289 'rm $DESTDIR@0@/libnss_@1@.so'
1290 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001291
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001292 test('dlopen-nss_' + module,
1293 test_dlopen,
1294 args : [nss.full_path()]) # path to dlopen must include a slash
1295 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001296endforeach
1297
1298############################################################
1299
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001300executable('systemd',
1301 systemd_sources,
1302 include_directories : includes,
1303 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001304 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001305 dependencies : [threads,
1306 librt,
1307 libseccomp,
1308 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001309 libmount,
1310 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001311 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001312 install : true,
1313 install_dir : rootlibexecdir)
1314
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001315exe = executable('systemd-analyze',
1316 systemd_analyze_sources,
1317 include_directories : includes,
1318 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001319 libshared],
1320 dependencies : [threads,
1321 librt,
1322 libseccomp,
1323 libselinux,
1324 libmount,
1325 libblkid],
1326 install_rpath : rootlibexecdir,
1327 install : true)
1328public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001329
1330executable('systemd-journald',
1331 systemd_journald_sources,
1332 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001333 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001334 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001335 dependencies : [threads,
1336 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001337 liblz4,
1338 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001339 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001340 install : true,
1341 install_dir : rootlibexecdir)
1342
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001343exe = executable('systemd-cat',
1344 systemd_cat_sources,
1345 include_directories : includes,
1346 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001347 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001348 dependencies : [threads],
1349 install_rpath : rootlibexecdir,
1350 install : true)
1351public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001352
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001353exe = executable('journalctl',
1354 journalctl_sources,
1355 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001356 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001357 dependencies : [threads,
1358 libqrencode,
1359 libxz,
1360 liblz4],
1361 install_rpath : rootlibexecdir,
1362 install : true,
1363 install_dir : rootbindir)
1364public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001365
1366executable('systemd-getty-generator',
1367 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001368 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001369 link_with : [libshared],
1370 install_rpath : rootlibexecdir,
1371 install : true,
1372 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001373
1374executable('systemd-debug-generator',
1375 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001376 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001377 link_with : [libshared],
1378 install_rpath : rootlibexecdir,
1379 install : true,
1380 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001381
1382executable('systemd-fstab-generator',
1383 'src/fstab-generator/fstab-generator.c',
1384 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001385 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001386 link_with : [libshared],
1387 install_rpath : rootlibexecdir,
1388 install : true,
1389 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001390
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001391if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001392 executable('30-systemd-environment-d-generator',
1393 'src/environment-d-generator/environment-d-generator.c',
1394 include_directories : includes,
1395 link_with : [libshared],
1396 install_rpath : rootlibexecdir,
1397 install : true,
1398 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001399
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001400 meson.add_install_script(meson_make_symlink,
1401 join_paths(sysconfdir, 'environment'),
1402 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001403endif
1404
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001405if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001406 executable('systemd-hibernate-resume-generator',
1407 'src/hibernate-resume/hibernate-resume-generator.c',
1408 include_directories : includes,
1409 link_with : [libshared],
1410 install_rpath : rootlibexecdir,
1411 install : true,
1412 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001413
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001414 executable('systemd-hibernate-resume',
1415 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001416 include_directories : includes,
1417 link_with : [libshared],
1418 install_rpath : rootlibexecdir,
1419 install : true,
1420 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001421endif
1422
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001423if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001424 executable('systemd-gpt-auto-generator',
1425 'src/gpt-auto-generator/gpt-auto-generator.c',
1426 'src/basic/blkid-util.h',
1427 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001428 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001429 dependencies : libblkid,
1430 install_rpath : rootlibexecdir,
1431 install : true,
1432 install_dir : systemgeneratordir)
1433
1434 exe = executable('systemd-dissect',
1435 'src/dissect/dissect.c',
1436 include_directories : includes,
1437 link_with : [libshared],
1438 install_rpath : rootlibexecdir,
1439 install : true,
1440 install_dir : rootlibexecdir)
1441 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001442endif
1443
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001444if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001445 executable('systemd-resolved',
1446 systemd_resolved_sources,
Michael Biebl76c87412017-04-21 23:45:54 +02001447 gcrypt_util_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001448 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001449 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001450 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001451 libgcrypt,
1452 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001453 libm,
1454 libidn],
1455 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001456 install : true,
1457 install_dir : rootlibexecdir)
1458
1459 exe = executable('systemd-resolve',
1460 systemd_resolve_sources,
Michael Biebl76c87412017-04-21 23:45:54 +02001461 gcrypt_util_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001462 include_directories : includes,
1463 link_with : [libshared],
1464 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001465 libgcrypt,
1466 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001467 libm,
1468 libidn],
1469 install_rpath : rootlibexecdir,
1470 install : true)
1471 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001472endif
1473
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001474if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001475 executable('systemd-logind',
1476 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001477 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001478 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001479 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001480 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001481 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001482 install_rpath : rootlibexecdir,
1483 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001484 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001485
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001486 exe = executable('loginctl',
1487 loginctl_sources,
1488 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001489 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001490 dependencies : [threads,
1491 liblz4,
1492 libxz],
1493 install_rpath : rootlibexecdir,
1494 install : true,
1495 install_dir : rootbindir)
1496 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001497
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001498 exe = executable('systemd-inhibit',
1499 'src/login/inhibit.c',
1500 include_directories : includes,
1501 link_with : [libshared],
1502 install_rpath : rootlibexecdir,
1503 install : true,
1504 install_dir : rootbindir)
1505 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001506
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001507 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001508 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1509 pam_systemd = shared_library(
1510 'pam_systemd',
1511 pam_systemd_c,
1512 name_prefix : '',
1513 include_directories : includes,
1514 link_args : ['-shared',
1515 '-Wl,--version-script=' + version_script_arg],
1516 link_with : [libsystemd_internal,
1517 libshared_static],
1518 dependencies : [threads,
1519 libpam,
1520 libpam_misc],
1521 link_depends : pam_systemd_sym,
1522 install : true,
1523 install_dir : pamlibdir)
1524
1525 test('dlopen-pam_systemd',
1526 test_dlopen,
1527 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1528 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001529endif
1530
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001531if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001532 executable('systemd-user-sessions',
1533 'src/user-sessions/user-sessions.c',
1534 include_directories : includes,
1535 link_with : [libshared],
1536 install_rpath : rootlibexecdir,
1537 install : true,
1538 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001539endif
1540
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001541if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001542 exe = executable('bootctl',
1543 'src/boot/bootctl.c',
1544 include_directories : includes,
1545 link_with : [libshared],
1546 dependencies : [libblkid],
1547 install_rpath : rootlibexecdir,
1548 install : true)
1549 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001550endif
1551
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001552exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1553 include_directories : includes,
1554 link_with : [libshared],
1555 dependencies : [threads],
1556 install_rpath : rootlibexecdir,
1557 install : true)
1558public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001559
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001560exe = executable('systemctl', 'src/systemctl/systemctl.c',
1561 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001562 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001563 dependencies : [threads,
1564 libcap,
1565 libselinux,
1566 libxz,
1567 liblz4],
1568 install_rpath : rootlibexecdir,
1569 install : true,
1570 install_dir : rootbindir)
1571public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001572
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001573if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001574 executable('systemd-backlight',
1575 'src/backlight/backlight.c',
1576 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001577 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001578 install_rpath : rootlibexecdir,
1579 install : true,
1580 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001581endif
1582
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001583if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001584 executable('systemd-rfkill',
1585 'src/rfkill/rfkill.c',
1586 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001587 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001588 install_rpath : rootlibexecdir,
1589 install : true,
1590 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001591endif
1592
1593executable('systemd-system-update-generator',
1594 'src/system-update-generator/system-update-generator.c',
1595 include_directories : includes,
1596 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001597 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001598 install : true,
1599 install_dir : systemgeneratordir)
1600
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001601if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001602 executable('systemd-cryptsetup',
1603 'src/cryptsetup/cryptsetup.c',
1604 include_directories : includes,
1605 link_with : [libshared],
1606 dependencies : [libcryptsetup],
1607 install_rpath : rootlibexecdir,
1608 install : true,
1609 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001610
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001611 executable('systemd-cryptsetup-generator',
1612 'src/cryptsetup/cryptsetup-generator.c',
1613 include_directories : includes,
1614 link_with : [libshared],
1615 dependencies : [libcryptsetup],
1616 install_rpath : rootlibexecdir,
1617 install : true,
1618 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001619
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001620 executable('systemd-veritysetup',
1621 'src/veritysetup/veritysetup.c',
1622 include_directories : includes,
1623 link_with : [libshared],
1624 dependencies : [libcryptsetup],
1625 install_rpath : rootlibexecdir,
1626 install : true,
1627 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001628
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001629 executable('systemd-veritysetup-generator',
1630 'src/veritysetup/veritysetup-generator.c',
1631 include_directories : includes,
1632 link_with : [libshared],
1633 dependencies : [libcryptsetup],
1634 install_rpath : rootlibexecdir,
1635 install : true,
1636 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001637endif
1638
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001639if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001640 executable('systemd-sysv-generator',
1641 'src/sysv-generator/sysv-generator.c',
1642 include_directories : includes,
1643 link_with : [libshared],
1644 install_rpath : rootlibexecdir,
1645 install : true,
1646 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001647
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001648 executable('systemd-rc-local-generator',
1649 'src/rc-local-generator/rc-local-generator.c',
1650 include_directories : includes,
1651 link_with : [libshared],
1652 install_rpath : rootlibexecdir,
1653 install : true,
1654 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001655endif
1656
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001657if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001658 executable('systemd-hostnamed',
1659 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001660 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001661 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001662 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001663 install : true,
1664 install_dir : rootlibexecdir)
1665
1666 exe = executable('hostnamectl',
1667 'src/hostname/hostnamectl.c',
1668 include_directories : includes,
1669 link_with : [libshared],
1670 install_rpath : rootlibexecdir,
1671 install : true)
1672 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001673endif
1674
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001675if conf.get('ENABLE_LOCALED') == 1
1676 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001677 # logind will load libxkbcommon.so dynamically on its own
1678 deps = [libdl]
1679 else
1680 deps = []
1681 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001682
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001683 executable('systemd-localed',
1684 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001685 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001686 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001687 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001688 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001689 install : true,
1690 install_dir : rootlibexecdir)
1691
1692 exe = executable('localectl',
1693 localectl_sources,
1694 include_directories : includes,
1695 link_with : [libshared],
1696 install_rpath : rootlibexecdir,
1697 install : true)
1698 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001699endif
1700
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001701if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001702 executable('systemd-timedated',
1703 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001704 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001705 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001706 install_rpath : rootlibexecdir,
1707 install : true,
1708 install_dir : rootlibexecdir)
1709
1710 exe = executable('timedatectl',
1711 'src/timedate/timedatectl.c',
1712 include_directories : includes,
1713 install_rpath : rootlibexecdir,
1714 link_with : [libshared],
1715 install : true)
1716 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001717endif
1718
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001719if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001720 executable('systemd-timesyncd',
1721 systemd_timesyncd_sources,
1722 include_directories : includes,
1723 link_with : [libshared],
1724 dependencies : [threads,
1725 libm],
1726 install_rpath : rootlibexecdir,
1727 install : true,
1728 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001729endif
1730
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001731if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001732 executable('systemd-machined',
1733 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001734 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001735 link_with : [libmachine_core,
1736 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001737 install_rpath : rootlibexecdir,
1738 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001739 install_dir : rootlibexecdir)
1740
1741 exe = executable('machinectl',
1742 'src/machine/machinectl.c',
1743 include_directories : includes,
1744 link_with : [libshared],
1745 dependencies : [threads,
1746 libxz,
1747 liblz4],
1748 install_rpath : rootlibexecdir,
1749 install : true,
1750 install_dir : rootbindir)
1751 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001752endif
1753
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001754if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001755 executable('systemd-importd',
1756 systemd_importd_sources,
1757 include_directories : includes,
1758 link_with : [libshared],
1759 dependencies : [threads],
1760 install_rpath : rootlibexecdir,
1761 install : true,
1762 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001763
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001764 systemd_pull = executable('systemd-pull',
1765 systemd_pull_sources,
1766 include_directories : includes,
1767 link_with : [libshared],
1768 dependencies : [libcurl,
1769 libz,
1770 libbzip2,
1771 libxz,
1772 libgcrypt],
1773 install_rpath : rootlibexecdir,
1774 install : true,
1775 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001776
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001777 systemd_import = executable('systemd-import',
1778 systemd_import_sources,
1779 include_directories : includes,
1780 link_with : [libshared],
1781 dependencies : [libcurl,
1782 libz,
1783 libbzip2,
1784 libxz],
1785 install_rpath : rootlibexecdir,
1786 install : true,
1787 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001788
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001789 systemd_export = executable('systemd-export',
1790 systemd_export_sources,
1791 include_directories : includes,
1792 link_with : [libshared],
1793 dependencies : [libcurl,
1794 libz,
1795 libbzip2,
1796 libxz],
1797 install_rpath : rootlibexecdir,
1798 install : true,
1799 install_dir : rootlibexecdir)
1800 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001801endif
1802
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001803if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001804 exe = executable('systemd-journal-upload',
1805 systemd_journal_upload_sources,
1806 include_directories : includes,
1807 link_with : [libshared],
1808 dependencies : [threads,
1809 libcurl,
1810 libgnutls,
1811 libxz,
1812 liblz4],
1813 install_rpath : rootlibexecdir,
1814 install : true,
1815 install_dir : rootlibexecdir)
1816 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001817endif
1818
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001819if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001820 s_j_remote = executable('systemd-journal-remote',
1821 systemd_journal_remote_sources,
1822 include_directories : includes,
1823 link_with : [libshared],
1824 dependencies : [threads,
1825 libmicrohttpd,
1826 libgnutls,
1827 libxz,
1828 liblz4],
1829 install_rpath : rootlibexecdir,
1830 install : true,
1831 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001832
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001833 s_j_gatewayd = executable('systemd-journal-gatewayd',
1834 systemd_journal_gatewayd_sources,
1835 include_directories : includes,
1836 link_with : [libshared],
1837 dependencies : [threads,
1838 libmicrohttpd,
1839 libgnutls,
1840 libxz,
1841 liblz4],
1842 install_rpath : rootlibexecdir,
1843 install : true,
1844 install_dir : rootlibexecdir)
1845 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001846endif
1847
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001848if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001849 executable('systemd-coredump',
1850 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001851 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001852 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001853 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001854 libacl,
1855 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001856 libxz,
1857 liblz4],
1858 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001859 install : true,
1860 install_dir : rootlibexecdir)
1861
1862 exe = executable('coredumpctl',
1863 coredumpctl_sources,
1864 include_directories : includes,
1865 link_with : [libshared],
1866 dependencies : [threads,
1867 libxz,
1868 liblz4],
1869 install_rpath : rootlibexecdir,
1870 install : true)
1871 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001872endif
1873
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001874if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001875 exe = executable('systemd-binfmt',
1876 'src/binfmt/binfmt.c',
1877 include_directories : includes,
1878 link_with : [libshared],
1879 install_rpath : rootlibexecdir,
1880 install : true,
1881 install_dir : rootlibexecdir)
1882 public_programs += [exe]
1883
1884 meson.add_install_script('sh', '-c',
1885 mkdir_p.format(binfmtdir))
1886 meson.add_install_script('sh', '-c',
1887 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
1888endif
1889
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001890if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001891 executable('systemd-vconsole-setup',
1892 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001893 include_directories : includes,
1894 link_with : [libshared],
1895 install_rpath : rootlibexecdir,
1896 install : true,
1897 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001898endif
1899
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001900if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001901 executable('systemd-random-seed',
1902 'src/random-seed/random-seed.c',
1903 include_directories : includes,
1904 link_with : [libshared],
1905 install_rpath : rootlibexecdir,
1906 install : true,
1907 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001908endif
1909
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001910if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001911 executable('systemd-firstboot',
1912 'src/firstboot/firstboot.c',
1913 include_directories : includes,
1914 link_with : [libshared],
1915 dependencies : [libcrypt],
1916 install_rpath : rootlibexecdir,
1917 install : true,
1918 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001919endif
1920
1921executable('systemd-remount-fs',
1922 'src/remount-fs/remount-fs.c',
1923 'src/core/mount-setup.c',
1924 'src/core/mount-setup.h',
1925 include_directories : includes,
1926 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001927 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001928 install : true,
1929 install_dir : rootlibexecdir)
1930
1931executable('systemd-machine-id-setup',
1932 'src/machine-id-setup/machine-id-setup-main.c',
1933 'src/core/machine-id-setup.c',
1934 'src/core/machine-id-setup.h',
1935 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001936 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001937 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001938 install : true,
1939 install_dir : rootbindir)
1940
1941executable('systemd-fsck',
1942 'src/fsck/fsck.c',
1943 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001944 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001945 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001946 install : true,
1947 install_dir : rootlibexecdir)
1948
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02001949executable('systemd-growfs',
1950 'src/partition/growfs.c',
1951 include_directories : includes,
1952 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01001953 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02001954 install_rpath : rootlibexecdir,
1955 install : true,
1956 install_dir : rootlibexecdir)
1957
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01001958executable('systemd-makefs',
1959 'src/partition/makefs.c',
1960 include_directories : includes,
1961 link_with : [libshared],
1962 install_rpath : rootlibexecdir,
1963 install : true,
1964 install_dir : rootlibexecdir)
1965
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001966executable('systemd-sleep',
1967 'src/sleep/sleep.c',
1968 include_directories : includes,
1969 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001970 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001971 install : true,
1972 install_dir : rootlibexecdir)
1973
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001974exe = executable('systemd-sysctl',
1975 'src/sysctl/sysctl.c',
1976 include_directories : includes,
1977 link_with : [libshared],
1978 install_rpath : rootlibexecdir,
1979 install : true,
1980 install_dir : rootlibexecdir)
1981public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001982
1983executable('systemd-ac-power',
1984 'src/ac-power/ac-power.c',
1985 include_directories : includes,
1986 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001987 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001988 install : true,
1989 install_dir : rootlibexecdir)
1990
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001991exe = executable('systemd-detect-virt',
1992 'src/detect-virt/detect-virt.c',
1993 include_directories : includes,
1994 link_with : [libshared],
1995 install_rpath : rootlibexecdir,
1996 install : true)
1997public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001998
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001999exe = executable('systemd-delta',
2000 'src/delta/delta.c',
2001 include_directories : includes,
2002 link_with : [libshared],
2003 install_rpath : rootlibexecdir,
2004 install : true)
2005public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002006
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002007exe = executable('systemd-escape',
2008 'src/escape/escape.c',
2009 include_directories : includes,
2010 link_with : [libshared],
2011 install_rpath : rootlibexecdir,
2012 install : true,
2013 install_dir : rootbindir)
2014public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002015
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002016exe = executable('systemd-notify',
2017 'src/notify/notify.c',
2018 include_directories : includes,
2019 link_with : [libshared],
2020 install_rpath : rootlibexecdir,
2021 install : true,
2022 install_dir : rootbindir)
2023public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002024
2025executable('systemd-volatile-root',
2026 'src/volatile-root/volatile-root.c',
2027 include_directories : includes,
2028 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002029 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002030 install : true,
2031 install_dir : rootlibexecdir)
2032
2033executable('systemd-cgroups-agent',
2034 'src/cgroups-agent/cgroups-agent.c',
2035 include_directories : includes,
2036 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002037 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002038 install : true,
2039 install_dir : rootlibexecdir)
2040
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002041exe = executable('systemd-path',
2042 'src/path/path.c',
2043 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002044 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002045 install_rpath : rootlibexecdir,
2046 install : true)
2047public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002048
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002049exe = executable('systemd-ask-password',
2050 'src/ask-password/ask-password.c',
2051 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002052 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002053 install_rpath : rootlibexecdir,
2054 install : true,
2055 install_dir : rootbindir)
2056public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002057
2058executable('systemd-reply-password',
2059 'src/reply-password/reply-password.c',
2060 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002061 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002062 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002063 install : true,
2064 install_dir : rootlibexecdir)
2065
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002066exe = executable('systemd-tty-ask-password-agent',
2067 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2068 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002069 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002070 install_rpath : rootlibexecdir,
2071 install : true,
2072 install_dir : rootbindir)
2073public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002074
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002075exe = executable('systemd-cgls',
2076 'src/cgls/cgls.c',
2077 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002078 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002079 install_rpath : rootlibexecdir,
2080 install : true)
2081public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002082
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002083exe = executable('systemd-cgtop',
2084 'src/cgtop/cgtop.c',
2085 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002086 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002087 install_rpath : rootlibexecdir,
2088 install : true)
2089public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002090
2091executable('systemd-initctl',
2092 'src/initctl/initctl.c',
2093 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002094 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002095 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002096 install : true,
2097 install_dir : rootlibexecdir)
2098
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002099exe = executable('systemd-mount',
2100 'src/mount/mount-tool.c',
2101 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002102 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002103 install_rpath : rootlibexecdir,
2104 install : true)
2105public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002106
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002107meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002108 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002109
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002110exe = executable('systemd-run',
2111 'src/run/run.c',
2112 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002113 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002114 install_rpath : rootlibexecdir,
2115 install : true)
2116public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002117
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002118exe = executable('systemd-stdio-bridge',
2119 'src/stdio-bridge/stdio-bridge.c',
2120 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002121 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002122 install_rpath : rootlibexecdir,
2123 install : true)
2124public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002125
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002126exe = executable('busctl',
2127 'src/busctl/busctl.c',
2128 'src/busctl/busctl-introspect.c',
2129 'src/busctl/busctl-introspect.h',
2130 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002131 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002132 install_rpath : rootlibexecdir,
2133 install : true)
2134public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002135
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002136if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002137 exe = executable('systemd-sysusers',
2138 'src/sysusers/sysusers.c',
2139 include_directories : includes,
2140 link_with : [libshared],
2141 install_rpath : rootlibexecdir,
2142 install : true,
2143 install_dir : rootbindir)
2144 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002145endif
2146
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002147if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002148 exe = executable('systemd-tmpfiles',
2149 'src/tmpfiles/tmpfiles.c',
2150 include_directories : includes,
2151 link_with : [libshared],
2152 dependencies : [libacl],
2153 install_rpath : rootlibexecdir,
2154 install : true,
2155 install_dir : rootbindir)
2156 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002157endif
2158
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002159if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002160 exe = executable('systemd-hwdb',
2161 'src/hwdb/hwdb.c',
2162 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2163 include_directories : includes,
Michael Biebl0da6f392017-04-21 18:32:14 +02002164 link_with : [libudev_internal],
2165 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002166 install : true,
2167 install_dir : rootbindir)
2168 public_programs += [exe]
2169endif
2170
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002171if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002172 executable('systemd-quotacheck',
2173 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002174 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002175 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002176 install_rpath : rootlibexecdir,
2177 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002178 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002179endif
2180
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002181exe = executable('systemd-socket-proxyd',
2182 'src/socket-proxy/socket-proxyd.c',
2183 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002184 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002185 dependencies : [threads],
2186 install_rpath : rootlibexecdir,
2187 install : true,
2188 install_dir : rootlibexecdir)
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-udevd',
2192 systemd_udevd_sources,
2193 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002194 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002195 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002196 libsystemd_network,
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002197 libudev_internal],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002198 dependencies : [threads,
2199 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002200 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002201 libacl,
2202 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002203 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002204 install : true,
2205 install_dir : rootlibexecdir)
2206public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002207
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002208exe = executable('udevadm',
2209 udevadm_sources,
2210 include_directories : includes,
2211 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002212 libsystemd_network,
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002213 libudev_internal],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002214 dependencies : [threads,
2215 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002216 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002217 libacl,
2218 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002219 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002220 install : true,
2221 install_dir : rootbindir)
2222public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002223
2224executable('systemd-shutdown',
2225 systemd_shutdown_sources,
2226 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002227 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002228 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002229 install : true,
2230 install_dir : rootlibexecdir)
2231
2232executable('systemd-update-done',
2233 'src/update-done/update-done.c',
2234 include_directories : includes,
2235 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002236 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002237 install : true,
2238 install_dir : rootlibexecdir)
2239
2240executable('systemd-update-utmp',
2241 'src/update-utmp/update-utmp.c',
2242 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002243 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002244 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002245 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002246 install : true,
2247 install_dir : rootlibexecdir)
2248
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002249if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002250 executable('systemd-modules-load',
2251 'src/modules-load/modules-load.c',
2252 include_directories : includes,
2253 link_with : [libshared],
2254 dependencies : [libkmod],
2255 install_rpath : rootlibexecdir,
2256 install : true,
2257 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002258
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002259 meson.add_install_script('sh', '-c',
2260 mkdir_p.format(modulesloaddir))
2261 meson.add_install_script('sh', '-c',
2262 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002263endif
2264
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002265exe = executable('systemd-nspawn',
2266 systemd_nspawn_sources,
2267 'src/core/mount-setup.c', # FIXME: use a variable?
2268 'src/core/mount-setup.h',
2269 'src/core/loopback-setup.c',
2270 'src/core/loopback-setup.h',
2271 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002272 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002273 dependencies : [libacl,
2274 libblkid,
2275 libseccomp,
2276 libselinux],
2277 install_rpath : rootlibexecdir,
2278 install : true)
2279public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002280
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002281if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002282 executable('systemd-networkd',
2283 systemd_networkd_sources,
2284 include_directories : includes,
2285 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002286 libsystemd_network,
2287 libudev_internal,
2288 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002289 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002290 install_rpath : rootlibexecdir,
2291 install : true,
2292 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002293
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002294 executable('systemd-networkd-wait-online',
2295 systemd_networkd_wait_online_sources,
2296 include_directories : includes,
2297 link_with : [libnetworkd_core,
2298 libshared],
2299 install_rpath : rootlibexecdir,
2300 install : true,
2301 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002302
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002303 exe = executable('networkctl',
2304 networkctl_sources,
2305 include_directories : includes,
2306 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002307 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002308 install_rpath : rootlibexecdir,
2309 install : true,
2310 install_dir : rootbindir)
2311 public_programs += [exe]
2312endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002313############################################################
2314
2315foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002316 sources = tuple[0]
2317 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2318 dependencies = tuple[2]
2319 condition = tuple.length() >= 4 ? tuple[3] : ''
2320 type = tuple.length() >= 5 ? tuple[4] : ''
2321 defs = tuple.length() >= 6 ? tuple[5] : []
2322 incs = tuple.length() >= 7 ? tuple[6] : includes
2323 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002324
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002325 name = sources[0].split('/')[-1].split('.')[0]
2326 if type.startswith('timeout=')
2327 timeout = type.split('=')[1].to_int()
2328 type = ''
2329 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002330
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002331 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002332 exe = executable(
2333 name,
2334 sources,
2335 include_directories : incs,
2336 link_with : link_with,
2337 dependencies : dependencies,
2338 c_args : defs,
2339 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002340 install : install_tests,
2341 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002342
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002343 if type == 'manual'
2344 message('@0@ is a manual test'.format(name))
2345 elif type == 'unsafe' and want_tests != 'unsafe'
2346 message('@0@ is an unsafe test'.format(name))
2347 else
2348 test(name, exe,
2349 env : test_env,
2350 timeout : timeout)
2351 endif
2352 else
2353 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2354 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002355endforeach
2356
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002357test_libsystemd_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002358 'test-libsystemd-sym',
2359 test_libsystemd_sym_c,
2360 include_directories : includes,
2361 link_with : [libsystemd],
2362 install : install_tests,
2363 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002364test('test-libsystemd-sym',
2365 test_libsystemd_sym)
2366
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002367test_libudev_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002368 'test-libudev-sym',
2369 test_libudev_sym_c,
2370 include_directories : includes,
2371 c_args : ['-Wno-deprecated-declarations'],
2372 link_with : [libudev],
2373 install : install_tests,
2374 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002375test('test-libudev-sym',
2376 test_libudev_sym)
2377
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002378############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002379
2380make_directive_index_py = find_program('tools/make-directive-index.py')
2381make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002382xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002383hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002384
2385subdir('units')
2386subdir('sysctl.d')
2387subdir('sysusers.d')
2388subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002389subdir('hwdb')
2390subdir('network')
2391subdir('man')
2392subdir('shell-completion/bash')
2393subdir('shell-completion/zsh')
2394subdir('docs/sysvinit')
2395subdir('docs/var-log')
2396
2397# FIXME: figure out if the warning is true:
2398# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2399install_subdir('factory/etc',
2400 install_dir : factorydir)
2401
2402
2403install_data('xorg/50-systemd-user.sh',
2404 install_dir : xinitrcdir)
2405install_data('system-preset/90-systemd.preset',
2406 install_dir : systempresetdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002407install_data('modprobe.d/systemd.conf',
2408 install_dir : modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002409install_data('README',
2410 'NEWS',
2411 'CODING_STYLE',
2412 'DISTRO_PORTING',
2413 'ENVIRONMENT.md',
2414 'LICENSE.GPL2',
2415 'LICENSE.LGPL2.1',
2416 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2417 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002418
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002419meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2420meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2421
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002422############################################################
2423
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002424meson_check_help = find_program('tools/meson-check-help.sh')
2425
2426foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002427 name = exec.full_path().split('/')[-1]
2428 test('check-help-' + name,
2429 meson_check_help,
2430 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002431endforeach
2432
2433############################################################
2434
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002435if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002436 all_files = run_command(
2437 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002438 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002439 'ls-files',
2440 ':/*.[ch]'])
2441 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002442
userwithuide85a6902017-08-09 13:41:44 +00002443 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002444 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002445 output : 'tags',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002446 command : ['env', 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002447 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002448 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002449 output : 'ctags',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002450 command : ['env', 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002451endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002452
2453if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002454 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002455 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002456 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002457 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002458endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002459
2460if git.found()
2461 git_head = run_command(
2462 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002463 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002464 'rev-parse', 'HEAD']).stdout().strip()
2465 git_head_short = run_command(
2466 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002467 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002468 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2469
2470 run_target(
2471 'git-snapshot',
2472 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002473 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002474 git_head_short),
2475 '--prefix', 'systemd-@0@/'.format(git_head),
2476 'HEAD'])
2477endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002478
2479############################################################
2480
2481status = [
2482 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2483
Yu Watanabe359b4962017-11-25 20:35:24 +09002484 'prefix directory: @0@'.format(prefixdir),
2485 'rootprefix directory: @0@'.format(rootprefixdir),
2486 'sysconf directory: @0@'.format(sysconfdir),
2487 'include directory: @0@'.format(includedir),
2488 'lib directory: @0@'.format(libdir),
2489 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002490 'SysV init scripts: @0@'.format(sysvinit_path),
2491 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002492 'PAM modules directory: @0@'.format(pamlibdir),
2493 'PAM configuration directory: @0@'.format(pamconfdir),
2494 'RPM macros directory: @0@'.format(rpmmacrosdir),
2495 'modprobe.d directory: @0@'.format(modprobedir),
2496 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2497 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2498 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2499 'bash completions directory: @0@'.format(bashcompletiondir),
2500 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002501 'extra start script: @0@'.format(get_option('rc-local')),
2502 'extra stop script: @0@'.format(get_option('halt-local')),
2503 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2504 get_option('debug-tty')),
2505 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002506 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002507 'maximum system UID: @0@'.format(system_uid_max),
2508 'maximum system GID: @0@'.format(system_gid_max),
2509 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002510 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002511 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002512 'support URL: @0@'.format(support_url),
2513 'nobody user name: @0@'.format(get_option('nobody-user')),
2514 'nobody group name: @0@'.format(get_option('nobody-group')),
2515 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002516 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002517
2518 'default DNSSEC mode: @0@'.format(default_dnssec),
2519 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2520 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2521
2522alt_dns_servers = '\n '.join(dns_servers.split(' '))
2523alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2524status += [
2525 'default DNS servers: @0@'.format(alt_dns_servers),
2526 'default NTP servers: @0@'.format(alt_ntp_servers)]
2527
2528alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2529 '@@0@'.format(time_epoch)).stdout().strip()
2530status += [
2531 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2532
2533# TODO:
2534# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2535# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2536# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2537
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002538if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002539 status += [
2540 'efi arch: @0@'.format(efi_arch)]
2541
2542 if have_gnu_efi
2543 status += [
2544 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2545 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002546 'EFI lib directory: @0@'.format(efi_libdir),
2547 'EFI lds directory: @0@'.format(efi_ldsdir),
2548 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002549 endif
2550endif
2551
2552found = []
2553missing = []
2554
2555foreach tuple : [
2556 ['libcryptsetup'],
2557 ['PAM'],
2558 ['AUDIT'],
2559 ['IMA'],
2560 ['AppArmor'],
2561 ['SELinux'],
2562 ['SECCOMP'],
2563 ['SMACK'],
2564 ['zlib'],
2565 ['xz'],
2566 ['lz4'],
2567 ['bzip2'],
2568 ['ACL'],
2569 ['gcrypt'],
2570 ['qrencode'],
2571 ['microhttpd'],
2572 ['gnutls'],
2573 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002574 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002575 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002576 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002577 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002578 ['libiptc'],
2579 ['elfutils'],
2580 ['binfmt'],
2581 ['vconsole'],
2582 ['quotacheck'],
2583 ['tmpfiles'],
2584 ['environment.d'],
2585 ['sysusers'],
2586 ['firstboot'],
2587 ['randomseed'],
2588 ['backlight'],
2589 ['rfkill'],
2590 ['logind'],
2591 ['machined'],
2592 ['importd'],
2593 ['hostnamed'],
2594 ['timedated'],
2595 ['timesyncd'],
2596 ['localed'],
2597 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002598 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002599 ['coredump'],
2600 ['polkit'],
2601 ['legacy pkla', install_polkit_pkla],
2602 ['efi'],
2603 ['gnu-efi', have_gnu_efi],
2604 ['kmod'],
2605 ['xkbcommon'],
2606 ['blkid'],
2607 ['dbus'],
2608 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002609 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002610 ['hwdb'],
2611 ['tpm'],
2612 ['man pages', want_man],
2613 ['html pages', want_html],
2614 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002615 ['split /usr', conf.get('HAVE_SPLIT_USR') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002616 ['SysV compat'],
2617 ['utmp'],
2618 ['ldconfig'],
2619 ['hibernate'],
2620 ['adm group', get_option('adm-group')],
2621 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002622 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002623 ['debug hashmap'],
2624 ['debug mmap cache'],
2625]
2626
2627 cond = tuple.get(1, '')
2628 if cond == ''
2629 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2630 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002631 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002632 endif
2633 if cond
2634 found += [tuple[0]]
2635 else
2636 missing += [tuple[0]]
2637 endif
2638endforeach
2639
2640status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002641 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002642 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002643 '',
2644 'disabled features: @0@'.format(', '.join(missing)),
2645 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002646message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002647
2648if rootprefixdir != rootprefix_default
2649 message('WARNING:\n' +
2650 ' Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2651 ' systemd used fixed names for unit file directories and other paths, so anything\n' +
2652 ' except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
2653endif