blob: eda74c47657e0cf051629255895aef4f4dbc2995 [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
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400617system_gid_max = get_option('system-gid-max')
618if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400619 system_gid_max = run_command(
620 awk,
621 'BEGIN { gid=999 } /^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
622 '/etc/login.defs').stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400623endif
624system_gid_max = system_gid_max.to_int()
625conf.set('SYSTEM_GID_MAX', system_gid_max)
626substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400627message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400628
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100629dynamic_uid_min = get_option('dynamic-uid-min').to_int()
630dynamic_uid_max = get_option('dynamic-uid-max').to_int()
631conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
632conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
633substs.set('dynamicuidmin', dynamic_uid_min)
634substs.set('dynamicuidmax', dynamic_uid_max)
635
636container_uid_base_min = get_option('container-uid-base-min').to_int()
637container_uid_base_max = get_option('container-uid-base-max').to_int()
638conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
639conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
640substs.set('containeruidbasemin', container_uid_base_min)
641substs.set('containeruidbasemax', container_uid_base_max)
642
Lennart Poetteringafde4572017-12-05 11:00:24 +0100643nobody_user = get_option('nobody-user')
644nobody_group = get_option('nobody-group')
645
646getent_result = run_command('getent', 'passwd', '65534')
647if getent_result.returncode() == 0
648 name = getent_result.stdout().split(':')[0]
649 if name != nobody_user
650 message('WARNING:\n' +
651 ' The local user with the UID 65534 does not match the configured user name "@0@" of the nobody user (its name is @1@).\n'.format(nobody_user, name) +
652 ' Your build will result in an user table setup that is incompatible with the local system.')
653 endif
654endif
655id_result = run_command('id', '-u', nobody_user)
656if id_result.returncode() == 0
657 id = id_result.stdout().to_int()
658 if id != 65534
659 message('WARNING:\n' +
660 ' The local user with the configured user name "@0@" of the nobody user does not have UID 65534 (it has @1@).\n'.format(nobody_user, id) +
661 ' Your build will result in an user table setup that is incompatible with the local system.')
662 endif
663endif
664
665getent_result = run_command('getent', 'group', '65534')
666if getent_result.returncode() == 0
667 name = getent_result.stdout().split(':')[0]
668 if name != nobody_group
669 message('WARNING:\n' +
670 ' The local group with the GID 65534 does not match the configured group name "@0@" of the nobody group (its name is @1@).\n'.format(nobody_group, name) +
671 ' Your build will result in an group table setup that is incompatible with the local system.')
672 endif
673endif
674id_result = run_command('id', '-g', nobody_group)
675if id_result.returncode() == 0
676 id = id_result.stdout().to_int()
677 if id != 65534
678 message('WARNING:\n' +
679 ' The local group with the configured group name "@0@" of the nobody group does not have UID 65534 (it has @1@).\n'.format(nobody_group, id) +
680 ' Your build will result in an group table setup that is incompatible with the local system.')
681 endif
682endif
683
684conf.set_quoted('NOBODY_USER_NAME', nobody_user)
685conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100686
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400687tty_gid = get_option('tty-gid')
688conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400689substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400690
Ikey Doherty84786b82017-12-03 12:28:23 +0000691# Ensure provided GID argument is numeric, otherwise fallback to default assignment
692if get_option('users-gid') != ''
Yu Watanabed6806872017-12-05 14:01:39 +0900693 users_gid = get_option('users-gid').to_int()
Ikey Doherty84786b82017-12-03 12:28:23 +0000694else
Yu Watanabed6806872017-12-05 14:01:39 +0900695 users_gid = '-'
Ikey Doherty84786b82017-12-03 12:28:23 +0000696endif
697substs.set('USERS_GID', users_gid)
698
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400699if get_option('adm-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400700 m4_defines += ['-DENABLE_ADM_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400701endif
702
703if get_option('wheel-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400704 m4_defines += ['-DENABLE_WHEEL_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400705endif
706
707substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700708substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400709
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400710kill_user_processes = get_option('default-kill-user-processes')
711conf.set10('KILL_USER_PROCESSES', kill_user_processes)
712substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400713
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400714dns_servers = get_option('dns-servers')
715conf.set_quoted('DNS_SERVERS', dns_servers)
716substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400717
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400718ntp_servers = get_option('ntp-servers')
719conf.set_quoted('NTP_SERVERS', ntp_servers)
720substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400721
722conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
723
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400724substs.set('SUSHELL', get_option('debug-shell'))
725substs.set('DEBUGTTY', get_option('debug-tty'))
726
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400727debug = get_option('debug')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200728enable_debug_hashmap = false
729enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400730if debug != ''
731 foreach name : debug.split(',')
732 if name == 'hashmap'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200733 enable_debug_hashmap = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400734 elif name == 'mmap-cache'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200735 enable_debug_mmap_cache = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400736 else
737 message('unknown debug option "@0@", ignoring'.format(name))
738 endif
739 endforeach
740endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200741conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
742conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400743
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400744#####################################################################
745
746threads = dependency('threads')
747librt = cc.find_library('rt')
748libm = cc.find_library('m')
749libdl = cc.find_library('dl')
750libcrypt = cc.find_library('crypt')
751
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400752libcap = dependency('libcap', required : false)
753if not libcap.found()
754 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
755 libcap = cc.find_library('cap')
756endif
757
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400758libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekd6e80962017-09-15 14:47:57 +0200759 version : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400760
761want_seccomp = get_option('seccomp')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400762if want_seccomp != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400763 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400764 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400765 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200766 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400767else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200768 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400769 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400770endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200771conf.set10('HAVE_SECCOMP', have)
772m4_defines += have ? ['-DHAVE_SECCOMP'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400773
774want_selinux = get_option('selinux')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400775if want_selinux != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400776 libselinux = dependency('libselinux',
777 version : '>= 2.1.9',
778 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200779 have = libselinux.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 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400783endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200784conf.set10('HAVE_SELINUX', have)
785m4_defines += have ? ['-DHAVE_SELINUX'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400786
787want_apparmor = get_option('apparmor')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400788if want_apparmor != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400789 libapparmor = dependency('libapparmor',
790 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200791 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400792else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200793 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400794 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400795endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200796conf.set10('HAVE_APPARMOR', have)
797m4_defines += have ? ['-DHAVE_APPARMOR'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400798
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400799smack_run_label = get_option('smack-run-label')
800if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400801 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
802 m4_defines += ['-DHAVE_SMACK_RUN_LABEL']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400803endif
804
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400805want_polkit = get_option('polkit')
806install_polkit = false
807install_polkit_pkla = false
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400808if want_polkit != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400809 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400810
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400811 libpolkit = dependency('polkit-gobject-1',
812 required : false)
813 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
814 message('Old polkit detected, will install pkla files')
815 install_polkit_pkla = true
816 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400817endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200818conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400819
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400820want_acl = get_option('acl')
821if want_acl != 'false'
822 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200823 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400824else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200825 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400826 libacl = []
827endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200828conf.set10('HAVE_ACL', have)
829m4_defines += have ? ['-DHAVE_ACL'] : []
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400830
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400831want_audit = get_option('audit')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400832if want_audit != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400833 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200834 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400835else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200836 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400837 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400838endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200839conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400840
841want_blkid = get_option('blkid')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400842if want_blkid != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400843 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200844 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400845else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200846 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400847 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400848endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200849conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400850
851want_kmod = get_option('kmod')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400852if want_kmod != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400853 libkmod = dependency('libkmod',
854 version : '>= 15',
855 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200856 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400857else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200858 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400859 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400860endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200861conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400862
863want_pam = get_option('pam')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400864if want_pam != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400865 libpam = cc.find_library('pam', required : want_pam == 'true')
866 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200867 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400868else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200869 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400870 libpam = []
871 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400872endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200873conf.set10('HAVE_PAM', have)
874m4_defines += have ? ['-DHAVE_PAM'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400875
876want_microhttpd = get_option('microhttpd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400877if want_microhttpd != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400878 libmicrohttpd = dependency('libmicrohttpd',
879 version : '>= 0.9.33',
880 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200881 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400882else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200883 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400884 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400885endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200886conf.set10('HAVE_MICROHTTPD', have)
887m4_defines += have ? ['-DHAVE_MICROHTTPD'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400888
889want_libcryptsetup = get_option('libcryptsetup')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400890if want_libcryptsetup != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400891 libcryptsetup = dependency('libcryptsetup',
892 version : '>= 1.6.0',
893 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200894 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400895else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200896 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400897 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400898endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200899conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400900
901want_libcurl = get_option('libcurl')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400902if want_libcurl != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400903 libcurl = dependency('libcurl',
904 version : '>= 7.32.0',
905 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200906 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400907else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200908 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400909 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400910endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200911conf.set10('HAVE_LIBCURL', have)
912m4_defines += have ? ['-DHAVE_LIBCURL'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400913
914want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400915want_libidn2 = get_option('libidn2')
916if want_libidn == 'true' and want_libidn2 == 'true'
917 error('libidn and libidn2 cannot be requested simultaneously')
918endif
919
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400920if want_libidn != 'false' and want_libidn2 != 'true'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400921 libidn = dependency('libidn',
922 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200923 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400924else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200925 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400926 libidn = []
927endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200928conf.set10('HAVE_LIBIDN', have)
929m4_defines += have ? ['-DHAVE_LIBIDN'] : []
930if not have and want_libidn2 != 'false'
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400931 # libidn is used for both libidn and libidn2 objects
932 libidn = dependency('libidn2',
933 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200934 have = libidn.found()
935else
936 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400937endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200938conf.set10('HAVE_LIBIDN2', have)
939m4_defines += have ? ['-DHAVE_LIBIDN2'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400940
941want_libiptc = get_option('libiptc')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400942if want_libiptc != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400943 libiptc = dependency('libiptc',
944 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200945 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400946else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200947 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400948 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400949endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200950conf.set10('HAVE_LIBIPTC', have)
951m4_defines += have ? ['-DHAVE_LIBIPTC'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400952
953want_qrencode = get_option('qrencode')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400954if want_qrencode != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400955 libqrencode = dependency('libqrencode',
956 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200957 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400958else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200959 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400960 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400961endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200962conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400963
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400964want_gcrypt = get_option('gcrypt')
965if want_gcrypt != 'false'
966 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
967 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200968 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400969else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200970 have = false
971endif
972if not have
973 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400974 libgcrypt = []
975 libgpg_error = []
976endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200977conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400978
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400979want_gnutls = get_option('gnutls')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400980if want_gnutls != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400981 libgnutls = dependency('gnutls',
982 version : '>= 3.1.4',
983 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200984 have = libgnutls.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 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400988endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200989conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400990
991want_elfutils = get_option('elfutils')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400992if want_elfutils != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400993 libdw = dependency('libdw',
994 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200995 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400996else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200997 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400998 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400999endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001000conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001001
1002want_zlib = get_option('zlib')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001003if want_zlib != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001004 libz = dependency('zlib',
1005 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001006 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001007else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001008 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001009 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001010endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001011conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001012
1013want_bzip2 = get_option('bzip2')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001014if want_bzip2 != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001015 libbzip2 = cc.find_library('bz2',
1016 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001017 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001018else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001019 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001020 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001021endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001022conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001023
1024want_xz = get_option('xz')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001025if want_xz != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001026 libxz = dependency('liblzma',
1027 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001028 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001029else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001030 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001031 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001032endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001033conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001034
1035want_lz4 = get_option('lz4')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001036if want_lz4 != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001037 liblz4 = dependency('liblz4',
1038 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001039 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001040else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001041 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001042 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001043endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001044conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001045
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001046want_xkbcommon = get_option('xkbcommon')
1047if want_xkbcommon != 'false'
1048 libxkbcommon = dependency('xkbcommon',
1049 version : '>= 0.3.0',
1050 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001051 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001052else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001053 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001054 libxkbcommon = []
1055endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001056conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001057
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001058want_glib = get_option('glib')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001059if want_glib != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001060 libglib = dependency('glib-2.0',
1061 version : '>= 2.22.0',
1062 required : want_glib == 'true')
1063 libgobject = dependency('gobject-2.0',
1064 version : '>= 2.22.0',
1065 required : want_glib == 'true')
1066 libgio = dependency('gio-2.0',
1067 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001068 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001069else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001070 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001071 libglib = []
1072 libgobject = []
1073 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001074endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001075conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001076
1077want_dbus = get_option('dbus')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001078if want_dbus != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001079 libdbus = dependency('dbus-1',
1080 version : '>= 1.3.2',
1081 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001082 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001083else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001084 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001085 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001086endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001087conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001088
Yu Watanabe42303dc2017-06-18 05:22:32 +09001089default_dnssec = get_option('default-dnssec')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001090if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001091 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1092 default_dnssec = 'no'
1093endif
1094conf.set('DEFAULT_DNSSEC_MODE',
1095 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1096substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1097
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001098want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001099if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001100 have = (conf.get('HAVE_LIBCURL') == 1 and
1101 conf.get('HAVE_ZLIB') == 1 and
1102 conf.get('HAVE_BZIP2') == 1 and
1103 conf.get('HAVE_XZ') == 1 and
1104 conf.get('HAVE_GCRYPT') == 1)
1105 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001106 error('importd support was requested, but dependencies are not available')
1107 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001108else
1109 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001110endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001111conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001112
1113want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001114if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001115 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1116 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001117 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1118 # it's possible to build one without the other. Complain only if
1119 # support was explictly requested. The auxiliary files like sysusers
1120 # config should be installed when any of the programs are built.
1121 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1122 error('remote support was requested, but dependencies are not available')
1123 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001124 have = have_deps[0] or have_deps[1]
1125else
1126 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001127endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001128conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001129
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001130foreach term : ['utmp',
1131 'hibernate',
1132 'environment-d',
1133 'binfmt',
1134 'coredump',
1135 'resolve',
1136 'logind',
1137 'hostnamed',
1138 'localed',
1139 'machined',
1140 'networkd',
1141 'timedated',
1142 'timesyncd',
1143 'myhostname',
1144 'firstboot',
1145 'randomseed',
1146 'backlight',
1147 'vconsole',
1148 'quotacheck',
1149 'sysusers',
1150 'tmpfiles',
1151 'hwdb',
1152 'rfkill',
1153 'ldconfig',
1154 'efi',
1155 'tpm',
1156 'ima',
1157 'smack',
1158 'gshadow',
1159 'idn',
1160 'nss-systemd']
1161 have = get_option(term)
1162 name = 'ENABLE_' + term.underscorify().to_upper()
1163 conf.set10(name, have)
1164 m4_defines += have ? ['-D' + name] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001165endforeach
1166
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001167want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001168install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001169tests = []
1170
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001171conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', get_option('slow-tests'))
1172
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001173#####################################################################
1174
1175if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001176 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001177
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001178 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001179 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001180 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001181 elif efi_arch == 'x86_64'
1182 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001183 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001184 elif efi_arch == 'arm'
1185 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001186 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001187 elif efi_arch == 'aarch64'
1188 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001189 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001190 else
1191 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001192 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001193 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001194
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001195 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001196 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001197
1198 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001199else
1200 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001201endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001202conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001203
1204#####################################################################
1205
1206config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001207 output : 'config.h',
1208 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001209
1210includes = include_directories('src/basic',
1211 'src/shared',
1212 'src/systemd',
1213 'src/journal',
1214 'src/resolve',
1215 'src/timesync',
1216 'src/login',
1217 'src/udev',
1218 'src/libudev',
1219 'src/core',
1220 'src/libsystemd/sd-bus',
1221 'src/libsystemd/sd-device',
1222 'src/libsystemd/sd-hwdb',
1223 'src/libsystemd/sd-id128',
1224 'src/libsystemd/sd-netlink',
1225 'src/libsystemd/sd-network',
1226 'src/libsystemd-network',
Davide Cavalca5e1771a2017-08-30 08:34:44 -07001227 '.',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001228 )
1229
1230add_project_arguments('-include', 'config.h', language : 'c')
1231
1232gcrypt_util_sources = files('src/shared/gcrypt-util.h',
1233 'src/shared/gcrypt-util.c')
1234
1235subdir('po')
1236subdir('catalog')
1237subdir('src/systemd')
1238subdir('src/basic')
1239subdir('src/libsystemd')
1240subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001241subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001242subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001243
1244libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001245 'journal-core',
1246 libjournal_core_sources,
1247 journald_gperf_c,
1248 include_directories : includes,
1249 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001250
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001251libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001252libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001253 'systemd',
1254 libsystemd_internal_sources,
1255 journal_internal_sources,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001256 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001257 include_directories : includes,
1258 link_args : ['-shared',
1259 '-Wl,--version-script=' + libsystemd_sym_path],
1260 link_with : [libbasic],
1261 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001262 libgcrypt,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001263 librt,
1264 libxz,
1265 liblz4],
1266 link_depends : libsystemd_sym,
1267 install : true,
1268 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001269
1270############################################################
1271
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001272# binaries that have --help and are intended for use by humans,
1273# usually, but not always, installed in /bin.
1274public_programs = []
1275
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001276subdir('src/libudev')
1277subdir('src/shared')
1278subdir('src/core')
1279subdir('src/udev')
1280subdir('src/network')
1281
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001282subdir('src/analyze')
1283subdir('src/journal-remote')
1284subdir('src/coredump')
1285subdir('src/hostname')
1286subdir('src/import')
1287subdir('src/kernel-install')
1288subdir('src/locale')
1289subdir('src/machine')
1290subdir('src/nspawn')
1291subdir('src/resolve')
1292subdir('src/timedate')
1293subdir('src/timesync')
1294subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmek4e4ab1c2017-04-10 12:37:52 -04001295subdir('src/sulogin-shell')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001296subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001297
1298subdir('src/test')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001299subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001300subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001301
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001302############################################################
1303
1304# only static linking apart from libdl, to make sure that the
1305# module is linked to all libraries that it uses.
1306test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001307 'test-dlopen',
1308 test_dlopen_c,
1309 include_directories : includes,
1310 link_with : [libbasic],
1311 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001312
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001313foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001314 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001315 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001316 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001317
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001318 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001319 if condition
1320 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001321
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001322 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1323 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001324
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001325 nss = shared_library(
1326 'nss_' + module,
1327 'src/nss-@0@/nss-@0@.c'.format(module),
1328 version : '2',
1329 include_directories : includes,
1330 link_args : ['-shared',
1331 '-Wl,--version-script=' + version_script_arg,
1332 '-Wl,--undefined'],
1333 link_with : [libsystemd_internal,
1334 libbasic],
1335 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001336 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001337 link_depends : sym,
1338 install : true,
1339 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001340
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001341 # We cannot use shared_module because it does not support version suffix.
1342 # Unfortunately shared_library insists on creating the symlink…
1343 meson.add_install_script('sh', '-c',
1344 'rm $DESTDIR@0@/libnss_@1@.so'
1345 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001346
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001347 test('dlopen-nss_' + module,
1348 test_dlopen,
1349 args : [nss.full_path()]) # path to dlopen must include a slash
1350 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001351endforeach
1352
1353############################################################
1354
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001355executable('systemd',
1356 systemd_sources,
1357 include_directories : includes,
1358 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001359 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001360 dependencies : [threads,
1361 librt,
1362 libseccomp,
1363 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001364 libmount,
1365 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001366 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001367 install : true,
1368 install_dir : rootlibexecdir)
1369
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001370exe = executable('systemd-analyze',
1371 systemd_analyze_sources,
1372 include_directories : includes,
1373 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001374 libshared],
1375 dependencies : [threads,
1376 librt,
1377 libseccomp,
1378 libselinux,
1379 libmount,
1380 libblkid],
1381 install_rpath : rootlibexecdir,
1382 install : true)
1383public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001384
1385executable('systemd-journald',
1386 systemd_journald_sources,
1387 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001388 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001389 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001390 dependencies : [threads,
1391 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001392 liblz4,
1393 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001394 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001395 install : true,
1396 install_dir : rootlibexecdir)
1397
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001398exe = executable('systemd-cat',
1399 systemd_cat_sources,
1400 include_directories : includes,
1401 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001402 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001403 dependencies : [threads],
1404 install_rpath : rootlibexecdir,
1405 install : true)
1406public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001407
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001408exe = executable('journalctl',
1409 journalctl_sources,
1410 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001411 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001412 dependencies : [threads,
1413 libqrencode,
1414 libxz,
1415 liblz4],
1416 install_rpath : rootlibexecdir,
1417 install : true,
1418 install_dir : rootbindir)
1419public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001420
1421executable('systemd-getty-generator',
1422 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001423 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001424 link_with : [libshared],
1425 install_rpath : rootlibexecdir,
1426 install : true,
1427 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001428
1429executable('systemd-debug-generator',
1430 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001431 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001432 link_with : [libshared],
1433 install_rpath : rootlibexecdir,
1434 install : true,
1435 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001436
1437executable('systemd-fstab-generator',
1438 'src/fstab-generator/fstab-generator.c',
1439 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001440 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001441 link_with : [libshared],
1442 install_rpath : rootlibexecdir,
1443 install : true,
1444 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001445
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001446if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001447 executable('30-systemd-environment-d-generator',
1448 'src/environment-d-generator/environment-d-generator.c',
1449 include_directories : includes,
1450 link_with : [libshared],
1451 install_rpath : rootlibexecdir,
1452 install : true,
1453 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001454
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001455 meson.add_install_script(meson_make_symlink,
1456 join_paths(sysconfdir, 'environment'),
1457 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001458endif
1459
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001460if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001461 executable('systemd-hibernate-resume-generator',
1462 'src/hibernate-resume/hibernate-resume-generator.c',
1463 include_directories : includes,
1464 link_with : [libshared],
1465 install_rpath : rootlibexecdir,
1466 install : true,
1467 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001468
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001469 executable('systemd-hibernate-resume',
1470 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001471 include_directories : includes,
1472 link_with : [libshared],
1473 install_rpath : rootlibexecdir,
1474 install : true,
1475 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001476endif
1477
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001478if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001479 executable('systemd-gpt-auto-generator',
1480 'src/gpt-auto-generator/gpt-auto-generator.c',
1481 'src/basic/blkid-util.h',
1482 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001483 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001484 dependencies : libblkid,
1485 install_rpath : rootlibexecdir,
1486 install : true,
1487 install_dir : systemgeneratordir)
1488
1489 exe = executable('systemd-dissect',
1490 'src/dissect/dissect.c',
1491 include_directories : includes,
1492 link_with : [libshared],
1493 install_rpath : rootlibexecdir,
1494 install : true,
1495 install_dir : rootlibexecdir)
1496 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001497endif
1498
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001499if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001500 executable('systemd-resolved',
1501 systemd_resolved_sources,
Michael Biebl76c87412017-04-21 23:45:54 +02001502 gcrypt_util_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001503 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001504 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001505 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001506 libgcrypt,
1507 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001508 libm,
1509 libidn],
1510 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001511 install : true,
1512 install_dir : rootlibexecdir)
1513
1514 exe = executable('systemd-resolve',
1515 systemd_resolve_sources,
Michael Biebl76c87412017-04-21 23:45:54 +02001516 gcrypt_util_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001517 include_directories : includes,
1518 link_with : [libshared],
1519 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001520 libgcrypt,
1521 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001522 libm,
1523 libidn],
1524 install_rpath : rootlibexecdir,
1525 install : true)
1526 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001527endif
1528
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001529if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001530 executable('systemd-logind',
1531 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001532 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001533 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001534 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001535 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001536 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001537 install_rpath : rootlibexecdir,
1538 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001539 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001540
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001541 exe = executable('loginctl',
1542 loginctl_sources,
1543 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001544 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001545 dependencies : [threads,
1546 liblz4,
1547 libxz],
1548 install_rpath : rootlibexecdir,
1549 install : true,
1550 install_dir : rootbindir)
1551 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001552
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001553 exe = executable('systemd-inhibit',
1554 'src/login/inhibit.c',
1555 include_directories : includes,
1556 link_with : [libshared],
1557 install_rpath : rootlibexecdir,
1558 install : true,
1559 install_dir : rootbindir)
1560 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001561
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001562 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001563 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1564 pam_systemd = shared_library(
1565 'pam_systemd',
1566 pam_systemd_c,
1567 name_prefix : '',
1568 include_directories : includes,
1569 link_args : ['-shared',
1570 '-Wl,--version-script=' + version_script_arg],
1571 link_with : [libsystemd_internal,
1572 libshared_static],
1573 dependencies : [threads,
1574 libpam,
1575 libpam_misc],
1576 link_depends : pam_systemd_sym,
1577 install : true,
1578 install_dir : pamlibdir)
1579
1580 test('dlopen-pam_systemd',
1581 test_dlopen,
1582 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1583 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001584endif
1585
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001586if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001587 executable('systemd-user-sessions',
1588 'src/user-sessions/user-sessions.c',
1589 include_directories : includes,
1590 link_with : [libshared],
1591 install_rpath : rootlibexecdir,
1592 install : true,
1593 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001594endif
1595
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001596if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001597 exe = executable('bootctl',
1598 'src/boot/bootctl.c',
1599 include_directories : includes,
1600 link_with : [libshared],
1601 dependencies : [libblkid],
1602 install_rpath : rootlibexecdir,
1603 install : true)
1604 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001605endif
1606
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001607exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1608 include_directories : includes,
1609 link_with : [libshared],
1610 dependencies : [threads],
1611 install_rpath : rootlibexecdir,
1612 install : true)
1613public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001614
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001615exe = executable('systemctl', 'src/systemctl/systemctl.c',
1616 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001617 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001618 dependencies : [threads,
1619 libcap,
1620 libselinux,
1621 libxz,
1622 liblz4],
1623 install_rpath : rootlibexecdir,
1624 install : true,
1625 install_dir : rootbindir)
1626public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001627
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001628if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001629 executable('systemd-backlight',
1630 'src/backlight/backlight.c',
1631 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001632 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001633 install_rpath : rootlibexecdir,
1634 install : true,
1635 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001636endif
1637
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001638if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001639 executable('systemd-rfkill',
1640 'src/rfkill/rfkill.c',
1641 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001642 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001643 install_rpath : rootlibexecdir,
1644 install : true,
1645 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001646endif
1647
1648executable('systemd-system-update-generator',
1649 'src/system-update-generator/system-update-generator.c',
1650 include_directories : includes,
1651 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001652 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001653 install : true,
1654 install_dir : systemgeneratordir)
1655
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001656if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001657 executable('systemd-cryptsetup',
1658 'src/cryptsetup/cryptsetup.c',
1659 include_directories : includes,
1660 link_with : [libshared],
1661 dependencies : [libcryptsetup],
1662 install_rpath : rootlibexecdir,
1663 install : true,
1664 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001665
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001666 executable('systemd-cryptsetup-generator',
1667 'src/cryptsetup/cryptsetup-generator.c',
1668 include_directories : includes,
1669 link_with : [libshared],
1670 dependencies : [libcryptsetup],
1671 install_rpath : rootlibexecdir,
1672 install : true,
1673 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001674
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001675 executable('systemd-veritysetup',
1676 'src/veritysetup/veritysetup.c',
1677 include_directories : includes,
1678 link_with : [libshared],
1679 dependencies : [libcryptsetup],
1680 install_rpath : rootlibexecdir,
1681 install : true,
1682 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001683
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001684 executable('systemd-veritysetup-generator',
1685 'src/veritysetup/veritysetup-generator.c',
1686 include_directories : includes,
1687 link_with : [libshared],
1688 dependencies : [libcryptsetup],
1689 install_rpath : rootlibexecdir,
1690 install : true,
1691 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001692endif
1693
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001694if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001695 executable('systemd-sysv-generator',
1696 'src/sysv-generator/sysv-generator.c',
1697 include_directories : includes,
1698 link_with : [libshared],
1699 install_rpath : rootlibexecdir,
1700 install : true,
1701 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001702
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001703 executable('systemd-rc-local-generator',
1704 'src/rc-local-generator/rc-local-generator.c',
1705 include_directories : includes,
1706 link_with : [libshared],
1707 install_rpath : rootlibexecdir,
1708 install : true,
1709 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001710endif
1711
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001712if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001713 executable('systemd-hostnamed',
1714 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001715 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001716 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001717 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001718 install : true,
1719 install_dir : rootlibexecdir)
1720
1721 exe = executable('hostnamectl',
1722 'src/hostname/hostnamectl.c',
1723 include_directories : includes,
1724 link_with : [libshared],
1725 install_rpath : rootlibexecdir,
1726 install : true)
1727 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001728endif
1729
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001730if conf.get('ENABLE_LOCALED') == 1
1731 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001732 # logind will load libxkbcommon.so dynamically on its own
1733 deps = [libdl]
1734 else
1735 deps = []
1736 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001737
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001738 executable('systemd-localed',
1739 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001740 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001741 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001742 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001743 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001744 install : true,
1745 install_dir : rootlibexecdir)
1746
1747 exe = executable('localectl',
1748 localectl_sources,
1749 include_directories : includes,
1750 link_with : [libshared],
1751 install_rpath : rootlibexecdir,
1752 install : true)
1753 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001754endif
1755
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001756if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001757 executable('systemd-timedated',
1758 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001759 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001760 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001761 install_rpath : rootlibexecdir,
1762 install : true,
1763 install_dir : rootlibexecdir)
1764
1765 exe = executable('timedatectl',
1766 'src/timedate/timedatectl.c',
1767 include_directories : includes,
1768 install_rpath : rootlibexecdir,
1769 link_with : [libshared],
1770 install : true)
1771 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001772endif
1773
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001774if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001775 executable('systemd-timesyncd',
1776 systemd_timesyncd_sources,
1777 include_directories : includes,
1778 link_with : [libshared],
1779 dependencies : [threads,
1780 libm],
1781 install_rpath : rootlibexecdir,
1782 install : true,
1783 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001784endif
1785
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001786if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001787 executable('systemd-machined',
1788 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001789 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001790 link_with : [libmachine_core,
1791 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001792 install_rpath : rootlibexecdir,
1793 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001794 install_dir : rootlibexecdir)
1795
1796 exe = executable('machinectl',
1797 'src/machine/machinectl.c',
1798 include_directories : includes,
1799 link_with : [libshared],
1800 dependencies : [threads,
1801 libxz,
1802 liblz4],
1803 install_rpath : rootlibexecdir,
1804 install : true,
1805 install_dir : rootbindir)
1806 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001807endif
1808
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001809if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001810 executable('systemd-importd',
1811 systemd_importd_sources,
1812 include_directories : includes,
1813 link_with : [libshared],
1814 dependencies : [threads],
1815 install_rpath : rootlibexecdir,
1816 install : true,
1817 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001818
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001819 systemd_pull = executable('systemd-pull',
1820 systemd_pull_sources,
1821 include_directories : includes,
1822 link_with : [libshared],
1823 dependencies : [libcurl,
1824 libz,
1825 libbzip2,
1826 libxz,
1827 libgcrypt],
1828 install_rpath : rootlibexecdir,
1829 install : true,
1830 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001831
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001832 systemd_import = executable('systemd-import',
1833 systemd_import_sources,
1834 include_directories : includes,
1835 link_with : [libshared],
1836 dependencies : [libcurl,
1837 libz,
1838 libbzip2,
1839 libxz],
1840 install_rpath : rootlibexecdir,
1841 install : true,
1842 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001843
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001844 systemd_export = executable('systemd-export',
1845 systemd_export_sources,
1846 include_directories : includes,
1847 link_with : [libshared],
1848 dependencies : [libcurl,
1849 libz,
1850 libbzip2,
1851 libxz],
1852 install_rpath : rootlibexecdir,
1853 install : true,
1854 install_dir : rootlibexecdir)
1855 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001856endif
1857
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001858if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001859 exe = executable('systemd-journal-upload',
1860 systemd_journal_upload_sources,
1861 include_directories : includes,
1862 link_with : [libshared],
1863 dependencies : [threads,
1864 libcurl,
1865 libgnutls,
1866 libxz,
1867 liblz4],
1868 install_rpath : rootlibexecdir,
1869 install : true,
1870 install_dir : rootlibexecdir)
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_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001875 s_j_remote = executable('systemd-journal-remote',
1876 systemd_journal_remote_sources,
1877 include_directories : includes,
1878 link_with : [libshared],
1879 dependencies : [threads,
1880 libmicrohttpd,
1881 libgnutls,
1882 libxz,
1883 liblz4],
1884 install_rpath : rootlibexecdir,
1885 install : true,
1886 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001887
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001888 s_j_gatewayd = executable('systemd-journal-gatewayd',
1889 systemd_journal_gatewayd_sources,
1890 include_directories : includes,
1891 link_with : [libshared],
1892 dependencies : [threads,
1893 libmicrohttpd,
1894 libgnutls,
1895 libxz,
1896 liblz4],
1897 install_rpath : rootlibexecdir,
1898 install : true,
1899 install_dir : rootlibexecdir)
1900 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001901endif
1902
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001903if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001904 executable('systemd-coredump',
1905 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001906 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001907 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001908 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001909 libacl,
1910 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001911 libxz,
1912 liblz4],
1913 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001914 install : true,
1915 install_dir : rootlibexecdir)
1916
1917 exe = executable('coredumpctl',
1918 coredumpctl_sources,
1919 include_directories : includes,
1920 link_with : [libshared],
1921 dependencies : [threads,
1922 libxz,
1923 liblz4],
1924 install_rpath : rootlibexecdir,
1925 install : true)
1926 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001927endif
1928
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001929if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001930 exe = executable('systemd-binfmt',
1931 'src/binfmt/binfmt.c',
1932 include_directories : includes,
1933 link_with : [libshared],
1934 install_rpath : rootlibexecdir,
1935 install : true,
1936 install_dir : rootlibexecdir)
1937 public_programs += [exe]
1938
1939 meson.add_install_script('sh', '-c',
1940 mkdir_p.format(binfmtdir))
1941 meson.add_install_script('sh', '-c',
1942 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
1943endif
1944
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001945if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001946 executable('systemd-vconsole-setup',
1947 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001948 include_directories : includes,
1949 link_with : [libshared],
1950 install_rpath : rootlibexecdir,
1951 install : true,
1952 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001953endif
1954
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001955if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001956 executable('systemd-random-seed',
1957 'src/random-seed/random-seed.c',
1958 include_directories : includes,
1959 link_with : [libshared],
1960 install_rpath : rootlibexecdir,
1961 install : true,
1962 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001963endif
1964
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001965if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001966 executable('systemd-firstboot',
1967 'src/firstboot/firstboot.c',
1968 include_directories : includes,
1969 link_with : [libshared],
1970 dependencies : [libcrypt],
1971 install_rpath : rootlibexecdir,
1972 install : true,
1973 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001974endif
1975
1976executable('systemd-remount-fs',
1977 'src/remount-fs/remount-fs.c',
1978 'src/core/mount-setup.c',
1979 'src/core/mount-setup.h',
1980 include_directories : includes,
1981 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001982 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001983 install : true,
1984 install_dir : rootlibexecdir)
1985
1986executable('systemd-machine-id-setup',
1987 'src/machine-id-setup/machine-id-setup-main.c',
1988 'src/core/machine-id-setup.c',
1989 'src/core/machine-id-setup.h',
1990 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001991 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001992 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001993 install : true,
1994 install_dir : rootbindir)
1995
1996executable('systemd-fsck',
1997 'src/fsck/fsck.c',
1998 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001999 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002000 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002001 install : true,
2002 install_dir : rootlibexecdir)
2003
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002004executable('systemd-growfs',
2005 'src/partition/growfs.c',
2006 include_directories : includes,
2007 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002008 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002009 install_rpath : rootlibexecdir,
2010 install : true,
2011 install_dir : rootlibexecdir)
2012
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002013executable('systemd-makefs',
2014 'src/partition/makefs.c',
2015 include_directories : includes,
2016 link_with : [libshared],
2017 install_rpath : rootlibexecdir,
2018 install : true,
2019 install_dir : rootlibexecdir)
2020
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002021executable('systemd-sleep',
2022 'src/sleep/sleep.c',
2023 include_directories : includes,
2024 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002025 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002026 install : true,
2027 install_dir : rootlibexecdir)
2028
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002029exe = executable('systemd-sysctl',
2030 'src/sysctl/sysctl.c',
2031 include_directories : includes,
2032 link_with : [libshared],
2033 install_rpath : rootlibexecdir,
2034 install : true,
2035 install_dir : rootlibexecdir)
2036public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002037
2038executable('systemd-ac-power',
2039 'src/ac-power/ac-power.c',
2040 include_directories : includes,
2041 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002042 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002043 install : true,
2044 install_dir : rootlibexecdir)
2045
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002046exe = executable('systemd-detect-virt',
2047 'src/detect-virt/detect-virt.c',
2048 include_directories : includes,
2049 link_with : [libshared],
2050 install_rpath : rootlibexecdir,
2051 install : true)
2052public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002053
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002054exe = executable('systemd-delta',
2055 'src/delta/delta.c',
2056 include_directories : includes,
2057 link_with : [libshared],
2058 install_rpath : rootlibexecdir,
2059 install : true)
2060public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002061
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002062exe = executable('systemd-escape',
2063 'src/escape/escape.c',
2064 include_directories : includes,
2065 link_with : [libshared],
2066 install_rpath : rootlibexecdir,
2067 install : true,
2068 install_dir : rootbindir)
2069public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002070
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002071exe = executable('systemd-notify',
2072 'src/notify/notify.c',
2073 include_directories : includes,
2074 link_with : [libshared],
2075 install_rpath : rootlibexecdir,
2076 install : true,
2077 install_dir : rootbindir)
2078public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002079
2080executable('systemd-volatile-root',
2081 'src/volatile-root/volatile-root.c',
2082 include_directories : includes,
2083 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002084 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002085 install : true,
2086 install_dir : rootlibexecdir)
2087
2088executable('systemd-cgroups-agent',
2089 'src/cgroups-agent/cgroups-agent.c',
2090 include_directories : includes,
2091 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002092 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002093 install : true,
2094 install_dir : rootlibexecdir)
2095
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002096exe = executable('systemd-path',
2097 'src/path/path.c',
2098 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002099 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002100 install_rpath : rootlibexecdir,
2101 install : true)
2102public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002103
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002104exe = executable('systemd-ask-password',
2105 'src/ask-password/ask-password.c',
2106 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002107 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002108 install_rpath : rootlibexecdir,
2109 install : true,
2110 install_dir : rootbindir)
2111public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002112
2113executable('systemd-reply-password',
2114 'src/reply-password/reply-password.c',
2115 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002116 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002117 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002118 install : true,
2119 install_dir : rootlibexecdir)
2120
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002121exe = executable('systemd-tty-ask-password-agent',
2122 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2123 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002124 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002125 install_rpath : rootlibexecdir,
2126 install : true,
2127 install_dir : rootbindir)
2128public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002129
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002130exe = executable('systemd-cgls',
2131 'src/cgls/cgls.c',
2132 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002133 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002134 install_rpath : rootlibexecdir,
2135 install : true)
2136public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002137
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002138exe = executable('systemd-cgtop',
2139 'src/cgtop/cgtop.c',
2140 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002141 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002142 install_rpath : rootlibexecdir,
2143 install : true)
2144public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002145
2146executable('systemd-initctl',
2147 'src/initctl/initctl.c',
2148 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002149 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002150 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002151 install : true,
2152 install_dir : rootlibexecdir)
2153
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002154exe = executable('systemd-mount',
2155 'src/mount/mount-tool.c',
2156 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002157 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002158 install_rpath : rootlibexecdir,
2159 install : true)
2160public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002161
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002162meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002163 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002164
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002165exe = executable('systemd-run',
2166 'src/run/run.c',
2167 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002168 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002169 install_rpath : rootlibexecdir,
2170 install : true)
2171public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002172
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002173exe = executable('systemd-stdio-bridge',
2174 'src/stdio-bridge/stdio-bridge.c',
2175 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002176 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002177 install_rpath : rootlibexecdir,
2178 install : true)
2179public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002180
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002181exe = executable('busctl',
2182 'src/busctl/busctl.c',
2183 'src/busctl/busctl-introspect.c',
2184 'src/busctl/busctl-introspect.h',
2185 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002186 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002187 install_rpath : rootlibexecdir,
2188 install : true)
2189public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002190
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002191if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002192 exe = executable('systemd-sysusers',
2193 'src/sysusers/sysusers.c',
2194 include_directories : includes,
2195 link_with : [libshared],
2196 install_rpath : rootlibexecdir,
2197 install : true,
2198 install_dir : rootbindir)
2199 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002200endif
2201
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002202if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002203 exe = executable('systemd-tmpfiles',
2204 'src/tmpfiles/tmpfiles.c',
2205 include_directories : includes,
2206 link_with : [libshared],
2207 dependencies : [libacl],
2208 install_rpath : rootlibexecdir,
2209 install : true,
2210 install_dir : rootbindir)
2211 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002212endif
2213
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002214if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002215 exe = executable('systemd-hwdb',
2216 'src/hwdb/hwdb.c',
2217 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2218 include_directories : includes,
Michael Biebl0da6f392017-04-21 18:32:14 +02002219 link_with : [libudev_internal],
2220 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002221 install : true,
2222 install_dir : rootbindir)
2223 public_programs += [exe]
2224endif
2225
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002226if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002227 executable('systemd-quotacheck',
2228 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002229 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002230 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002231 install_rpath : rootlibexecdir,
2232 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002233 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002234endif
2235
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002236exe = executable('systemd-socket-proxyd',
2237 'src/socket-proxy/socket-proxyd.c',
2238 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002239 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002240 dependencies : [threads],
2241 install_rpath : rootlibexecdir,
2242 install : true,
2243 install_dir : rootlibexecdir)
2244public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002245
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002246exe = executable('systemd-udevd',
2247 systemd_udevd_sources,
2248 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002249 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002250 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002251 libsystemd_network,
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002252 libudev_internal],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002253 dependencies : [threads,
2254 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002255 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002256 libacl,
2257 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002258 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002259 install : true,
2260 install_dir : rootlibexecdir)
2261public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002262
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002263exe = executable('udevadm',
2264 udevadm_sources,
2265 include_directories : includes,
2266 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002267 libsystemd_network,
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002268 libudev_internal],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002269 dependencies : [threads,
2270 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002271 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002272 libacl,
2273 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002274 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002275 install : true,
2276 install_dir : rootbindir)
2277public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002278
2279executable('systemd-shutdown',
2280 systemd_shutdown_sources,
2281 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002282 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002283 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002284 install : true,
2285 install_dir : rootlibexecdir)
2286
2287executable('systemd-update-done',
2288 'src/update-done/update-done.c',
2289 include_directories : includes,
2290 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002291 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002292 install : true,
2293 install_dir : rootlibexecdir)
2294
2295executable('systemd-update-utmp',
2296 'src/update-utmp/update-utmp.c',
2297 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002298 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002299 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002300 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002301 install : true,
2302 install_dir : rootlibexecdir)
2303
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002304if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002305 executable('systemd-modules-load',
2306 'src/modules-load/modules-load.c',
2307 include_directories : includes,
2308 link_with : [libshared],
2309 dependencies : [libkmod],
2310 install_rpath : rootlibexecdir,
2311 install : true,
2312 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002313
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002314 meson.add_install_script('sh', '-c',
2315 mkdir_p.format(modulesloaddir))
2316 meson.add_install_script('sh', '-c',
2317 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002318endif
2319
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002320exe = executable('systemd-nspawn',
2321 systemd_nspawn_sources,
2322 'src/core/mount-setup.c', # FIXME: use a variable?
2323 'src/core/mount-setup.h',
2324 'src/core/loopback-setup.c',
2325 'src/core/loopback-setup.h',
2326 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002327 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002328 dependencies : [libacl,
2329 libblkid,
2330 libseccomp,
2331 libselinux],
2332 install_rpath : rootlibexecdir,
2333 install : true)
2334public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002335
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002336if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002337 executable('systemd-networkd',
2338 systemd_networkd_sources,
2339 include_directories : includes,
2340 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002341 libsystemd_network,
2342 libudev_internal,
2343 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002344 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002345 install_rpath : rootlibexecdir,
2346 install : true,
2347 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002348
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002349 executable('systemd-networkd-wait-online',
2350 systemd_networkd_wait_online_sources,
2351 include_directories : includes,
2352 link_with : [libnetworkd_core,
2353 libshared],
2354 install_rpath : rootlibexecdir,
2355 install : true,
2356 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002357
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002358 exe = executable('networkctl',
2359 networkctl_sources,
2360 include_directories : includes,
2361 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002362 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002363 install_rpath : rootlibexecdir,
2364 install : true,
2365 install_dir : rootbindir)
2366 public_programs += [exe]
2367endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002368############################################################
2369
2370foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002371 sources = tuple[0]
2372 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2373 dependencies = tuple[2]
2374 condition = tuple.length() >= 4 ? tuple[3] : ''
2375 type = tuple.length() >= 5 ? tuple[4] : ''
2376 defs = tuple.length() >= 6 ? tuple[5] : []
2377 incs = tuple.length() >= 7 ? tuple[6] : includes
2378 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002379
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002380 name = sources[0].split('/')[-1].split('.')[0]
2381 if type.startswith('timeout=')
2382 timeout = type.split('=')[1].to_int()
2383 type = ''
2384 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002385
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002386 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002387 exe = executable(
2388 name,
2389 sources,
2390 include_directories : incs,
2391 link_with : link_with,
2392 dependencies : dependencies,
2393 c_args : defs,
2394 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002395 install : install_tests,
2396 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002397
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002398 if type == 'manual'
2399 message('@0@ is a manual test'.format(name))
2400 elif type == 'unsafe' and want_tests != 'unsafe'
2401 message('@0@ is an unsafe test'.format(name))
2402 else
2403 test(name, exe,
2404 env : test_env,
2405 timeout : timeout)
2406 endif
2407 else
2408 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2409 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002410endforeach
2411
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002412test_libsystemd_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002413 'test-libsystemd-sym',
2414 test_libsystemd_sym_c,
2415 include_directories : includes,
2416 link_with : [libsystemd],
2417 install : install_tests,
2418 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002419test('test-libsystemd-sym',
2420 test_libsystemd_sym)
2421
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002422test_libudev_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002423 'test-libudev-sym',
2424 test_libudev_sym_c,
2425 include_directories : includes,
2426 c_args : ['-Wno-deprecated-declarations'],
2427 link_with : [libudev],
2428 install : install_tests,
2429 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002430test('test-libudev-sym',
2431 test_libudev_sym)
2432
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002433############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002434
2435make_directive_index_py = find_program('tools/make-directive-index.py')
2436make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002437xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002438hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002439
2440subdir('units')
2441subdir('sysctl.d')
2442subdir('sysusers.d')
2443subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002444subdir('hwdb')
2445subdir('network')
2446subdir('man')
2447subdir('shell-completion/bash')
2448subdir('shell-completion/zsh')
2449subdir('docs/sysvinit')
2450subdir('docs/var-log')
2451
2452# FIXME: figure out if the warning is true:
2453# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2454install_subdir('factory/etc',
2455 install_dir : factorydir)
2456
2457
2458install_data('xorg/50-systemd-user.sh',
2459 install_dir : xinitrcdir)
2460install_data('system-preset/90-systemd.preset',
2461 install_dir : systempresetdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002462install_data('modprobe.d/systemd.conf',
2463 install_dir : modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002464install_data('README',
2465 'NEWS',
2466 'CODING_STYLE',
2467 'DISTRO_PORTING',
2468 'ENVIRONMENT.md',
2469 'LICENSE.GPL2',
2470 'LICENSE.LGPL2.1',
2471 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2472 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002473
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002474meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2475meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2476
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002477############################################################
2478
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002479meson_check_help = find_program('tools/meson-check-help.sh')
2480
2481foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002482 name = exec.full_path().split('/')[-1]
2483 test('check-help-' + name,
2484 meson_check_help,
2485 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002486endforeach
2487
2488############################################################
2489
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002490if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002491 all_files = run_command(
2492 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002493 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002494 'ls-files',
2495 ':/*.[ch]'])
2496 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002497
userwithuide85a6902017-08-09 13:41:44 +00002498 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002499 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002500 output : 'tags',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002501 command : ['env', 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002502 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002503 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002504 output : 'ctags',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002505 command : ['env', 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002506endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002507
2508if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002509 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002510 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002511 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002512 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002513endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002514
2515if git.found()
2516 git_head = run_command(
2517 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002518 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002519 'rev-parse', 'HEAD']).stdout().strip()
2520 git_head_short = run_command(
2521 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002522 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002523 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2524
2525 run_target(
2526 'git-snapshot',
2527 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002528 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002529 git_head_short),
2530 '--prefix', 'systemd-@0@/'.format(git_head),
2531 'HEAD'])
2532endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002533
2534############################################################
2535
2536status = [
2537 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2538
Yu Watanabe359b4962017-11-25 20:35:24 +09002539 'prefix directory: @0@'.format(prefixdir),
2540 'rootprefix directory: @0@'.format(rootprefixdir),
2541 'sysconf directory: @0@'.format(sysconfdir),
2542 'include directory: @0@'.format(includedir),
2543 'lib directory: @0@'.format(libdir),
2544 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002545 'SysV init scripts: @0@'.format(sysvinit_path),
2546 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002547 'PAM modules directory: @0@'.format(pamlibdir),
2548 'PAM configuration directory: @0@'.format(pamconfdir),
2549 'RPM macros directory: @0@'.format(rpmmacrosdir),
2550 'modprobe.d directory: @0@'.format(modprobedir),
2551 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2552 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2553 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2554 'bash completions directory: @0@'.format(bashcompletiondir),
2555 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002556 'extra start script: @0@'.format(get_option('rc-local')),
2557 'extra stop script: @0@'.format(get_option('halt-local')),
2558 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2559 get_option('debug-tty')),
2560 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002561 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002562 'maximum system UID: @0@'.format(system_uid_max),
2563 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002564 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2565 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2566 'minimum container UID base: @0@'.format(container_uid_base_min),
2567 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002568 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002569 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002570 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002571 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002572 'nobody user name: @0@'.format(nobody_user),
2573 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002574 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002575 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002576
2577 'default DNSSEC mode: @0@'.format(default_dnssec),
2578 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2579 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2580
2581alt_dns_servers = '\n '.join(dns_servers.split(' '))
2582alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2583status += [
2584 'default DNS servers: @0@'.format(alt_dns_servers),
2585 'default NTP servers: @0@'.format(alt_ntp_servers)]
2586
2587alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2588 '@@0@'.format(time_epoch)).stdout().strip()
2589status += [
2590 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2591
2592# TODO:
2593# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2594# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2595# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2596
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002597if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002598 status += [
2599 'efi arch: @0@'.format(efi_arch)]
2600
2601 if have_gnu_efi
2602 status += [
2603 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2604 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002605 'EFI lib directory: @0@'.format(efi_libdir),
2606 'EFI lds directory: @0@'.format(efi_ldsdir),
2607 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002608 endif
2609endif
2610
2611found = []
2612missing = []
2613
2614foreach tuple : [
2615 ['libcryptsetup'],
2616 ['PAM'],
2617 ['AUDIT'],
2618 ['IMA'],
2619 ['AppArmor'],
2620 ['SELinux'],
2621 ['SECCOMP'],
2622 ['SMACK'],
2623 ['zlib'],
2624 ['xz'],
2625 ['lz4'],
2626 ['bzip2'],
2627 ['ACL'],
2628 ['gcrypt'],
2629 ['qrencode'],
2630 ['microhttpd'],
2631 ['gnutls'],
2632 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002633 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002634 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002635 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002636 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002637 ['libiptc'],
2638 ['elfutils'],
2639 ['binfmt'],
2640 ['vconsole'],
2641 ['quotacheck'],
2642 ['tmpfiles'],
2643 ['environment.d'],
2644 ['sysusers'],
2645 ['firstboot'],
2646 ['randomseed'],
2647 ['backlight'],
2648 ['rfkill'],
2649 ['logind'],
2650 ['machined'],
2651 ['importd'],
2652 ['hostnamed'],
2653 ['timedated'],
2654 ['timesyncd'],
2655 ['localed'],
2656 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002657 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002658 ['coredump'],
2659 ['polkit'],
2660 ['legacy pkla', install_polkit_pkla],
2661 ['efi'],
2662 ['gnu-efi', have_gnu_efi],
2663 ['kmod'],
2664 ['xkbcommon'],
2665 ['blkid'],
2666 ['dbus'],
2667 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002668 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002669 ['hwdb'],
2670 ['tpm'],
2671 ['man pages', want_man],
2672 ['html pages', want_html],
2673 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002674 ['split /usr', conf.get('HAVE_SPLIT_USR') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002675 ['SysV compat'],
2676 ['utmp'],
2677 ['ldconfig'],
2678 ['hibernate'],
2679 ['adm group', get_option('adm-group')],
2680 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002681 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002682 ['debug hashmap'],
2683 ['debug mmap cache'],
2684]
2685
2686 cond = tuple.get(1, '')
2687 if cond == ''
2688 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2689 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002690 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002691 endif
2692 if cond
2693 found += [tuple[0]]
2694 else
2695 missing += [tuple[0]]
2696 endif
2697endforeach
2698
2699status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002700 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002701 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002702 '',
2703 'disabled features: @0@'.format(', '.join(missing)),
2704 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002705message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002706
2707if rootprefixdir != rootprefix_default
2708 message('WARNING:\n' +
2709 ' Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2710 ' systemd used fixed names for unit file directories and other paths, so anything\n' +
2711 ' except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
2712endif