blob: 4f63bffe95de224f1dac0022ff9f84cc826b07cf [file] [log] [blame]
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01001# SPDX-License-Identifier: LGPL-2.1+
2#
3# Copyright 2017 Zbigniew Jędrzejewski-Szmek
4#
5# systemd is free software; you can redistribute it and/or modify it
6# under the terms of the GNU Lesser General Public License as published by
7# the Free Software Foundation; either version 2.1 of the License, or
8# (at your option) any later version.
9#
10# systemd is distributed in the hope that it will be useful, but
11# WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13# Lesser General Public License for more details.
14#
15# You should have received a copy of the GNU Lesser General Public License
16# along with systemd; If not, see <http://www.gnu.org/licenses/>.
17
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040018project('systemd', 'c',
Lennart Poettering63950422017-09-28 11:29:52 +020019 version : '235',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040020 license : 'LGPLv2+',
21 default_options: [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040022 'c_std=gnu99',
23 'prefix=/usr',
24 'sysconfdir=/etc',
25 'localstatedir=/var',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040026 ],
Zbigniew Jędrzejewski-Szmek86ea8d72017-11-20 08:08:43 +010027 meson_version : '>= 0.41',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040028 )
29
Lennart Poetteringd128f362017-10-05 17:14:04 +020030libsystemd_version = '0.19.1'
31libudev_version = '1.6.7'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020032
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040033# We need the same data in three different formats, ugh!
34# Also, for hysterical reasons, we use different variable
35# names, sometimes. Not all variables are included in every
36# set. Ugh, ugh, ugh!
37conf = configuration_data()
38conf.set_quoted('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version())
39conf.set_quoted('PACKAGE_VERSION', meson.project_version())
40
41substs = configuration_data()
42substs.set('PACKAGE_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
43substs.set('PACKAGE_VERSION', meson.project_version())
44
45m4_defines = []
46
47#####################################################################
48
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040049# Try to install the git pre-commit hook
50git_hook = run_command(join_paths(meson.source_root(), 'tools/add-git-hook.sh'))
51if git_hook.returncode() == 0
52 message(git_hook.stdout().strip())
53endif
54
55#####################################################################
56
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010057split_usr = get_option('split-usr')
58conf.set10('HAVE_SPLIT_USR', split_usr)
59
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010060rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010061# Unusual rootprefixdir values are used by some distros
62# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010063rootprefix_default = get_option('split-usr') ? '/' : '/usr'
64if rootprefixdir == ''
65 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010066endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040067
68sysvinit_path = get_option('sysvinit-path')
69sysvrcnd_path = get_option('sysvrcnd-path')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020070have = sysvinit_path != '' or sysvrcnd_path != ''
71conf.set10('HAVE_SYSV_COMPAT', have,
72 description : 'SysV init scripts and rcN.d links are supported')
73m4_defines += have ? ['-DHAVE_SYSV_COMPAT'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040074
75# join_paths ignore the preceding arguments if an absolute component is
76# encountered, so this should canonicalize various paths when they are
77# absolute or relative.
78prefixdir = get_option('prefix')
79if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040080 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040081endif
82bindir = join_paths(prefixdir, get_option('bindir'))
83libdir = join_paths(prefixdir, get_option('libdir'))
84sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
85includedir = join_paths(prefixdir, get_option('includedir'))
86datadir = join_paths(prefixdir, get_option('datadir'))
87localstatedir = join_paths('/', get_option('localstatedir'))
88
89rootbindir = join_paths(rootprefixdir, 'bin')
90rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
91
92rootlibdir = get_option('rootlibdir')
93if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040094 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040095endif
96
97# Dirs of external packages
Michael Bieble17e5ba2017-04-13 10:30:56 -040098pkgconfigdatadir = join_paths(datadir, 'pkgconfig')
99pkgconfiglibdir = join_paths(libdir, 'pkgconfig')
100polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
101polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
102polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
103varlogdir = join_paths(localstatedir, 'log')
104xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900105rpmmacrosdir = get_option('rpmmacrosdir')
106if rpmmacrosdir != 'no'
107 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
108endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200109modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400110
111# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400112pkgdatadir = join_paths(datadir, 'systemd')
113environmentdir = join_paths(prefixdir, 'lib/environment.d')
114pkgsysconfdir = join_paths(sysconfdir, 'systemd')
115userunitdir = join_paths(prefixdir, 'lib/systemd/user')
116userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
117tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
118sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
119sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
120binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
121modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
122networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
123pkgincludedir = join_paths(includedir, 'systemd')
124systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
125usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
126systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
127userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
128systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
129systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
130systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
131systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
132udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
133udevhomedir = udevlibexecdir
134udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
135udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
136catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
137kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
138factorydir = join_paths(datadir, 'factory')
139docdir = join_paths(datadir, 'doc/systemd')
140bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
141testsdir = join_paths(prefixdir, 'lib/systemd/tests')
142systemdstatedir = join_paths(localstatedir, 'lib/systemd')
143catalogstatedir = join_paths(systemdstatedir, 'catalog')
144randomseeddir = join_paths(localstatedir, 'lib/systemd')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400145
146dbuspolicydir = get_option('dbuspolicydir')
147if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400148 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400149endif
150
151dbussessionservicedir = get_option('dbussessionservicedir')
152if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400153 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400154endif
155
156dbussystemservicedir = get_option('dbussystemservicedir')
157if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400158 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400159endif
160
161pamlibdir = get_option('pamlibdir')
162if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400163 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400164endif
165
166pamconfdir = get_option('pamconfdir')
167if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400168 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400169endif
170
171conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400172conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400173conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
174conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
175conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400176conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
177conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400178conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400179conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
180conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400181conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
182conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
183conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
184conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100185conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100186conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400187conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
188conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
189conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
190conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
191conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100192conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400193conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400194conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
195conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400196conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
197conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
198conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
199conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
200conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
201conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400202conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
203conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400204conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400205conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400206conf.set_quoted('LIBDIR', libdir)
207conf.set_quoted('ROOTLIBDIR', rootlibdir)
208conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
209conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400210conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
211conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
212conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
213conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
214conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
215conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400216
217conf.set_quoted('ABS_BUILD_DIR', meson.build_root())
218conf.set_quoted('ABS_SRC_DIR', meson.source_root())
219
220substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400221substs.set('exec_prefix', prefixdir)
222substs.set('libdir', libdir)
223substs.set('rootlibdir', rootlibdir)
224substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400225substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400226substs.set('bindir', bindir)
227substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400228substs.set('rootlibexecdir', rootlibexecdir)
229substs.set('systemunitdir', systemunitdir)
230substs.set('userunitdir', userunitdir)
231substs.set('systempresetdir', systempresetdir)
232substs.set('userpresetdir', userpresetdir)
233substs.set('udevhwdbdir', udevhwdbdir)
234substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400235substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400236substs.set('catalogdir', catalogdir)
237substs.set('tmpfilesdir', tmpfilesdir)
238substs.set('sysusersdir', sysusersdir)
239substs.set('sysctldir', sysctldir)
240substs.set('binfmtdir', binfmtdir)
241substs.set('modulesloaddir', modulesloaddir)
242substs.set('systemgeneratordir', systemgeneratordir)
243substs.set('usergeneratordir', usergeneratordir)
244substs.set('systemenvgeneratordir', systemenvgeneratordir)
245substs.set('userenvgeneratordir', userenvgeneratordir)
246substs.set('systemshutdowndir', systemshutdowndir)
247substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400248substs.set('VARLOGDIR', varlogdir)
249substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400250substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
251substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400252substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
253substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
254substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
255substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400256
257#####################################################################
258
259cc = meson.get_compiler('c')
260pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400261check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400262
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400263cxx = find_program('c++', required : false)
264if cxx.found()
265 # Used only for tests
266 add_languages('cpp')
267endif
268
Zbigniew Jędrzejewski-Szmek75cf1d62017-07-04 17:59:15 -0400269foreach arg : ['-Wextra',
Zbigniew Jędrzejewski-Szmek70160ce2017-10-03 12:11:49 +0200270 '-Werror=undef',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400271 '-Wlogical-op',
272 '-Wmissing-include-dirs',
273 '-Wold-style-definition',
274 '-Wpointer-arith',
275 '-Winit-self',
276 '-Wdeclaration-after-statement',
277 '-Wfloat-equal',
278 '-Wsuggest-attribute=noreturn',
279 '-Werror=missing-prototypes',
280 '-Werror=implicit-function-declaration',
281 '-Werror=missing-declarations',
282 '-Werror=return-type',
283 '-Werror=incompatible-pointer-types',
284 '-Werror=format=2',
285 '-Wstrict-prototypes',
286 '-Wredundant-decls',
287 '-Wmissing-noreturn',
Zbigniew Jędrzejewski-Szmek97279d82017-11-20 14:23:40 +0100288 '-Wimplicit-fallthrough=5',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400289 '-Wshadow',
290 '-Wendif-labels',
291 '-Wstrict-aliasing=2',
292 '-Wwrite-strings',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400293 '-Werror=overflow',
294 '-Wdate-time',
295 '-Wnested-externs',
296 '-ffast-math',
297 '-fno-common',
298 '-fdiagnostics-show-option',
299 '-fno-strict-aliasing',
300 '-fvisibility=hidden',
301 '-fstack-protector',
302 '-fstack-protector-strong',
303 '-fPIE',
304 '--param=ssp-buffer-size=4',
305 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400306 if cc.has_argument(arg)
307 add_project_arguments(arg, language : 'c')
308 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400309endforeach
310
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400311# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
312# arguments, just emits a warnings. So test for the "positive" version instead.
313foreach arg : ['unused-parameter',
314 'missing-field-initializers',
315 'unused-result',
Zbigniew Jędrzejewski-Szmekfb1b5882017-09-04 19:49:12 +0300316 'format-signedness',
317 'error=nonnull', # work-around for gcc 7.1 turning this on on its own
318 ]
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400319 if cc.has_argument('-W' + arg)
320 add_project_arguments('-Wno-' + arg, language : 'c')
321 endif
322endforeach
323
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400324if cc.compiles('
325 #include <time.h>
326 #include <inttypes.h>
327 typedef uint64_t usec_t;
328 usec_t now(clockid_t clock);
329 int main(void) {
330 struct timespec now;
331 return 0;
332 }
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400333', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400334 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400335endif
336
337if cc.get_id() == 'clang'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400338 foreach arg : ['-Wno-typedef-redefinition',
339 '-Wno-gnu-variable-sized-type-not-at-end',
340 ]
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400341 if cc.has_argument(arg,
342 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400343 add_project_arguments(arg, language : 'c')
344 endif
345 endforeach
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400346endif
347
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400348link_test_c = files('tools/meson-link-test.c')
349
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400350# --as-needed and --no-undefined are provided by meson by default,
351# run mesonconf to see what is enabled
352foreach arg : ['-Wl,-z,relro',
353 '-Wl,-z,now',
354 '-pie',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400355 ]
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400356
357 have = run_command(check_compilation_sh,
358 cc.cmd_array(), '-x', 'c', arg,
359 '-include', link_test_c).returncode() == 0
360 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
361 if have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400362 add_project_link_arguments(arg, language : 'c')
363 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400364endforeach
365
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400366if get_option('buildtype') != 'debug'
367 foreach arg : ['-ffunction-sections',
368 '-fdata-sections']
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400369 if cc.has_argument(arg,
370 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400371 add_project_arguments(arg, language : 'c')
372 endif
373 endforeach
374
375 foreach arg : ['-Wl,--gc-sections']
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400376 have = run_command(check_compilation_sh,
377 cc.cmd_array(), '-x', 'c', arg,
378 '-include', link_test_c).returncode() == 0
379 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
380 if have
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400381 add_project_link_arguments(arg, language : 'c')
382 endif
383 endforeach
384endif
385
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400386cpp = ' '.join(cc.cmd_array()) + ' -E'
387
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400388#####################################################################
389# compilation result tests
390
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400391conf.set('_GNU_SOURCE', true)
392conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400393
394conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
395conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
396conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
397conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
398conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
399conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
400conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
401
402decl_headers = '''
403#include <uchar.h>
404#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000405#include <linux/fib_rules.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400406'''
407# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
408
409foreach decl : ['char16_t',
410 'char32_t',
411 'key_serial_t',
412 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000413 'struct fib_rule_uid_range',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400414 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400415
416 # We get -1 if the size cannot be determined
417 have = cc.sizeof(decl, prefix : decl_headers) > 0
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200418 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400419endforeach
420
421foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
422 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
423 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
424 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
425 ['IFLA_IPVLAN_MODE', 'linux/if_link.h'],
426 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
427 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
428 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
429 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
430 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530431 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400432 # if_tunnel.h is buggy and cannot be included on its own
433 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
434 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
435 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
436 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
437 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
438 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
439 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
440 ['NDA_IFINDEX', 'linux/neighbour.h'],
441 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000442 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400443 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530444 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400445 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400446 prefix = decl.length() > 2 ? decl[2] : ''
447 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200448 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400449endforeach
450
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400451foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200452 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400453endforeach
454
455foreach ident : [
Yu Watanabee4816452017-11-26 02:17:06 +0900456 ['memfd_create', '''#define _GNU_SOURCE
457 #include <sys/mman.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400458 ['gettid', '''#include <sys/types.h>'''],
459 ['pivot_root', '''#include <stdlib.h>'''], # no known header declares pivot_root
460 ['name_to_handle_at', '''#define _GNU_SOURCE
461 #include <sys/types.h>
462 #include <sys/stat.h>
463 #include <fcntl.h>'''],
464 ['setns', '''#define _GNU_SOURCE
465 #include <sched.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400466 ['renameat2', '''#include <stdio.h>'''],
467 ['kcmp', '''#include <linux/kcmp.h>'''],
468 ['keyctl', '''#include <sys/types.h>
469 #include <keyutils.h>'''],
470 ['copy_file_range', '''#include <sys/syscall.h>
471 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200472 ['bpf', '''#include <sys/syscall.h>
473 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmek38f1ae02017-04-19 16:14:16 -0400474 ['explicit_bzero' , '''#include <string.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400475]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400476
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400477 have = cc.has_function(ident[0], prefix : ident[1])
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200478 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400479endforeach
480
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400481if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200482 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200483 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400484else
485 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200486 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200487 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400488endif
489
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400490#####################################################################
491
492sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400493awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400494m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400495stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400496git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400497
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400498meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400499mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400500test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
501splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400502
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400503# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
504# /usr/sbin, /sbin, and fall back to the default from middle column.
505progs = [['telinit', '/lib/sysvinit/telinit'],
506 ['quotaon', '/usr/sbin/quotaon' ],
507 ['quotacheck', '/usr/sbin/quotacheck' ],
508 ['kill', '/usr/bin/kill' ],
509 ['kmod', '/usr/bin/kmod' ],
510 ['kexec', '/usr/sbin/kexec' ],
511 ['sulogin', '/usr/sbin/sulogin' ],
512 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
513 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
514 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
515 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
516 ]
517foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400518 path = get_option(prog[0] + '-path')
519 if path != ''
520 message('Using @1@ for @0@'.format(prog[0], path))
521 else
522 exe = find_program(prog[0],
523 '/usr/sbin/' + prog[0],
524 '/sbin/' + prog[0],
525 required: false)
526 path = exe.found() ? exe.path() : prog[1]
527 endif
528 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
529 conf.set_quoted(name, path)
530 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400531endforeach
532
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400533if run_command('ln', '--relative', '--help').returncode() != 0
534 error('ln does not support --relative')
535endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400536
537############################################################
538
539gperf = find_program('gperf')
540
541gperf_test_format = '''
542#include <string.h>
543const char * in_word_set(const char *, @0@);
544@1@
545'''
546gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
547gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
548gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
549if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400550 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400551else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400552 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
553 if cc.compiles(gperf_test)
554 gperf_len_type = 'unsigned'
555 else
556 error('unable to determine gperf len type')
557 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400558endif
559message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400560conf.set('GPERF_LEN_TYPE', gperf_len_type,
561 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400562
563############################################################
564
565if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400566 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400567endif
568foreach header : ['linux/btrfs.h',
569 'linux/memfd.h',
570 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200571 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400572 'valgrind/memcheck.h',
573 'valgrind/valgrind.h',
574 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400575
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200576 conf.set10('HAVE_' + header.underscorify().to_upper(),
577 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400578endforeach
579
580############################################################
581
582conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400583conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
584gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400585
586default_hierarchy = get_option('default-hierarchy')
587conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
588 description : 'default cgroup hierarchy as string')
589if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400590 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400591elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400592 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400593else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400594 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400595endif
596
597time_epoch = get_option('time-epoch')
598if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400599 NEWS = files('NEWS')
600 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400601endif
602time_epoch = time_epoch.to_int()
603conf.set('TIME_EPOCH', time_epoch)
604
605system_uid_max = get_option('system-uid-max')
606if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400607 system_uid_max = run_command(
608 awk,
609 'BEGIN { uid=999 } /^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
610 '/etc/login.defs').stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400611endif
612system_uid_max = system_uid_max.to_int()
613conf.set('SYSTEM_UID_MAX', system_uid_max)
614substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400615message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400616
617conf.set_quoted('NOBODY_USER_NAME', get_option('nobody-user'))
618conf.set_quoted('NOBODY_GROUP_NAME', get_option('nobody-group'))
619
620system_gid_max = get_option('system-gid-max')
621if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400622 system_gid_max = run_command(
623 awk,
624 'BEGIN { gid=999 } /^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
625 '/etc/login.defs').stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400626endif
627system_gid_max = system_gid_max.to_int()
628conf.set('SYSTEM_GID_MAX', system_gid_max)
629substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400630message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400631
632tty_gid = get_option('tty-gid')
633conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400634substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400635
636if get_option('adm-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400637 m4_defines += ['-DENABLE_ADM_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400638endif
639
640if get_option('wheel-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400641 m4_defines += ['-DENABLE_WHEEL_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400642endif
643
644substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700645substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400646
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400647kill_user_processes = get_option('default-kill-user-processes')
648conf.set10('KILL_USER_PROCESSES', kill_user_processes)
649substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400650
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400651dns_servers = get_option('dns-servers')
652conf.set_quoted('DNS_SERVERS', dns_servers)
653substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400654
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400655ntp_servers = get_option('ntp-servers')
656conf.set_quoted('NTP_SERVERS', ntp_servers)
657substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400658
659conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
660
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400661substs.set('SUSHELL', get_option('debug-shell'))
662substs.set('DEBUGTTY', get_option('debug-tty'))
663
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400664debug = get_option('debug')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200665enable_debug_hashmap = false
666enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400667if debug != ''
668 foreach name : debug.split(',')
669 if name == 'hashmap'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200670 enable_debug_hashmap = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400671 elif name == 'mmap-cache'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200672 enable_debug_mmap_cache = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400673 else
674 message('unknown debug option "@0@", ignoring'.format(name))
675 endif
676 endforeach
677endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200678conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
679conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400680
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400681#####################################################################
682
683threads = dependency('threads')
684librt = cc.find_library('rt')
685libm = cc.find_library('m')
686libdl = cc.find_library('dl')
687libcrypt = cc.find_library('crypt')
688
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400689libcap = dependency('libcap', required : false)
690if not libcap.found()
691 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
692 libcap = cc.find_library('cap')
693endif
694
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400695libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekd6e80962017-09-15 14:47:57 +0200696 version : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400697
698want_seccomp = get_option('seccomp')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400699if want_seccomp != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400700 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400701 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400702 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200703 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400704else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200705 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400706 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400707endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200708conf.set10('HAVE_SECCOMP', have)
709m4_defines += have ? ['-DHAVE_SECCOMP'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400710
711want_selinux = get_option('selinux')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400712if want_selinux != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400713 libselinux = dependency('libselinux',
714 version : '>= 2.1.9',
715 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200716 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400717else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200718 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400719 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400720endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200721conf.set10('HAVE_SELINUX', have)
722m4_defines += have ? ['-DHAVE_SELINUX'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400723
724want_apparmor = get_option('apparmor')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400725if want_apparmor != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400726 libapparmor = dependency('libapparmor',
727 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200728 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400729else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200730 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400731 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400732endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200733conf.set10('HAVE_APPARMOR', have)
734m4_defines += have ? ['-DHAVE_APPARMOR'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400735
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400736smack_run_label = get_option('smack-run-label')
737if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400738 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
739 m4_defines += ['-DHAVE_SMACK_RUN_LABEL']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400740endif
741
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400742want_polkit = get_option('polkit')
743install_polkit = false
744install_polkit_pkla = false
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400745if want_polkit != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400746 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400747
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400748 libpolkit = dependency('polkit-gobject-1',
749 required : false)
750 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
751 message('Old polkit detected, will install pkla files')
752 install_polkit_pkla = true
753 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400754endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200755conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400756
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400757want_acl = get_option('acl')
758if want_acl != 'false'
759 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200760 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400761else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200762 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400763 libacl = []
764endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200765conf.set10('HAVE_ACL', have)
766m4_defines += have ? ['-DHAVE_ACL'] : []
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400767
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400768want_audit = get_option('audit')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400769if want_audit != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400770 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200771 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400772else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200773 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400774 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400775endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200776conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400777
778want_blkid = get_option('blkid')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400779if want_blkid != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400780 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200781 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400782else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200783 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400784 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400785endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200786conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400787
788want_kmod = get_option('kmod')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400789if want_kmod != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400790 libkmod = dependency('libkmod',
791 version : '>= 15',
792 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200793 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400794else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200795 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400796 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400797endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200798conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400799
800want_pam = get_option('pam')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400801if want_pam != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400802 libpam = cc.find_library('pam', required : want_pam == 'true')
803 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200804 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400805else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200806 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400807 libpam = []
808 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400809endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200810conf.set10('HAVE_PAM', have)
811m4_defines += have ? ['-DHAVE_PAM'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400812
813want_microhttpd = get_option('microhttpd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400814if want_microhttpd != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400815 libmicrohttpd = dependency('libmicrohttpd',
816 version : '>= 0.9.33',
817 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200818 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400819else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200820 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400821 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400822endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200823conf.set10('HAVE_MICROHTTPD', have)
824m4_defines += have ? ['-DHAVE_MICROHTTPD'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400825
826want_libcryptsetup = get_option('libcryptsetup')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400827if want_libcryptsetup != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400828 libcryptsetup = dependency('libcryptsetup',
829 version : '>= 1.6.0',
830 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200831 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400832else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200833 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400834 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400835endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200836conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400837
838want_libcurl = get_option('libcurl')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400839if want_libcurl != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400840 libcurl = dependency('libcurl',
841 version : '>= 7.32.0',
842 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200843 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400844else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200845 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400846 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400847endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200848conf.set10('HAVE_LIBCURL', have)
849m4_defines += have ? ['-DHAVE_LIBCURL'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400850
851want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400852want_libidn2 = get_option('libidn2')
853if want_libidn == 'true' and want_libidn2 == 'true'
854 error('libidn and libidn2 cannot be requested simultaneously')
855endif
856
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400857if want_libidn != 'false' and want_libidn2 != 'true'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400858 libidn = dependency('libidn',
859 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200860 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400861else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200862 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400863 libidn = []
864endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200865conf.set10('HAVE_LIBIDN', have)
866m4_defines += have ? ['-DHAVE_LIBIDN'] : []
867if not have and want_libidn2 != 'false'
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400868 # libidn is used for both libidn and libidn2 objects
869 libidn = dependency('libidn2',
870 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200871 have = libidn.found()
872else
873 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400874endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200875conf.set10('HAVE_LIBIDN2', have)
876m4_defines += have ? ['-DHAVE_LIBIDN2'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400877
878want_libiptc = get_option('libiptc')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400879if want_libiptc != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400880 libiptc = dependency('libiptc',
881 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200882 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400883else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200884 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400885 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400886endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200887conf.set10('HAVE_LIBIPTC', have)
888m4_defines += have ? ['-DHAVE_LIBIPTC'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400889
890want_qrencode = get_option('qrencode')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400891if want_qrencode != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400892 libqrencode = dependency('libqrencode',
893 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200894 have = libqrencode.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 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400898endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200899conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400900
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400901want_gcrypt = get_option('gcrypt')
902if want_gcrypt != 'false'
903 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
904 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200905 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400906else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200907 have = false
908endif
909if not have
910 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400911 libgcrypt = []
912 libgpg_error = []
913endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200914conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400915
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400916want_gnutls = get_option('gnutls')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400917if want_gnutls != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400918 libgnutls = dependency('gnutls',
919 version : '>= 3.1.4',
920 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200921 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400922else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200923 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400924 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400925endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200926conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400927
928want_elfutils = get_option('elfutils')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400929if want_elfutils != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400930 libdw = dependency('libdw',
931 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200932 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400933else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200934 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400935 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400936endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200937conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400938
939want_zlib = get_option('zlib')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400940if want_zlib != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400941 libz = dependency('zlib',
942 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200943 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400944else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200945 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400946 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400947endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200948conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400949
950want_bzip2 = get_option('bzip2')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400951if want_bzip2 != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400952 libbzip2 = cc.find_library('bz2',
953 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200954 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400955else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200956 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400957 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400958endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200959conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400960
961want_xz = get_option('xz')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400962if want_xz != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400963 libxz = dependency('liblzma',
964 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200965 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400966else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200967 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400968 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400969endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200970conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400971
972want_lz4 = get_option('lz4')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400973if want_lz4 != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400974 liblz4 = dependency('liblz4',
975 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200976 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400977else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200978 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400979 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400980endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200981conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400982
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400983want_xkbcommon = get_option('xkbcommon')
984if want_xkbcommon != 'false'
985 libxkbcommon = dependency('xkbcommon',
986 version : '>= 0.3.0',
987 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200988 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400989else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200990 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400991 libxkbcommon = []
992endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200993conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400994
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -0400995want_glib = get_option('glib')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400996if want_glib != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400997 libglib = dependency('glib-2.0',
998 version : '>= 2.22.0',
999 required : want_glib == 'true')
1000 libgobject = dependency('gobject-2.0',
1001 version : '>= 2.22.0',
1002 required : want_glib == 'true')
1003 libgio = dependency('gio-2.0',
1004 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001005 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001006else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001007 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001008 libglib = []
1009 libgobject = []
1010 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001011endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001012conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001013
1014want_dbus = get_option('dbus')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001015if want_dbus != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001016 libdbus = dependency('dbus-1',
1017 version : '>= 1.3.2',
1018 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001019 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001020else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001021 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001022 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001023endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001024conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001025
Yu Watanabe42303dc2017-06-18 05:22:32 +09001026default_dnssec = get_option('default-dnssec')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001027if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001028 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1029 default_dnssec = 'no'
1030endif
1031conf.set('DEFAULT_DNSSEC_MODE',
1032 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1033substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1034
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001035want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001036if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001037 have = (conf.get('HAVE_LIBCURL') == 1 and
1038 conf.get('HAVE_ZLIB') == 1 and
1039 conf.get('HAVE_BZIP2') == 1 and
1040 conf.get('HAVE_XZ') == 1 and
1041 conf.get('HAVE_GCRYPT') == 1)
1042 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001043 error('importd support was requested, but dependencies are not available')
1044 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001045else
1046 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001047endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001048conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001049
1050want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001051if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001052 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1053 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001054 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1055 # it's possible to build one without the other. Complain only if
1056 # support was explictly requested. The auxiliary files like sysusers
1057 # config should be installed when any of the programs are built.
1058 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1059 error('remote support was requested, but dependencies are not available')
1060 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001061 have = have_deps[0] or have_deps[1]
1062else
1063 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001064endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001065conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001066
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001067foreach term : ['utmp',
1068 'hibernate',
1069 'environment-d',
1070 'binfmt',
1071 'coredump',
1072 'resolve',
1073 'logind',
1074 'hostnamed',
1075 'localed',
1076 'machined',
1077 'networkd',
1078 'timedated',
1079 'timesyncd',
1080 'myhostname',
1081 'firstboot',
1082 'randomseed',
1083 'backlight',
1084 'vconsole',
1085 'quotacheck',
1086 'sysusers',
1087 'tmpfiles',
1088 'hwdb',
1089 'rfkill',
1090 'ldconfig',
1091 'efi',
1092 'tpm',
1093 'ima',
1094 'smack',
1095 'gshadow',
1096 'idn',
1097 'nss-systemd']
1098 have = get_option(term)
1099 name = 'ENABLE_' + term.underscorify().to_upper()
1100 conf.set10(name, have)
1101 m4_defines += have ? ['-D' + name] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001102endforeach
1103
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001104want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001105install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001106tests = []
1107
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001108conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', get_option('slow-tests'))
1109
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001110#####################################################################
1111
1112if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001113 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001114
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001115 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001116 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001117 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001118 elif efi_arch == 'x86_64'
1119 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001120 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001121 elif efi_arch == 'arm'
1122 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001123 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001124 elif efi_arch == 'aarch64'
1125 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001126 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001127 else
1128 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001129 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001130 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001131
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001132 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001133 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001134
1135 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001136else
1137 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001138endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001139conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001140
1141#####################################################################
1142
1143config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001144 output : 'config.h',
1145 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001146
1147includes = include_directories('src/basic',
1148 'src/shared',
1149 'src/systemd',
1150 'src/journal',
1151 'src/resolve',
1152 'src/timesync',
1153 'src/login',
1154 'src/udev',
1155 'src/libudev',
1156 'src/core',
1157 'src/libsystemd/sd-bus',
1158 'src/libsystemd/sd-device',
1159 'src/libsystemd/sd-hwdb',
1160 'src/libsystemd/sd-id128',
1161 'src/libsystemd/sd-netlink',
1162 'src/libsystemd/sd-network',
1163 'src/libsystemd-network',
Davide Cavalca5e1771a2017-08-30 08:34:44 -07001164 '.',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001165 )
1166
1167add_project_arguments('-include', 'config.h', language : 'c')
1168
1169gcrypt_util_sources = files('src/shared/gcrypt-util.h',
1170 'src/shared/gcrypt-util.c')
1171
1172subdir('po')
1173subdir('catalog')
1174subdir('src/systemd')
1175subdir('src/basic')
1176subdir('src/libsystemd')
1177subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001178subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001179subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001180
1181libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001182 'journal-core',
1183 libjournal_core_sources,
1184 journald_gperf_c,
1185 include_directories : includes,
1186 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001187
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001188libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001189libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001190 'systemd',
1191 libsystemd_internal_sources,
1192 journal_internal_sources,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001193 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001194 include_directories : includes,
1195 link_args : ['-shared',
1196 '-Wl,--version-script=' + libsystemd_sym_path],
1197 link_with : [libbasic],
1198 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001199 libgcrypt,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001200 librt,
1201 libxz,
1202 liblz4],
1203 link_depends : libsystemd_sym,
1204 install : true,
1205 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001206
1207############################################################
1208
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001209# binaries that have --help and are intended for use by humans,
1210# usually, but not always, installed in /bin.
1211public_programs = []
1212
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001213subdir('src/libudev')
1214subdir('src/shared')
1215subdir('src/core')
1216subdir('src/udev')
1217subdir('src/network')
1218
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001219subdir('src/analyze')
1220subdir('src/journal-remote')
1221subdir('src/coredump')
1222subdir('src/hostname')
1223subdir('src/import')
1224subdir('src/kernel-install')
1225subdir('src/locale')
1226subdir('src/machine')
1227subdir('src/nspawn')
1228subdir('src/resolve')
1229subdir('src/timedate')
1230subdir('src/timesync')
1231subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmek4e4ab1c2017-04-10 12:37:52 -04001232subdir('src/sulogin-shell')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001233subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001234
1235subdir('src/test')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001236subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001237subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001238
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001239############################################################
1240
1241# only static linking apart from libdl, to make sure that the
1242# module is linked to all libraries that it uses.
1243test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001244 'test-dlopen',
1245 test_dlopen_c,
1246 include_directories : includes,
1247 link_with : [libbasic],
1248 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001249
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001250foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001251 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001252 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001253 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001254
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001255 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001256 if condition
1257 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001258
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001259 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1260 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001261
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001262 nss = shared_library(
1263 'nss_' + module,
1264 'src/nss-@0@/nss-@0@.c'.format(module),
1265 version : '2',
1266 include_directories : includes,
1267 link_args : ['-shared',
1268 '-Wl,--version-script=' + version_script_arg,
1269 '-Wl,--undefined'],
1270 link_with : [libsystemd_internal,
1271 libbasic],
1272 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001273 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001274 link_depends : sym,
1275 install : true,
1276 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001277
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001278 # We cannot use shared_module because it does not support version suffix.
1279 # Unfortunately shared_library insists on creating the symlink…
1280 meson.add_install_script('sh', '-c',
1281 'rm $DESTDIR@0@/libnss_@1@.so'
1282 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001283
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001284 test('dlopen-nss_' + module,
1285 test_dlopen,
1286 args : [nss.full_path()]) # path to dlopen must include a slash
1287 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001288endforeach
1289
1290############################################################
1291
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001292executable('systemd',
1293 systemd_sources,
1294 include_directories : includes,
1295 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001296 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001297 dependencies : [threads,
1298 librt,
1299 libseccomp,
1300 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001301 libmount,
1302 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001303 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001304 install : true,
1305 install_dir : rootlibexecdir)
1306
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001307exe = executable('systemd-analyze',
1308 systemd_analyze_sources,
1309 include_directories : includes,
1310 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001311 libshared],
1312 dependencies : [threads,
1313 librt,
1314 libseccomp,
1315 libselinux,
1316 libmount,
1317 libblkid],
1318 install_rpath : rootlibexecdir,
1319 install : true)
1320public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001321
1322executable('systemd-journald',
1323 systemd_journald_sources,
1324 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001325 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001326 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001327 dependencies : [threads,
1328 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001329 liblz4,
1330 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001331 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001332 install : true,
1333 install_dir : rootlibexecdir)
1334
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001335exe = executable('systemd-cat',
1336 systemd_cat_sources,
1337 include_directories : includes,
1338 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001339 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001340 dependencies : [threads],
1341 install_rpath : rootlibexecdir,
1342 install : true)
1343public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001344
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001345exe = executable('journalctl',
1346 journalctl_sources,
1347 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001348 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001349 dependencies : [threads,
1350 libqrencode,
1351 libxz,
1352 liblz4],
1353 install_rpath : rootlibexecdir,
1354 install : true,
1355 install_dir : rootbindir)
1356public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001357
1358executable('systemd-getty-generator',
1359 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001360 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001361 link_with : [libshared],
1362 install_rpath : rootlibexecdir,
1363 install : true,
1364 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001365
1366executable('systemd-debug-generator',
1367 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001368 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001369 link_with : [libshared],
1370 install_rpath : rootlibexecdir,
1371 install : true,
1372 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001373
1374executable('systemd-fstab-generator',
1375 'src/fstab-generator/fstab-generator.c',
1376 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001377 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001378 link_with : [libshared],
1379 install_rpath : rootlibexecdir,
1380 install : true,
1381 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001382
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001383if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001384 executable('30-systemd-environment-d-generator',
1385 'src/environment-d-generator/environment-d-generator.c',
1386 include_directories : includes,
1387 link_with : [libshared],
1388 install_rpath : rootlibexecdir,
1389 install : true,
1390 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001391
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001392 meson.add_install_script(meson_make_symlink,
1393 join_paths(sysconfdir, 'environment'),
1394 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001395endif
1396
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001397if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001398 executable('systemd-hibernate-resume-generator',
1399 'src/hibernate-resume/hibernate-resume-generator.c',
1400 include_directories : includes,
1401 link_with : [libshared],
1402 install_rpath : rootlibexecdir,
1403 install : true,
1404 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001405
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001406 executable('systemd-hibernate-resume',
1407 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001408 include_directories : includes,
1409 link_with : [libshared],
1410 install_rpath : rootlibexecdir,
1411 install : true,
1412 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001413endif
1414
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001415if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001416 executable('systemd-gpt-auto-generator',
1417 'src/gpt-auto-generator/gpt-auto-generator.c',
1418 'src/basic/blkid-util.h',
1419 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001420 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001421 dependencies : libblkid,
1422 install_rpath : rootlibexecdir,
1423 install : true,
1424 install_dir : systemgeneratordir)
1425
1426 exe = executable('systemd-dissect',
1427 'src/dissect/dissect.c',
1428 include_directories : includes,
1429 link_with : [libshared],
1430 install_rpath : rootlibexecdir,
1431 install : true,
1432 install_dir : rootlibexecdir)
1433 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001434endif
1435
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001436if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001437 executable('systemd-resolved',
1438 systemd_resolved_sources,
Michael Biebl76c87412017-04-21 23:45:54 +02001439 gcrypt_util_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001440 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001441 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001442 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001443 libgcrypt,
1444 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001445 libm,
1446 libidn],
1447 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001448 install : true,
1449 install_dir : rootlibexecdir)
1450
1451 exe = executable('systemd-resolve',
1452 systemd_resolve_sources,
Michael Biebl76c87412017-04-21 23:45:54 +02001453 gcrypt_util_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001454 include_directories : includes,
1455 link_with : [libshared],
1456 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001457 libgcrypt,
1458 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001459 libm,
1460 libidn],
1461 install_rpath : rootlibexecdir,
1462 install : true)
1463 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001464endif
1465
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001466if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001467 executable('systemd-logind',
1468 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001469 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001470 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001471 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001472 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001473 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001474 install_rpath : rootlibexecdir,
1475 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001476 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001477
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001478 exe = executable('loginctl',
1479 loginctl_sources,
1480 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001481 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001482 dependencies : [threads,
1483 liblz4,
1484 libxz],
1485 install_rpath : rootlibexecdir,
1486 install : true,
1487 install_dir : rootbindir)
1488 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001489
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001490 exe = executable('systemd-inhibit',
1491 'src/login/inhibit.c',
1492 include_directories : includes,
1493 link_with : [libshared],
1494 install_rpath : rootlibexecdir,
1495 install : true,
1496 install_dir : rootbindir)
1497 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001498
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001499 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001500 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1501 pam_systemd = shared_library(
1502 'pam_systemd',
1503 pam_systemd_c,
1504 name_prefix : '',
1505 include_directories : includes,
1506 link_args : ['-shared',
1507 '-Wl,--version-script=' + version_script_arg],
1508 link_with : [libsystemd_internal,
1509 libshared_static],
1510 dependencies : [threads,
1511 libpam,
1512 libpam_misc],
1513 link_depends : pam_systemd_sym,
1514 install : true,
1515 install_dir : pamlibdir)
1516
1517 test('dlopen-pam_systemd',
1518 test_dlopen,
1519 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1520 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001521endif
1522
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001523if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001524 executable('systemd-user-sessions',
1525 'src/user-sessions/user-sessions.c',
1526 include_directories : includes,
1527 link_with : [libshared],
1528 install_rpath : rootlibexecdir,
1529 install : true,
1530 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001531endif
1532
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001533if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001534 exe = executable('bootctl',
1535 'src/boot/bootctl.c',
1536 include_directories : includes,
1537 link_with : [libshared],
1538 dependencies : [libblkid],
1539 install_rpath : rootlibexecdir,
1540 install : true)
1541 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001542endif
1543
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001544exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1545 include_directories : includes,
1546 link_with : [libshared],
1547 dependencies : [threads],
1548 install_rpath : rootlibexecdir,
1549 install : true)
1550public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001551
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001552exe = executable('systemctl', 'src/systemctl/systemctl.c',
1553 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001554 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001555 dependencies : [threads,
1556 libcap,
1557 libselinux,
1558 libxz,
1559 liblz4],
1560 install_rpath : rootlibexecdir,
1561 install : true,
1562 install_dir : rootbindir)
1563public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001564
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001565if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001566 executable('systemd-backlight',
1567 'src/backlight/backlight.c',
1568 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001569 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001570 install_rpath : rootlibexecdir,
1571 install : true,
1572 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001573endif
1574
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001575if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001576 executable('systemd-rfkill',
1577 'src/rfkill/rfkill.c',
1578 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001579 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001580 install_rpath : rootlibexecdir,
1581 install : true,
1582 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001583endif
1584
1585executable('systemd-system-update-generator',
1586 'src/system-update-generator/system-update-generator.c',
1587 include_directories : includes,
1588 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001589 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001590 install : true,
1591 install_dir : systemgeneratordir)
1592
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001593if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001594 executable('systemd-cryptsetup',
1595 'src/cryptsetup/cryptsetup.c',
1596 include_directories : includes,
1597 link_with : [libshared],
1598 dependencies : [libcryptsetup],
1599 install_rpath : rootlibexecdir,
1600 install : true,
1601 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001602
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001603 executable('systemd-cryptsetup-generator',
1604 'src/cryptsetup/cryptsetup-generator.c',
1605 include_directories : includes,
1606 link_with : [libshared],
1607 dependencies : [libcryptsetup],
1608 install_rpath : rootlibexecdir,
1609 install : true,
1610 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001611
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001612 executable('systemd-veritysetup',
1613 'src/veritysetup/veritysetup.c',
1614 include_directories : includes,
1615 link_with : [libshared],
1616 dependencies : [libcryptsetup],
1617 install_rpath : rootlibexecdir,
1618 install : true,
1619 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001620
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001621 executable('systemd-veritysetup-generator',
1622 'src/veritysetup/veritysetup-generator.c',
1623 include_directories : includes,
1624 link_with : [libshared],
1625 dependencies : [libcryptsetup],
1626 install_rpath : rootlibexecdir,
1627 install : true,
1628 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001629endif
1630
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001631if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001632 executable('systemd-sysv-generator',
1633 'src/sysv-generator/sysv-generator.c',
1634 include_directories : includes,
1635 link_with : [libshared],
1636 install_rpath : rootlibexecdir,
1637 install : true,
1638 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001639
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001640 executable('systemd-rc-local-generator',
1641 'src/rc-local-generator/rc-local-generator.c',
1642 include_directories : includes,
1643 link_with : [libshared],
1644 install_rpath : rootlibexecdir,
1645 install : true,
1646 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001647endif
1648
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001649if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001650 executable('systemd-hostnamed',
1651 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001652 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001653 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001654 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001655 install : true,
1656 install_dir : rootlibexecdir)
1657
1658 exe = executable('hostnamectl',
1659 'src/hostname/hostnamectl.c',
1660 include_directories : includes,
1661 link_with : [libshared],
1662 install_rpath : rootlibexecdir,
1663 install : true)
1664 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001665endif
1666
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001667if conf.get('ENABLE_LOCALED') == 1
1668 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001669 # logind will load libxkbcommon.so dynamically on its own
1670 deps = [libdl]
1671 else
1672 deps = []
1673 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001674
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001675 executable('systemd-localed',
1676 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001677 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001678 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001679 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001680 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001681 install : true,
1682 install_dir : rootlibexecdir)
1683
1684 exe = executable('localectl',
1685 localectl_sources,
1686 include_directories : includes,
1687 link_with : [libshared],
1688 install_rpath : rootlibexecdir,
1689 install : true)
1690 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001691endif
1692
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001693if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001694 executable('systemd-timedated',
1695 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001696 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001697 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001698 install_rpath : rootlibexecdir,
1699 install : true,
1700 install_dir : rootlibexecdir)
1701
1702 exe = executable('timedatectl',
1703 'src/timedate/timedatectl.c',
1704 include_directories : includes,
1705 install_rpath : rootlibexecdir,
1706 link_with : [libshared],
1707 install : true)
1708 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001709endif
1710
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001711if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001712 executable('systemd-timesyncd',
1713 systemd_timesyncd_sources,
1714 include_directories : includes,
1715 link_with : [libshared],
1716 dependencies : [threads,
1717 libm],
1718 install_rpath : rootlibexecdir,
1719 install : true,
1720 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001721endif
1722
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001723if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001724 executable('systemd-machined',
1725 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001726 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001727 link_with : [libmachine_core,
1728 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001729 install_rpath : rootlibexecdir,
1730 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001731 install_dir : rootlibexecdir)
1732
1733 exe = executable('machinectl',
1734 'src/machine/machinectl.c',
1735 include_directories : includes,
1736 link_with : [libshared],
1737 dependencies : [threads,
1738 libxz,
1739 liblz4],
1740 install_rpath : rootlibexecdir,
1741 install : true,
1742 install_dir : rootbindir)
1743 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001744endif
1745
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001746if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001747 executable('systemd-importd',
1748 systemd_importd_sources,
1749 include_directories : includes,
1750 link_with : [libshared],
1751 dependencies : [threads],
1752 install_rpath : rootlibexecdir,
1753 install : true,
1754 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001755
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001756 systemd_pull = executable('systemd-pull',
1757 systemd_pull_sources,
1758 include_directories : includes,
1759 link_with : [libshared],
1760 dependencies : [libcurl,
1761 libz,
1762 libbzip2,
1763 libxz,
1764 libgcrypt],
1765 install_rpath : rootlibexecdir,
1766 install : true,
1767 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001768
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001769 systemd_import = executable('systemd-import',
1770 systemd_import_sources,
1771 include_directories : includes,
1772 link_with : [libshared],
1773 dependencies : [libcurl,
1774 libz,
1775 libbzip2,
1776 libxz],
1777 install_rpath : rootlibexecdir,
1778 install : true,
1779 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001780
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001781 systemd_export = executable('systemd-export',
1782 systemd_export_sources,
1783 include_directories : includes,
1784 link_with : [libshared],
1785 dependencies : [libcurl,
1786 libz,
1787 libbzip2,
1788 libxz],
1789 install_rpath : rootlibexecdir,
1790 install : true,
1791 install_dir : rootlibexecdir)
1792 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001793endif
1794
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001795if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001796 exe = executable('systemd-journal-upload',
1797 systemd_journal_upload_sources,
1798 include_directories : includes,
1799 link_with : [libshared],
1800 dependencies : [threads,
1801 libcurl,
1802 libgnutls,
1803 libxz,
1804 liblz4],
1805 install_rpath : rootlibexecdir,
1806 install : true,
1807 install_dir : rootlibexecdir)
1808 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001809endif
1810
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001811if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001812 s_j_remote = executable('systemd-journal-remote',
1813 systemd_journal_remote_sources,
1814 include_directories : includes,
1815 link_with : [libshared],
1816 dependencies : [threads,
1817 libmicrohttpd,
1818 libgnutls,
1819 libxz,
1820 liblz4],
1821 install_rpath : rootlibexecdir,
1822 install : true,
1823 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001824
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001825 s_j_gatewayd = executable('systemd-journal-gatewayd',
1826 systemd_journal_gatewayd_sources,
1827 include_directories : includes,
1828 link_with : [libshared],
1829 dependencies : [threads,
1830 libmicrohttpd,
1831 libgnutls,
1832 libxz,
1833 liblz4],
1834 install_rpath : rootlibexecdir,
1835 install : true,
1836 install_dir : rootlibexecdir)
1837 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001838endif
1839
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001840if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001841 executable('systemd-coredump',
1842 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001843 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001844 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001845 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001846 libacl,
1847 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001848 libxz,
1849 liblz4],
1850 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001851 install : true,
1852 install_dir : rootlibexecdir)
1853
1854 exe = executable('coredumpctl',
1855 coredumpctl_sources,
1856 include_directories : includes,
1857 link_with : [libshared],
1858 dependencies : [threads,
1859 libxz,
1860 liblz4],
1861 install_rpath : rootlibexecdir,
1862 install : true)
1863 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001864endif
1865
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001866if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001867 exe = executable('systemd-binfmt',
1868 'src/binfmt/binfmt.c',
1869 include_directories : includes,
1870 link_with : [libshared],
1871 install_rpath : rootlibexecdir,
1872 install : true,
1873 install_dir : rootlibexecdir)
1874 public_programs += [exe]
1875
1876 meson.add_install_script('sh', '-c',
1877 mkdir_p.format(binfmtdir))
1878 meson.add_install_script('sh', '-c',
1879 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
1880endif
1881
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001882if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001883 executable('systemd-vconsole-setup',
1884 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001885 include_directories : includes,
1886 link_with : [libshared],
1887 install_rpath : rootlibexecdir,
1888 install : true,
1889 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001890endif
1891
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001892if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001893 executable('systemd-random-seed',
1894 'src/random-seed/random-seed.c',
1895 include_directories : includes,
1896 link_with : [libshared],
1897 install_rpath : rootlibexecdir,
1898 install : true,
1899 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001900endif
1901
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001902if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001903 executable('systemd-firstboot',
1904 'src/firstboot/firstboot.c',
1905 include_directories : includes,
1906 link_with : [libshared],
1907 dependencies : [libcrypt],
1908 install_rpath : rootlibexecdir,
1909 install : true,
1910 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001911endif
1912
1913executable('systemd-remount-fs',
1914 'src/remount-fs/remount-fs.c',
1915 'src/core/mount-setup.c',
1916 'src/core/mount-setup.h',
1917 include_directories : includes,
1918 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001919 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001920 install : true,
1921 install_dir : rootlibexecdir)
1922
1923executable('systemd-machine-id-setup',
1924 'src/machine-id-setup/machine-id-setup-main.c',
1925 'src/core/machine-id-setup.c',
1926 'src/core/machine-id-setup.h',
1927 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001928 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001929 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001930 install : true,
1931 install_dir : rootbindir)
1932
1933executable('systemd-fsck',
1934 'src/fsck/fsck.c',
1935 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001936 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001937 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001938 install : true,
1939 install_dir : rootlibexecdir)
1940
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02001941executable('systemd-growfs',
1942 'src/partition/growfs.c',
1943 include_directories : includes,
1944 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01001945 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02001946 install_rpath : rootlibexecdir,
1947 install : true,
1948 install_dir : rootlibexecdir)
1949
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01001950executable('systemd-makefs',
1951 'src/partition/makefs.c',
1952 include_directories : includes,
1953 link_with : [libshared],
1954 install_rpath : rootlibexecdir,
1955 install : true,
1956 install_dir : rootlibexecdir)
1957
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001958executable('systemd-sleep',
1959 'src/sleep/sleep.c',
1960 include_directories : includes,
1961 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001962 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001963 install : true,
1964 install_dir : rootlibexecdir)
1965
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001966exe = executable('systemd-sysctl',
1967 'src/sysctl/sysctl.c',
1968 include_directories : includes,
1969 link_with : [libshared],
1970 install_rpath : rootlibexecdir,
1971 install : true,
1972 install_dir : rootlibexecdir)
1973public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001974
1975executable('systemd-ac-power',
1976 'src/ac-power/ac-power.c',
1977 include_directories : includes,
1978 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001979 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001980 install : true,
1981 install_dir : rootlibexecdir)
1982
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001983exe = executable('systemd-detect-virt',
1984 'src/detect-virt/detect-virt.c',
1985 include_directories : includes,
1986 link_with : [libshared],
1987 install_rpath : rootlibexecdir,
1988 install : true)
1989public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001990
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001991exe = executable('systemd-delta',
1992 'src/delta/delta.c',
1993 include_directories : includes,
1994 link_with : [libshared],
1995 install_rpath : rootlibexecdir,
1996 install : true)
1997public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001998
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001999exe = executable('systemd-escape',
2000 'src/escape/escape.c',
2001 include_directories : includes,
2002 link_with : [libshared],
2003 install_rpath : rootlibexecdir,
2004 install : true,
2005 install_dir : rootbindir)
2006public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002007
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002008exe = executable('systemd-notify',
2009 'src/notify/notify.c',
2010 include_directories : includes,
2011 link_with : [libshared],
2012 install_rpath : rootlibexecdir,
2013 install : true,
2014 install_dir : rootbindir)
2015public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002016
2017executable('systemd-volatile-root',
2018 'src/volatile-root/volatile-root.c',
2019 include_directories : includes,
2020 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002021 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002022 install : true,
2023 install_dir : rootlibexecdir)
2024
2025executable('systemd-cgroups-agent',
2026 'src/cgroups-agent/cgroups-agent.c',
2027 include_directories : includes,
2028 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002029 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002030 install : true,
2031 install_dir : rootlibexecdir)
2032
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002033exe = executable('systemd-path',
2034 'src/path/path.c',
2035 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002036 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002037 install_rpath : rootlibexecdir,
2038 install : true)
2039public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002040
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002041exe = executable('systemd-ask-password',
2042 'src/ask-password/ask-password.c',
2043 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002044 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002045 install_rpath : rootlibexecdir,
2046 install : true,
2047 install_dir : rootbindir)
2048public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002049
2050executable('systemd-reply-password',
2051 'src/reply-password/reply-password.c',
2052 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002053 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002054 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002055 install : true,
2056 install_dir : rootlibexecdir)
2057
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002058exe = executable('systemd-tty-ask-password-agent',
2059 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2060 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002061 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002062 install_rpath : rootlibexecdir,
2063 install : true,
2064 install_dir : rootbindir)
2065public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002066
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002067exe = executable('systemd-cgls',
2068 'src/cgls/cgls.c',
2069 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002070 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002071 install_rpath : rootlibexecdir,
2072 install : true)
2073public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002074
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002075exe = executable('systemd-cgtop',
2076 'src/cgtop/cgtop.c',
2077 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002078 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002079 install_rpath : rootlibexecdir,
2080 install : true)
2081public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002082
2083executable('systemd-initctl',
2084 'src/initctl/initctl.c',
2085 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002086 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002087 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002088 install : true,
2089 install_dir : rootlibexecdir)
2090
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002091exe = executable('systemd-mount',
2092 'src/mount/mount-tool.c',
2093 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002094 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002095 install_rpath : rootlibexecdir,
2096 install : true)
2097public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002098
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002099meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002100 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002101
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002102exe = executable('systemd-run',
2103 'src/run/run.c',
2104 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002105 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002106 install_rpath : rootlibexecdir,
2107 install : true)
2108public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002109
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002110exe = executable('systemd-stdio-bridge',
2111 'src/stdio-bridge/stdio-bridge.c',
2112 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002113 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002114 install_rpath : rootlibexecdir,
2115 install : true)
2116public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002117
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002118exe = executable('busctl',
2119 'src/busctl/busctl.c',
2120 'src/busctl/busctl-introspect.c',
2121 'src/busctl/busctl-introspect.h',
2122 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002123 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002124 install_rpath : rootlibexecdir,
2125 install : true)
2126public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002127
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002128if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002129 exe = executable('systemd-sysusers',
2130 'src/sysusers/sysusers.c',
2131 include_directories : includes,
2132 link_with : [libshared],
2133 install_rpath : rootlibexecdir,
2134 install : true,
2135 install_dir : rootbindir)
2136 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002137endif
2138
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002139if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002140 exe = executable('systemd-tmpfiles',
2141 'src/tmpfiles/tmpfiles.c',
2142 include_directories : includes,
2143 link_with : [libshared],
2144 dependencies : [libacl],
2145 install_rpath : rootlibexecdir,
2146 install : true,
2147 install_dir : rootbindir)
2148 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002149
2150 test('test-systemd-tmpfiles',
2151 test_systemd_tmpfiles_py,
2152 args : exe.full_path())
2153 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002154endif
2155
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002156if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002157 exe = executable('systemd-hwdb',
2158 'src/hwdb/hwdb.c',
2159 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2160 include_directories : includes,
Michael Biebl0da6f392017-04-21 18:32:14 +02002161 link_with : [libudev_internal],
2162 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002163 install : true,
2164 install_dir : rootbindir)
2165 public_programs += [exe]
2166endif
2167
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002168if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002169 executable('systemd-quotacheck',
2170 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002171 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002172 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002173 install_rpath : rootlibexecdir,
2174 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002175 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002176endif
2177
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002178exe = executable('systemd-socket-proxyd',
2179 'src/socket-proxy/socket-proxyd.c',
2180 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002181 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002182 dependencies : [threads],
2183 install_rpath : rootlibexecdir,
2184 install : true,
2185 install_dir : rootlibexecdir)
2186public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002187
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002188exe = executable('systemd-udevd',
2189 systemd_udevd_sources,
2190 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002191 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002192 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002193 libsystemd_network,
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002194 libudev_internal],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002195 dependencies : [threads,
2196 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002197 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002198 libacl,
2199 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002200 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002201 install : true,
2202 install_dir : rootlibexecdir)
2203public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002204
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002205exe = executable('udevadm',
2206 udevadm_sources,
2207 include_directories : includes,
2208 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002209 libsystemd_network,
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002210 libudev_internal],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002211 dependencies : [threads,
2212 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002213 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002214 libacl,
2215 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002216 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002217 install : true,
2218 install_dir : rootbindir)
2219public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002220
2221executable('systemd-shutdown',
2222 systemd_shutdown_sources,
2223 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002224 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002225 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002226 install : true,
2227 install_dir : rootlibexecdir)
2228
2229executable('systemd-update-done',
2230 'src/update-done/update-done.c',
2231 include_directories : includes,
2232 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002233 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002234 install : true,
2235 install_dir : rootlibexecdir)
2236
2237executable('systemd-update-utmp',
2238 'src/update-utmp/update-utmp.c',
2239 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002240 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002241 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002242 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002243 install : true,
2244 install_dir : rootlibexecdir)
2245
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002246if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002247 executable('systemd-modules-load',
2248 'src/modules-load/modules-load.c',
2249 include_directories : includes,
2250 link_with : [libshared],
2251 dependencies : [libkmod],
2252 install_rpath : rootlibexecdir,
2253 install : true,
2254 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002255
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002256 meson.add_install_script('sh', '-c',
2257 mkdir_p.format(modulesloaddir))
2258 meson.add_install_script('sh', '-c',
2259 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002260endif
2261
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002262exe = executable('systemd-nspawn',
2263 systemd_nspawn_sources,
2264 'src/core/mount-setup.c', # FIXME: use a variable?
2265 'src/core/mount-setup.h',
2266 'src/core/loopback-setup.c',
2267 'src/core/loopback-setup.h',
2268 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002269 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002270 dependencies : [libacl,
2271 libblkid,
2272 libseccomp,
2273 libselinux],
2274 install_rpath : rootlibexecdir,
2275 install : true)
2276public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002277
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002278if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002279 executable('systemd-networkd',
2280 systemd_networkd_sources,
2281 include_directories : includes,
2282 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002283 libsystemd_network,
2284 libudev_internal,
2285 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002286 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002287 install_rpath : rootlibexecdir,
2288 install : true,
2289 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002290
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002291 executable('systemd-networkd-wait-online',
2292 systemd_networkd_wait_online_sources,
2293 include_directories : includes,
2294 link_with : [libnetworkd_core,
2295 libshared],
2296 install_rpath : rootlibexecdir,
2297 install : true,
2298 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002299
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002300 exe = executable('networkctl',
2301 networkctl_sources,
2302 include_directories : includes,
2303 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002304 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002305 install_rpath : rootlibexecdir,
2306 install : true,
2307 install_dir : rootbindir)
2308 public_programs += [exe]
2309endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002310############################################################
2311
2312foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002313 sources = tuple[0]
2314 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2315 dependencies = tuple[2]
2316 condition = tuple.length() >= 4 ? tuple[3] : ''
2317 type = tuple.length() >= 5 ? tuple[4] : ''
2318 defs = tuple.length() >= 6 ? tuple[5] : []
2319 incs = tuple.length() >= 7 ? tuple[6] : includes
2320 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002321
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002322 name = sources[0].split('/')[-1].split('.')[0]
2323 if type.startswith('timeout=')
2324 timeout = type.split('=')[1].to_int()
2325 type = ''
2326 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002327
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002328 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002329 exe = executable(
2330 name,
2331 sources,
2332 include_directories : incs,
2333 link_with : link_with,
2334 dependencies : dependencies,
2335 c_args : defs,
2336 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002337 install : install_tests,
2338 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002339
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002340 if type == 'manual'
2341 message('@0@ is a manual test'.format(name))
2342 elif type == 'unsafe' and want_tests != 'unsafe'
2343 message('@0@ is an unsafe test'.format(name))
2344 else
2345 test(name, exe,
2346 env : test_env,
2347 timeout : timeout)
2348 endif
2349 else
2350 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2351 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002352endforeach
2353
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002354test_libsystemd_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002355 'test-libsystemd-sym',
2356 test_libsystemd_sym_c,
2357 include_directories : includes,
2358 link_with : [libsystemd],
2359 install : install_tests,
2360 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002361test('test-libsystemd-sym',
2362 test_libsystemd_sym)
2363
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002364test_libudev_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002365 'test-libudev-sym',
2366 test_libudev_sym_c,
2367 include_directories : includes,
2368 c_args : ['-Wno-deprecated-declarations'],
2369 link_with : [libudev],
2370 install : install_tests,
2371 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002372test('test-libudev-sym',
2373 test_libudev_sym)
2374
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002375############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002376
2377make_directive_index_py = find_program('tools/make-directive-index.py')
2378make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002379xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002380hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002381
2382subdir('units')
2383subdir('sysctl.d')
2384subdir('sysusers.d')
2385subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002386subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002387subdir('hwdb')
2388subdir('network')
2389subdir('man')
2390subdir('shell-completion/bash')
2391subdir('shell-completion/zsh')
2392subdir('docs/sysvinit')
2393subdir('docs/var-log')
2394
2395# FIXME: figure out if the warning is true:
2396# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2397install_subdir('factory/etc',
2398 install_dir : factorydir)
2399
2400
2401install_data('xorg/50-systemd-user.sh',
2402 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002403install_data('modprobe.d/systemd.conf',
2404 install_dir : modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002405install_data('README',
2406 'NEWS',
2407 'CODING_STYLE',
2408 'DISTRO_PORTING',
2409 'ENVIRONMENT.md',
2410 'LICENSE.GPL2',
2411 'LICENSE.LGPL2.1',
2412 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2413 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002414
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002415meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2416meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2417
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002418############################################################
2419
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002420meson_check_help = find_program('tools/meson-check-help.sh')
2421
2422foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002423 name = exec.full_path().split('/')[-1]
2424 test('check-help-' + name,
2425 meson_check_help,
2426 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002427endforeach
2428
2429############################################################
2430
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002431if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002432 all_files = run_command(
2433 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002434 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002435 'ls-files',
2436 ':/*.[ch]'])
2437 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002438
userwithuide85a6902017-08-09 13:41:44 +00002439 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002440 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002441 output : 'tags',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002442 command : ['env', 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002443 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002444 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002445 output : 'ctags',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002446 command : ['env', 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002447endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002448
2449if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002450 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002451 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002452 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002453 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002454endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002455
2456if git.found()
2457 git_head = run_command(
2458 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002459 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002460 'rev-parse', 'HEAD']).stdout().strip()
2461 git_head_short = run_command(
2462 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002463 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002464 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2465
2466 run_target(
2467 'git-snapshot',
2468 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002469 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002470 git_head_short),
2471 '--prefix', 'systemd-@0@/'.format(git_head),
2472 'HEAD'])
2473endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002474
2475############################################################
2476
2477status = [
2478 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2479
Yu Watanabe359b4962017-11-25 20:35:24 +09002480 'prefix directory: @0@'.format(prefixdir),
2481 'rootprefix directory: @0@'.format(rootprefixdir),
2482 'sysconf directory: @0@'.format(sysconfdir),
2483 'include directory: @0@'.format(includedir),
2484 'lib directory: @0@'.format(libdir),
2485 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002486 'SysV init scripts: @0@'.format(sysvinit_path),
2487 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002488 'PAM modules directory: @0@'.format(pamlibdir),
2489 'PAM configuration directory: @0@'.format(pamconfdir),
2490 'RPM macros directory: @0@'.format(rpmmacrosdir),
2491 'modprobe.d directory: @0@'.format(modprobedir),
2492 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2493 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2494 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2495 'bash completions directory: @0@'.format(bashcompletiondir),
2496 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002497 'extra start script: @0@'.format(get_option('rc-local')),
2498 'extra stop script: @0@'.format(get_option('halt-local')),
2499 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2500 get_option('debug-tty')),
2501 'TTY GID: @0@'.format(tty_gid),
2502 'maximum system UID: @0@'.format(system_uid_max),
2503 'maximum system GID: @0@'.format(system_gid_max),
2504 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002505 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002506 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002507 'support URL: @0@'.format(support_url),
2508 'nobody user name: @0@'.format(get_option('nobody-user')),
2509 'nobody group name: @0@'.format(get_option('nobody-group')),
2510 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002511 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002512
2513 'default DNSSEC mode: @0@'.format(default_dnssec),
2514 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2515 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2516
2517alt_dns_servers = '\n '.join(dns_servers.split(' '))
2518alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2519status += [
2520 'default DNS servers: @0@'.format(alt_dns_servers),
2521 'default NTP servers: @0@'.format(alt_ntp_servers)]
2522
2523alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2524 '@@0@'.format(time_epoch)).stdout().strip()
2525status += [
2526 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2527
2528# TODO:
2529# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2530# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2531# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2532
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002533if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002534 status += [
2535 'efi arch: @0@'.format(efi_arch)]
2536
2537 if have_gnu_efi
2538 status += [
2539 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2540 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002541 'EFI lib directory: @0@'.format(efi_libdir),
2542 'EFI lds directory: @0@'.format(efi_ldsdir),
2543 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002544 endif
2545endif
2546
2547found = []
2548missing = []
2549
2550foreach tuple : [
2551 ['libcryptsetup'],
2552 ['PAM'],
2553 ['AUDIT'],
2554 ['IMA'],
2555 ['AppArmor'],
2556 ['SELinux'],
2557 ['SECCOMP'],
2558 ['SMACK'],
2559 ['zlib'],
2560 ['xz'],
2561 ['lz4'],
2562 ['bzip2'],
2563 ['ACL'],
2564 ['gcrypt'],
2565 ['qrencode'],
2566 ['microhttpd'],
2567 ['gnutls'],
2568 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002569 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002570 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002571 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002572 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002573 ['libiptc'],
2574 ['elfutils'],
2575 ['binfmt'],
2576 ['vconsole'],
2577 ['quotacheck'],
2578 ['tmpfiles'],
2579 ['environment.d'],
2580 ['sysusers'],
2581 ['firstboot'],
2582 ['randomseed'],
2583 ['backlight'],
2584 ['rfkill'],
2585 ['logind'],
2586 ['machined'],
2587 ['importd'],
2588 ['hostnamed'],
2589 ['timedated'],
2590 ['timesyncd'],
2591 ['localed'],
2592 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002593 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002594 ['coredump'],
2595 ['polkit'],
2596 ['legacy pkla', install_polkit_pkla],
2597 ['efi'],
2598 ['gnu-efi', have_gnu_efi],
2599 ['kmod'],
2600 ['xkbcommon'],
2601 ['blkid'],
2602 ['dbus'],
2603 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002604 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002605 ['hwdb'],
2606 ['tpm'],
2607 ['man pages', want_man],
2608 ['html pages', want_html],
2609 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002610 ['split /usr', conf.get('HAVE_SPLIT_USR') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002611 ['SysV compat'],
2612 ['utmp'],
2613 ['ldconfig'],
2614 ['hibernate'],
2615 ['adm group', get_option('adm-group')],
2616 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002617 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002618 ['debug hashmap'],
2619 ['debug mmap cache'],
2620]
2621
2622 cond = tuple.get(1, '')
2623 if cond == ''
2624 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2625 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002626 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002627 endif
2628 if cond
2629 found += [tuple[0]]
2630 else
2631 missing += [tuple[0]]
2632 endif
2633endforeach
2634
2635status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002636 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002637 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002638 '',
2639 'disabled features: @0@'.format(', '.join(missing)),
2640 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002641message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002642
2643if rootprefixdir != rootprefix_default
2644 message('WARNING:\n' +
2645 ' Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2646 ' systemd used fixed names for unit file directories and other paths, so anything\n' +
2647 ' except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
2648endif