blob: e497924cb80a4922b12a94a48fa5e202aba8e3aa [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 Poettering69cd51d2018-01-25 14:18:14 +010019 version : '237',
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 Poettering69cd51d2018-01-25 14:18:14 +010030libsystemd_version = '0.21.0'
31libudev_version = '1.6.9'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020032
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040033# We need the same data in three different formats, ugh!
34# Also, for hysterical reasons, we use different variable
35# names, sometimes. Not all variables are included in every
36# set. Ugh, ugh, ugh!
37conf = configuration_data()
38conf.set_quoted('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version())
39conf.set_quoted('PACKAGE_VERSION', meson.project_version())
40
41substs = configuration_data()
42substs.set('PACKAGE_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
43substs.set('PACKAGE_VERSION', meson.project_version())
44
45m4_defines = []
46
47#####################################################################
48
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040049# Try to install the git pre-commit hook
50git_hook = run_command(join_paths(meson.source_root(), 'tools/add-git-hook.sh'))
51if git_hook.returncode() == 0
52 message(git_hook.stdout().strip())
53endif
54
55#####################################################################
56
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010057split_usr = get_option('split-usr')
58conf.set10('HAVE_SPLIT_USR', split_usr)
59
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010060rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010061# Unusual rootprefixdir values are used by some distros
62# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010063rootprefix_default = get_option('split-usr') ? '/' : '/usr'
64if rootprefixdir == ''
65 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010066endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040067
68sysvinit_path = get_option('sysvinit-path')
69sysvrcnd_path = get_option('sysvrcnd-path')
Max Harmathy54248242017-12-15 16:05:25 +010070have = sysvinit_path != '' and sysvrcnd_path != ''
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020071conf.set10('HAVE_SYSV_COMPAT', have,
72 description : 'SysV init scripts and rcN.d links are supported')
73m4_defines += have ? ['-DHAVE_SYSV_COMPAT'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040074
75# join_paths ignore the preceding arguments if an absolute component is
76# encountered, so this should canonicalize various paths when they are
77# absolute or relative.
78prefixdir = get_option('prefix')
79if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040080 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040081endif
82bindir = join_paths(prefixdir, get_option('bindir'))
83libdir = join_paths(prefixdir, get_option('libdir'))
84sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
85includedir = join_paths(prefixdir, get_option('includedir'))
86datadir = join_paths(prefixdir, get_option('datadir'))
87localstatedir = join_paths('/', get_option('localstatedir'))
88
89rootbindir = join_paths(rootprefixdir, 'bin')
90rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
91
92rootlibdir = get_option('rootlibdir')
93if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040094 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040095endif
96
97# Dirs of external packages
Michael Bieble17e5ba2017-04-13 10:30:56 -040098pkgconfigdatadir = join_paths(datadir, 'pkgconfig')
99pkgconfiglibdir = join_paths(libdir, 'pkgconfig')
100polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
101polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
102polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
103varlogdir = join_paths(localstatedir, 'log')
104xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900105rpmmacrosdir = get_option('rpmmacrosdir')
106if rpmmacrosdir != 'no'
107 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
108endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200109modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400110
111# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400112pkgdatadir = join_paths(datadir, 'systemd')
113environmentdir = join_paths(prefixdir, 'lib/environment.d')
114pkgsysconfdir = join_paths(sysconfdir, 'systemd')
115userunitdir = join_paths(prefixdir, 'lib/systemd/user')
116userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
117tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
118sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
119sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
120binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
121modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
122networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
123pkgincludedir = join_paths(includedir, 'systemd')
124systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
125usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
126systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
127userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
128systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
129systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
130systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
131systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
132udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
133udevhomedir = udevlibexecdir
134udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
135udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
136catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
137kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
138factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400139bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
140testsdir = join_paths(prefixdir, 'lib/systemd/tests')
141systemdstatedir = join_paths(localstatedir, 'lib/systemd')
142catalogstatedir = join_paths(systemdstatedir, 'catalog')
143randomseeddir = join_paths(localstatedir, 'lib/systemd')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400144
tblume75aaade2018-02-01 22:46:15 +0100145docdir = get_option('docdir')
146if docdir == ''
147 docdir = join_paths(datadir, 'doc/systemd')
148endif
149
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400150dbuspolicydir = get_option('dbuspolicydir')
151if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400152 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400153endif
154
155dbussessionservicedir = get_option('dbussessionservicedir')
156if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400157 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400158endif
159
160dbussystemservicedir = get_option('dbussystemservicedir')
161if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400162 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400163endif
164
165pamlibdir = get_option('pamlibdir')
166if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400167 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400168endif
169
170pamconfdir = get_option('pamconfdir')
171if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400172 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400173endif
174
175conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400176conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400177conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
178conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
179conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400180conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
181conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400182conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400183conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
184conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400185conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
186conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
187conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
188conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100189conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100190conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400191conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
192conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
193conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
194conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
195conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100196conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400197conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400198conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
199conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400200conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
201conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
202conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
203conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
204conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
205conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400206conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
207conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400208conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400209conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400210conf.set_quoted('LIBDIR', libdir)
211conf.set_quoted('ROOTLIBDIR', rootlibdir)
212conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
213conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400214conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
215conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
216conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
217conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
218conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
219conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400220
221conf.set_quoted('ABS_BUILD_DIR', meson.build_root())
222conf.set_quoted('ABS_SRC_DIR', meson.source_root())
223
224substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400225substs.set('exec_prefix', prefixdir)
226substs.set('libdir', libdir)
227substs.set('rootlibdir', rootlibdir)
228substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400229substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400230substs.set('bindir', bindir)
231substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400232substs.set('rootlibexecdir', rootlibexecdir)
233substs.set('systemunitdir', systemunitdir)
234substs.set('userunitdir', userunitdir)
235substs.set('systempresetdir', systempresetdir)
236substs.set('userpresetdir', userpresetdir)
237substs.set('udevhwdbdir', udevhwdbdir)
238substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400239substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400240substs.set('catalogdir', catalogdir)
241substs.set('tmpfilesdir', tmpfilesdir)
242substs.set('sysusersdir', sysusersdir)
243substs.set('sysctldir', sysctldir)
244substs.set('binfmtdir', binfmtdir)
245substs.set('modulesloaddir', modulesloaddir)
246substs.set('systemgeneratordir', systemgeneratordir)
247substs.set('usergeneratordir', usergeneratordir)
248substs.set('systemenvgeneratordir', systemenvgeneratordir)
249substs.set('userenvgeneratordir', userenvgeneratordir)
250substs.set('systemshutdowndir', systemshutdowndir)
251substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400252substs.set('VARLOGDIR', varlogdir)
253substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400254substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
255substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400256substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
257substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
258substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
259substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400260
261#####################################################################
262
263cc = meson.get_compiler('c')
264pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400265check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100266meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400267
Adam Duskett08318a22018-01-15 06:25:46 -0500268if get_option('tests') != 'false'
269 cxx = find_program('c++', required : false)
270 if cxx.found()
271 # Used only for tests
272 add_languages('cpp')
273 endif
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400274endif
275
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500276want_ossfuzz = get_option('oss-fuzz')
277want_libfuzzer = get_option('llvm-fuzz')
278fuzzer_build = want_ossfuzz or want_libfuzzer
279if want_ossfuzz and want_libfuzzer
280 error('only one of oss-fuzz and llvm-fuzz can be specified')
281endif
282if want_libfuzzer
283 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
284endif
285if want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500286 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
287endif
288
Zbigniew Jędrzejewski-Szmek75cf1d62017-07-04 17:59:15 -0400289foreach arg : ['-Wextra',
Zbigniew Jędrzejewski-Szmek70160ce2017-10-03 12:11:49 +0200290 '-Werror=undef',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400291 '-Wlogical-op',
292 '-Wmissing-include-dirs',
293 '-Wold-style-definition',
294 '-Wpointer-arith',
295 '-Winit-self',
296 '-Wdeclaration-after-statement',
297 '-Wfloat-equal',
298 '-Wsuggest-attribute=noreturn',
299 '-Werror=missing-prototypes',
300 '-Werror=implicit-function-declaration',
301 '-Werror=missing-declarations',
302 '-Werror=return-type',
303 '-Werror=incompatible-pointer-types',
304 '-Werror=format=2',
305 '-Wstrict-prototypes',
306 '-Wredundant-decls',
307 '-Wmissing-noreturn',
Zbigniew Jędrzejewski-Szmek97279d82017-11-20 14:23:40 +0100308 '-Wimplicit-fallthrough=5',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400309 '-Wshadow',
310 '-Wendif-labels',
311 '-Wstrict-aliasing=2',
312 '-Wwrite-strings',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400313 '-Werror=overflow',
314 '-Wdate-time',
315 '-Wnested-externs',
316 '-ffast-math',
317 '-fno-common',
318 '-fdiagnostics-show-option',
319 '-fno-strict-aliasing',
320 '-fvisibility=hidden',
321 '-fstack-protector',
322 '-fstack-protector-strong',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400323 '--param=ssp-buffer-size=4',
324 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400325 if cc.has_argument(arg)
326 add_project_arguments(arg, language : 'c')
327 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400328endforeach
329
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500330# the oss-fuzz fuzzers are not built with -fPIE, so don't
331# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500332if not fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500333 if cc.has_argument('-fPIE')
334 add_project_arguments('-fPIE', language : 'c')
335 endif
336endif
337
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400338# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
339# arguments, just emits a warnings. So test for the "positive" version instead.
340foreach arg : ['unused-parameter',
341 'missing-field-initializers',
342 'unused-result',
Zbigniew Jędrzejewski-Szmekfb1b5882017-09-04 19:49:12 +0300343 'format-signedness',
344 'error=nonnull', # work-around for gcc 7.1 turning this on on its own
345 ]
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400346 if cc.has_argument('-W' + arg)
347 add_project_arguments('-Wno-' + arg, language : 'c')
348 endif
349endforeach
350
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400351if cc.compiles('
352 #include <time.h>
353 #include <inttypes.h>
354 typedef uint64_t usec_t;
355 usec_t now(clockid_t clock);
356 int main(void) {
357 struct timespec now;
358 return 0;
359 }
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400360', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400361 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400362endif
363
364if cc.get_id() == 'clang'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400365 foreach arg : ['-Wno-typedef-redefinition',
366 '-Wno-gnu-variable-sized-type-not-at-end',
367 ]
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400368 if cc.has_argument(arg,
369 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400370 add_project_arguments(arg, language : 'c')
371 endif
372 endforeach
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400373endif
374
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400375link_test_c = files('tools/meson-link-test.c')
376
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400377# --as-needed and --no-undefined are provided by meson by default,
378# run mesonconf to see what is enabled
379foreach arg : ['-Wl,-z,relro',
380 '-Wl,-z,now',
381 '-pie',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400382 ]
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400383
384 have = run_command(check_compilation_sh,
385 cc.cmd_array(), '-x', 'c', arg,
386 '-include', link_test_c).returncode() == 0
387 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500388 if have and (arg != '-pie' or not fuzzer_build)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400389 add_project_link_arguments(arg, language : 'c')
390 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400391endforeach
392
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100393# Check if various sanitizers are supported
394sanitizers = []
395foreach arg : ['address']
396
397 have = run_command(check_compilation_sh,
398 cc.cmd_array(), '-x', 'c',
399 '-fsanitize=@0@'.format(arg),
400 '-include', link_test_c).returncode() == 0
401 message('@0@ sanitizer supported: @1@'.format(arg, have ? 'yes' : 'no'))
402 if have
403 sanitizers += arg
404 endif
405endforeach
406
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400407if get_option('buildtype') != 'debug'
408 foreach arg : ['-ffunction-sections',
409 '-fdata-sections']
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400410 if cc.has_argument(arg,
411 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400412 add_project_arguments(arg, language : 'c')
413 endif
414 endforeach
415
416 foreach arg : ['-Wl,--gc-sections']
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400417 have = run_command(check_compilation_sh,
418 cc.cmd_array(), '-x', 'c', arg,
419 '-include', link_test_c).returncode() == 0
420 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
421 if have
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400422 add_project_link_arguments(arg, language : 'c')
423 endif
424 endforeach
425endif
426
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400427cpp = ' '.join(cc.cmd_array()) + ' -E'
428
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400429#####################################################################
430# compilation result tests
431
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400432conf.set('_GNU_SOURCE', true)
433conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400434
435conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
436conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
437conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
438conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
439conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
440conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
441conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
442
443decl_headers = '''
444#include <uchar.h>
445#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000446#include <linux/fib_rules.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400447'''
448# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
449
450foreach decl : ['char16_t',
451 'char32_t',
452 'key_serial_t',
453 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000454 'struct fib_rule_uid_range',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400455 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400456
457 # We get -1 if the size cannot be determined
458 have = cc.sizeof(decl, prefix : decl_headers) > 0
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200459 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400460endforeach
461
462foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
463 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
464 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
465 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530466 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400467 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
468 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
469 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
470 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
471 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530472 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400473 # if_tunnel.h is buggy and cannot be included on its own
474 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
475 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
476 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
477 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
478 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
479 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
480 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530481 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400482 ['NDA_IFINDEX', 'linux/neighbour.h'],
483 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000484 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400485 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530486 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400487 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400488 prefix = decl.length() > 2 ? decl[2] : ''
489 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200490 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400491endforeach
492
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400493foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200494 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400495endforeach
496
497foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100498 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100499 ['gettid', '''#include <sys/types.h>
500 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100501 ['pivot_root', '''#include <stdlib.h>
502 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100503 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400504 #include <sys/stat.h>
505 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100506 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100507 ['renameat2', '''#include <stdio.h>
508 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400509 ['kcmp', '''#include <linux/kcmp.h>'''],
510 ['keyctl', '''#include <sys/types.h>
511 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100512 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400513 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200514 ['bpf', '''#include <sys/syscall.h>
515 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmek38f1ae02017-04-19 16:14:16 -0400516 ['explicit_bzero' , '''#include <string.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400517]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400518
Lennart Poettering85db59b2017-12-25 12:01:14 +0100519 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200520 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400521endforeach
522
Lennart Poettering85db59b2017-12-25 12:01:14 +0100523if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200524 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200525 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400526else
527 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200528 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200529 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400530endif
531
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400532#####################################################################
533
534sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400535awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400536m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400537stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400538git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100539env = find_program('env')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400540
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400541meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400542mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400543test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
544splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400545
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400546# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
547# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500548progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400549 ['quotacheck', '/usr/sbin/quotacheck' ],
550 ['kill', '/usr/bin/kill' ],
551 ['kmod', '/usr/bin/kmod' ],
552 ['kexec', '/usr/sbin/kexec' ],
553 ['sulogin', '/usr/sbin/sulogin' ],
554 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
555 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
556 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
557 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
558 ]
559foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400560 path = get_option(prog[0] + '-path')
561 if path != ''
562 message('Using @1@ for @0@'.format(prog[0], path))
563 else
564 exe = find_program(prog[0],
565 '/usr/sbin/' + prog[0],
566 '/sbin/' + prog[0],
567 required: false)
568 path = exe.found() ? exe.path() : prog[1]
569 endif
570 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
571 conf.set_quoted(name, path)
572 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400573endforeach
574
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500575conf.set_quoted('TELINIT', get_option('telinit-path'))
576
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400577if run_command('ln', '--relative', '--help').returncode() != 0
578 error('ln does not support --relative')
579endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400580
581############################################################
582
583gperf = find_program('gperf')
584
585gperf_test_format = '''
586#include <string.h>
587const char * in_word_set(const char *, @0@);
588@1@
589'''
590gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
591gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
592gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
593if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400594 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400595else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400596 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
597 if cc.compiles(gperf_test)
598 gperf_len_type = 'unsigned'
599 else
600 error('unable to determine gperf len type')
601 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400602endif
603message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400604conf.set('GPERF_LEN_TYPE', gperf_len_type,
605 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400606
607############################################################
608
609if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400610 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400611endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100612foreach header : ['crypt.h',
613 'linux/btrfs.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400614 'linux/memfd.h',
615 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200616 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400617 'valgrind/memcheck.h',
618 'valgrind/valgrind.h',
619 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400620
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200621 conf.set10('HAVE_' + header.underscorify().to_upper(),
622 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400623endforeach
624
625############################################################
626
627conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400628conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
629gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400630
631default_hierarchy = get_option('default-hierarchy')
632conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
633 description : 'default cgroup hierarchy as string')
634if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400635 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400636elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400637 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400638else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400639 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400640endif
641
642time_epoch = get_option('time-epoch')
643if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400644 NEWS = files('NEWS')
645 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400646endif
647time_epoch = time_epoch.to_int()
648conf.set('TIME_EPOCH', time_epoch)
649
650system_uid_max = get_option('system-uid-max')
651if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400652 system_uid_max = run_command(
653 awk,
654 'BEGIN { uid=999 } /^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
655 '/etc/login.defs').stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400656endif
657system_uid_max = system_uid_max.to_int()
658conf.set('SYSTEM_UID_MAX', system_uid_max)
659substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400660message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400661
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400662system_gid_max = get_option('system-gid-max')
663if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400664 system_gid_max = run_command(
665 awk,
666 'BEGIN { gid=999 } /^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
667 '/etc/login.defs').stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400668endif
669system_gid_max = system_gid_max.to_int()
670conf.set('SYSTEM_GID_MAX', system_gid_max)
671substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400672message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400673
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100674dynamic_uid_min = get_option('dynamic-uid-min').to_int()
675dynamic_uid_max = get_option('dynamic-uid-max').to_int()
676conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
677conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
678substs.set('dynamicuidmin', dynamic_uid_min)
679substs.set('dynamicuidmax', dynamic_uid_max)
680
681container_uid_base_min = get_option('container-uid-base-min').to_int()
682container_uid_base_max = get_option('container-uid-base-max').to_int()
683conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
684conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
685substs.set('containeruidbasemin', container_uid_base_min)
686substs.set('containeruidbasemax', container_uid_base_max)
687
Lennart Poetteringafde4572017-12-05 11:00:24 +0100688nobody_user = get_option('nobody-user')
689nobody_group = get_option('nobody-group')
690
691getent_result = run_command('getent', 'passwd', '65534')
692if getent_result.returncode() == 0
693 name = getent_result.stdout().split(':')[0]
694 if name != nobody_user
695 message('WARNING:\n' +
696 ' The local user with the UID 65534 does not match the configured user name "@0@" of the nobody user (its name is @1@).\n'.format(nobody_user, name) +
697 ' Your build will result in an user table setup that is incompatible with the local system.')
698 endif
699endif
700id_result = run_command('id', '-u', nobody_user)
701if id_result.returncode() == 0
702 id = id_result.stdout().to_int()
703 if id != 65534
704 message('WARNING:\n' +
705 ' The local user with the configured user name "@0@" of the nobody user does not have UID 65534 (it has @1@).\n'.format(nobody_user, id) +
706 ' Your build will result in an user table setup that is incompatible with the local system.')
707 endif
708endif
709
710getent_result = run_command('getent', 'group', '65534')
711if getent_result.returncode() == 0
712 name = getent_result.stdout().split(':')[0]
713 if name != nobody_group
714 message('WARNING:\n' +
715 ' The local group with the GID 65534 does not match the configured group name "@0@" of the nobody group (its name is @1@).\n'.format(nobody_group, name) +
716 ' Your build will result in an group table setup that is incompatible with the local system.')
717 endif
718endif
719id_result = run_command('id', '-g', nobody_group)
720if id_result.returncode() == 0
721 id = id_result.stdout().to_int()
722 if id != 65534
723 message('WARNING:\n' +
724 ' The local group with the configured group name "@0@" of the nobody group does not have UID 65534 (it has @1@).\n'.format(nobody_group, id) +
725 ' Your build will result in an group table setup that is incompatible with the local system.')
726 endif
727endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900728if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
729 message('WARNING:\n' +
730 ' The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
731 ' Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
732endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100733
734conf.set_quoted('NOBODY_USER_NAME', nobody_user)
735conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900736substs.set('NOBODY_USER_NAME', nobody_user)
737substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100738
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400739tty_gid = get_option('tty-gid')
740conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400741substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400742
Ikey Doherty84786b82017-12-03 12:28:23 +0000743# Ensure provided GID argument is numeric, otherwise fallback to default assignment
744if get_option('users-gid') != ''
Yu Watanabed6806872017-12-05 14:01:39 +0900745 users_gid = get_option('users-gid').to_int()
Ikey Doherty84786b82017-12-03 12:28:23 +0000746else
Yu Watanabed6806872017-12-05 14:01:39 +0900747 users_gid = '-'
Ikey Doherty84786b82017-12-03 12:28:23 +0000748endif
749substs.set('USERS_GID', users_gid)
750
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400751if get_option('adm-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400752 m4_defines += ['-DENABLE_ADM_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400753endif
754
755if get_option('wheel-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400756 m4_defines += ['-DENABLE_WHEEL_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400757endif
758
759substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700760substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400761
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400762kill_user_processes = get_option('default-kill-user-processes')
763conf.set10('KILL_USER_PROCESSES', kill_user_processes)
764substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400765
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400766dns_servers = get_option('dns-servers')
767conf.set_quoted('DNS_SERVERS', dns_servers)
768substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400769
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400770ntp_servers = get_option('ntp-servers')
771conf.set_quoted('NTP_SERVERS', ntp_servers)
772substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400773
774conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
775
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400776substs.set('SUSHELL', get_option('debug-shell'))
777substs.set('DEBUGTTY', get_option('debug-tty'))
778
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400779debug = get_option('debug')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200780enable_debug_hashmap = false
781enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400782if debug != ''
783 foreach name : debug.split(',')
784 if name == 'hashmap'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200785 enable_debug_hashmap = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400786 elif name == 'mmap-cache'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200787 enable_debug_mmap_cache = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400788 else
789 message('unknown debug option "@0@", ignoring'.format(name))
790 endif
791 endforeach
792endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200793conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
794conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400795
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400796#####################################################################
797
798threads = dependency('threads')
799librt = cc.find_library('rt')
800libm = cc.find_library('m')
801libdl = cc.find_library('dl')
802libcrypt = cc.find_library('crypt')
803
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400804libcap = dependency('libcap', required : false)
805if not libcap.found()
806 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
807 libcap = cc.find_library('cap')
808endif
809
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400810libmount = dependency('mount',
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -0500811 version : '>= 2.30',
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500812 required : not fuzzer_build)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400813
814want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500815if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400816 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400817 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400818 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200819 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400820else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200821 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400822 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400823endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200824conf.set10('HAVE_SECCOMP', have)
825m4_defines += have ? ['-DHAVE_SECCOMP'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400826
827want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500828if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400829 libselinux = dependency('libselinux',
830 version : '>= 2.1.9',
831 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200832 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400833else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200834 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400835 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400836endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200837conf.set10('HAVE_SELINUX', have)
838m4_defines += have ? ['-DHAVE_SELINUX'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400839
840want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500841if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400842 libapparmor = dependency('libapparmor',
843 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200844 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400845else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200846 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400847 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400848endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200849conf.set10('HAVE_APPARMOR', have)
850m4_defines += have ? ['-DHAVE_APPARMOR'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400851
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400852smack_run_label = get_option('smack-run-label')
853if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400854 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
855 m4_defines += ['-DHAVE_SMACK_RUN_LABEL']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400856endif
857
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400858want_polkit = get_option('polkit')
859install_polkit = false
860install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500861if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400862 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400863
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400864 libpolkit = dependency('polkit-gobject-1',
865 required : false)
866 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
867 message('Old polkit detected, will install pkla files')
868 install_polkit_pkla = true
869 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400870endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200871conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400872
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400873want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500874if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400875 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200876 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400877else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200878 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400879 libacl = []
880endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200881conf.set10('HAVE_ACL', have)
882m4_defines += have ? ['-DHAVE_ACL'] : []
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400883
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400884want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500885if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400886 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200887 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400888else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200889 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400890 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400891endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200892conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400893
894want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500895if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400896 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200897 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400898else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200899 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400900 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400901endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200902conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400903
904want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500905if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400906 libkmod = dependency('libkmod',
907 version : '>= 15',
908 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200909 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400910else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200911 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400912 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400913endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200914conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400915
916want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500917if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400918 libpam = cc.find_library('pam', required : want_pam == 'true')
919 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200920 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400921else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200922 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400923 libpam = []
924 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400925endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200926conf.set10('HAVE_PAM', have)
927m4_defines += have ? ['-DHAVE_PAM'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400928
929want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500930if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400931 libmicrohttpd = dependency('libmicrohttpd',
932 version : '>= 0.9.33',
933 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200934 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400935else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200936 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400937 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400938endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200939conf.set10('HAVE_MICROHTTPD', have)
940m4_defines += have ? ['-DHAVE_MICROHTTPD'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400941
942want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500943if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400944 libcryptsetup = dependency('libcryptsetup',
945 version : '>= 1.6.0',
946 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200947 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400948else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200949 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400950 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400951endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200952conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400953
954want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500955if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400956 libcurl = dependency('libcurl',
957 version : '>= 7.32.0',
958 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200959 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400960else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200961 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400962 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400963endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200964conf.set10('HAVE_LIBCURL', have)
965m4_defines += have ? ['-DHAVE_LIBCURL'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400966
967want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400968want_libidn2 = get_option('libidn2')
969if want_libidn == 'true' and want_libidn2 == 'true'
970 error('libidn and libidn2 cannot be requested simultaneously')
971endif
972
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500973if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400974 libidn = dependency('libidn',
975 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200976 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400977else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200978 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400979 libidn = []
980endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200981conf.set10('HAVE_LIBIDN', have)
982m4_defines += have ? ['-DHAVE_LIBIDN'] : []
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500983if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400984 # libidn is used for both libidn and libidn2 objects
985 libidn = dependency('libidn2',
986 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200987 have = libidn.found()
988else
989 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400990endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200991conf.set10('HAVE_LIBIDN2', have)
992m4_defines += have ? ['-DHAVE_LIBIDN2'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400993
994want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500995if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400996 libiptc = dependency('libiptc',
997 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200998 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400999else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001000 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001001 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001002endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001003conf.set10('HAVE_LIBIPTC', have)
1004m4_defines += have ? ['-DHAVE_LIBIPTC'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001005
1006want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001007if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001008 libqrencode = dependency('libqrencode',
1009 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001010 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001011else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001012 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001013 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001014endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001015conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001016
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001017want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001018if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001019 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1020 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001021 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001022else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001023 have = false
1024endif
1025if not have
1026 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001027 libgcrypt = []
1028 libgpg_error = []
1029endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001030conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001031
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001032want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001033if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001034 libgnutls = dependency('gnutls',
1035 version : '>= 3.1.4',
1036 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001037 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001038else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001039 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001040 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001041endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001042conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001043
1044want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001045if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001046 libdw = dependency('libdw',
1047 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001048 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001049else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001050 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001051 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001052endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001053conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001054
1055want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001056if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001057 libz = dependency('zlib',
1058 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001059 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001060else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001061 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001062 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001063endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001064conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001065
1066want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001067if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001068 libbzip2 = cc.find_library('bz2',
1069 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001070 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001071else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001072 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001073 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001074endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001075conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001076
1077want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001078if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001079 libxz = dependency('liblzma',
1080 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001081 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001082else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001083 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001084 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001085endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001086conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001087
1088want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001089if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001090 liblz4 = dependency('liblz4',
1091 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001092 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001093else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001094 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001095 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001096endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001097conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001098
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001099want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001100if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001101 libxkbcommon = dependency('xkbcommon',
1102 version : '>= 0.3.0',
1103 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001104 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001105else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001106 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001107 libxkbcommon = []
1108endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001109conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001110
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001111want_pcre2 = get_option('pcre2')
1112if want_pcre2 != 'false'
1113 libpcre2 = dependency('libpcre2-8',
1114 required : want_pcre2 == 'true')
1115 have = libpcre2.found()
1116else
1117 have = false
1118 libpcre2 = []
1119endif
1120conf.set10('HAVE_PCRE2', have)
1121
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001122want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001123if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001124 libglib = dependency('glib-2.0',
1125 version : '>= 2.22.0',
1126 required : want_glib == 'true')
1127 libgobject = dependency('gobject-2.0',
1128 version : '>= 2.22.0',
1129 required : want_glib == 'true')
1130 libgio = dependency('gio-2.0',
1131 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001132 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001133else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001134 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001135 libglib = []
1136 libgobject = []
1137 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001138endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001139conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001140
1141want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001142if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001143 libdbus = dependency('dbus-1',
1144 version : '>= 1.3.2',
1145 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001146 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001147else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001148 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001149 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001150endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001151conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001152
Yu Watanabe42303dc2017-06-18 05:22:32 +09001153default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001154if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001155 default_dnssec = 'no'
1156endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001157if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001158 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1159 default_dnssec = 'no'
1160endif
1161conf.set('DEFAULT_DNSSEC_MODE',
1162 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1163substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1164
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001165want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001166if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001167 have = (conf.get('HAVE_LIBCURL') == 1 and
1168 conf.get('HAVE_ZLIB') == 1 and
1169 conf.get('HAVE_BZIP2') == 1 and
1170 conf.get('HAVE_XZ') == 1 and
1171 conf.get('HAVE_GCRYPT') == 1)
1172 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001173 error('importd support was requested, but dependencies are not available')
1174 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001175else
1176 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001177endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001178conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001179
1180want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001181if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001182 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1183 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001184 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1185 # it's possible to build one without the other. Complain only if
1186 # support was explictly requested. The auxiliary files like sysusers
1187 # config should be installed when any of the programs are built.
1188 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1189 error('remote support was requested, but dependencies are not available')
1190 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001191 have = have_deps[0] or have_deps[1]
1192else
1193 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001194endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001195conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001196
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001197foreach term : ['utmp',
1198 'hibernate',
1199 'environment-d',
1200 'binfmt',
1201 'coredump',
1202 'resolve',
1203 'logind',
1204 'hostnamed',
1205 'localed',
1206 'machined',
1207 'networkd',
1208 'timedated',
1209 'timesyncd',
1210 'myhostname',
1211 'firstboot',
1212 'randomseed',
1213 'backlight',
1214 'vconsole',
1215 'quotacheck',
1216 'sysusers',
1217 'tmpfiles',
1218 'hwdb',
1219 'rfkill',
1220 'ldconfig',
1221 'efi',
1222 'tpm',
1223 'ima',
1224 'smack',
1225 'gshadow',
1226 'idn',
1227 'nss-systemd']
1228 have = get_option(term)
1229 name = 'ENABLE_' + term.underscorify().to_upper()
1230 conf.set10(name, have)
1231 m4_defines += have ? ['-D' + name] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001232endforeach
1233
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001234want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001235install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001236slow_tests = get_option('slow-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001237tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001238fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001239
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001240conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001241
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001242#####################################################################
1243
1244if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001245 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001246
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001247 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001248 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001249 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001250 elif efi_arch == 'x86_64'
1251 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001252 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001253 elif efi_arch == 'arm'
1254 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001255 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001256 elif efi_arch == 'aarch64'
1257 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001258 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001259 else
1260 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001261 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001262 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001263
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001264 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001265 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001266
1267 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001268else
1269 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001270endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001271conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001272
1273#####################################################################
1274
1275config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001276 output : 'config.h',
1277 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001278
1279includes = include_directories('src/basic',
1280 'src/shared',
1281 'src/systemd',
1282 'src/journal',
1283 'src/resolve',
1284 'src/timesync',
1285 'src/login',
1286 'src/udev',
1287 'src/libudev',
1288 'src/core',
1289 'src/libsystemd/sd-bus',
1290 'src/libsystemd/sd-device',
1291 'src/libsystemd/sd-hwdb',
1292 'src/libsystemd/sd-id128',
1293 'src/libsystemd/sd-netlink',
1294 'src/libsystemd/sd-network',
1295 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001296 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001297
1298add_project_arguments('-include', 'config.h', language : 'c')
1299
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001300subdir('po')
1301subdir('catalog')
1302subdir('src/systemd')
1303subdir('src/basic')
1304subdir('src/libsystemd')
1305subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001306subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001307subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001308
1309libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001310 'journal-core',
1311 libjournal_core_sources,
1312 journald_gperf_c,
1313 include_directories : includes,
1314 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001315
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001316libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001317libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001318 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001319 'src/systemd/sd-id128.h', # pick a header file at random to work around old meson bug
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001320 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001321 include_directories : includes,
1322 link_args : ['-shared',
1323 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001324 link_with : [libbasic,
1325 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001326 link_whole : [libsystemd_static,
1327 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001328 dependencies : [threads,
1329 librt,
1330 libxz,
1331 liblz4],
1332 link_depends : libsystemd_sym,
1333 install : true,
1334 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001335
1336############################################################
1337
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001338# binaries that have --help and are intended for use by humans,
1339# usually, but not always, installed in /bin.
1340public_programs = []
1341
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001342subdir('src/libudev')
1343subdir('src/shared')
1344subdir('src/core')
1345subdir('src/udev')
1346subdir('src/network')
1347
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001348subdir('src/analyze')
1349subdir('src/journal-remote')
1350subdir('src/coredump')
1351subdir('src/hostname')
1352subdir('src/import')
1353subdir('src/kernel-install')
1354subdir('src/locale')
1355subdir('src/machine')
1356subdir('src/nspawn')
1357subdir('src/resolve')
1358subdir('src/timedate')
1359subdir('src/timesync')
1360subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001361subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001362
1363subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001364subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001365subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001366subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001367
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001368############################################################
1369
1370# only static linking apart from libdl, to make sure that the
1371# module is linked to all libraries that it uses.
1372test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001373 'test-dlopen',
1374 test_dlopen_c,
1375 include_directories : includes,
1376 link_with : [libbasic],
1377 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001378
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001379foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001380 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001381 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001382 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001383
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001384 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001385 if condition
1386 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001387
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001388 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1389 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001390
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001391 nss = shared_library(
1392 'nss_' + module,
1393 'src/nss-@0@/nss-@0@.c'.format(module),
1394 version : '2',
1395 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001396 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1397 link_args : ['-Wl,-z,nodelete',
1398 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001399 '-Wl,--version-script=' + version_script_arg,
1400 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001401 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001402 libbasic],
1403 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001404 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001405 link_depends : sym,
1406 install : true,
1407 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001408
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001409 # We cannot use shared_module because it does not support version suffix.
1410 # Unfortunately shared_library insists on creating the symlink…
1411 meson.add_install_script('sh', '-c',
1412 'rm $DESTDIR@0@/libnss_@1@.so'
1413 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001414
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001415 test('dlopen-nss_' + module,
1416 test_dlopen,
1417 args : [nss.full_path()]) # path to dlopen must include a slash
1418 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001419endforeach
1420
1421############################################################
1422
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001423executable('systemd',
1424 systemd_sources,
1425 include_directories : includes,
1426 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001427 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001428 dependencies : [threads,
1429 librt,
1430 libseccomp,
1431 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001432 libmount,
1433 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001434 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001435 install : true,
1436 install_dir : rootlibexecdir)
1437
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001438exe = executable('systemd-analyze',
1439 systemd_analyze_sources,
1440 include_directories : includes,
1441 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001442 libshared],
1443 dependencies : [threads,
1444 librt,
1445 libseccomp,
1446 libselinux,
1447 libmount,
1448 libblkid],
1449 install_rpath : rootlibexecdir,
1450 install : true)
1451public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001452
1453executable('systemd-journald',
1454 systemd_journald_sources,
1455 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001456 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001457 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001458 dependencies : [threads,
1459 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001460 liblz4,
1461 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001462 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001463 install : true,
1464 install_dir : rootlibexecdir)
1465
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001466exe = executable('systemd-cat',
1467 systemd_cat_sources,
1468 include_directories : includes,
1469 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001470 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001471 dependencies : [threads],
1472 install_rpath : rootlibexecdir,
1473 install : true)
1474public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001475
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001476exe = executable('journalctl',
1477 journalctl_sources,
1478 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001479 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001480 dependencies : [threads,
1481 libqrencode,
1482 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001483 liblz4,
1484 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001485 install_rpath : rootlibexecdir,
1486 install : true,
1487 install_dir : rootbindir)
1488public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001489
1490executable('systemd-getty-generator',
1491 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001492 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001493 link_with : [libshared],
1494 install_rpath : rootlibexecdir,
1495 install : true,
1496 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001497
1498executable('systemd-debug-generator',
1499 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001500 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001501 link_with : [libshared],
1502 install_rpath : rootlibexecdir,
1503 install : true,
1504 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001505
1506executable('systemd-fstab-generator',
1507 'src/fstab-generator/fstab-generator.c',
1508 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001509 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001510 link_with : [libshared],
1511 install_rpath : rootlibexecdir,
1512 install : true,
1513 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001514
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001515if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001516 executable('30-systemd-environment-d-generator',
1517 'src/environment-d-generator/environment-d-generator.c',
1518 include_directories : includes,
1519 link_with : [libshared],
1520 install_rpath : rootlibexecdir,
1521 install : true,
1522 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001523
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001524 meson.add_install_script(meson_make_symlink,
1525 join_paths(sysconfdir, 'environment'),
1526 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001527endif
1528
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001529if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001530 executable('systemd-hibernate-resume-generator',
1531 'src/hibernate-resume/hibernate-resume-generator.c',
1532 include_directories : includes,
1533 link_with : [libshared],
1534 install_rpath : rootlibexecdir,
1535 install : true,
1536 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001537
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001538 executable('systemd-hibernate-resume',
1539 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001540 include_directories : includes,
1541 link_with : [libshared],
1542 install_rpath : rootlibexecdir,
1543 install : true,
1544 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001545endif
1546
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001547if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001548 executable('systemd-gpt-auto-generator',
1549 'src/gpt-auto-generator/gpt-auto-generator.c',
1550 'src/basic/blkid-util.h',
1551 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001552 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001553 dependencies : libblkid,
1554 install_rpath : rootlibexecdir,
1555 install : true,
1556 install_dir : systemgeneratordir)
1557
1558 exe = executable('systemd-dissect',
1559 'src/dissect/dissect.c',
1560 include_directories : includes,
1561 link_with : [libshared],
1562 install_rpath : rootlibexecdir,
1563 install : true,
1564 install_dir : rootlibexecdir)
1565 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001566endif
1567
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001568if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001569 executable('systemd-resolved',
1570 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001571 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001572 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001573 libbasic_gcrypt,
1574 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001575 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001576 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001577 libm,
1578 libidn],
1579 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001580 install : true,
1581 install_dir : rootlibexecdir)
1582
1583 exe = executable('systemd-resolve',
1584 systemd_resolve_sources,
1585 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001586 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001587 libbasic_gcrypt,
1588 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001589 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001590 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001591 libm,
1592 libidn],
1593 install_rpath : rootlibexecdir,
1594 install : true)
1595 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001596endif
1597
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001598if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001599 executable('systemd-logind',
1600 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001601 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001602 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001603 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001604 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001605 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001606 install_rpath : rootlibexecdir,
1607 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001608 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001609
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001610 exe = executable('loginctl',
1611 loginctl_sources,
1612 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001613 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001614 dependencies : [threads,
1615 liblz4,
1616 libxz],
1617 install_rpath : rootlibexecdir,
1618 install : true,
1619 install_dir : rootbindir)
1620 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001621
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001622 exe = executable('systemd-inhibit',
1623 'src/login/inhibit.c',
1624 include_directories : includes,
1625 link_with : [libshared],
1626 install_rpath : rootlibexecdir,
1627 install : true,
1628 install_dir : rootbindir)
1629 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001630
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001631 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001632 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1633 pam_systemd = shared_library(
1634 'pam_systemd',
1635 pam_systemd_c,
1636 name_prefix : '',
1637 include_directories : includes,
1638 link_args : ['-shared',
1639 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001640 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001641 libshared_static],
1642 dependencies : [threads,
1643 libpam,
1644 libpam_misc],
1645 link_depends : pam_systemd_sym,
1646 install : true,
1647 install_dir : pamlibdir)
1648
1649 test('dlopen-pam_systemd',
1650 test_dlopen,
1651 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1652 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001653endif
1654
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001655if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001656 executable('systemd-user-sessions',
1657 'src/user-sessions/user-sessions.c',
1658 include_directories : includes,
1659 link_with : [libshared],
1660 install_rpath : rootlibexecdir,
1661 install : true,
1662 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001663endif
1664
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001665if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001666 exe = executable('bootctl',
1667 'src/boot/bootctl.c',
1668 include_directories : includes,
1669 link_with : [libshared],
1670 dependencies : [libblkid],
1671 install_rpath : rootlibexecdir,
1672 install : true)
1673 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001674endif
1675
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001676exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1677 include_directories : includes,
1678 link_with : [libshared],
1679 dependencies : [threads],
1680 install_rpath : rootlibexecdir,
1681 install : true)
1682public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001683
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001684exe = executable('systemctl', 'src/systemctl/systemctl.c',
1685 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001686 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001687 dependencies : [threads,
1688 libcap,
1689 libselinux,
1690 libxz,
1691 liblz4],
1692 install_rpath : rootlibexecdir,
1693 install : true,
1694 install_dir : rootbindir)
1695public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001696
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001697if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001698 executable('systemd-backlight',
1699 'src/backlight/backlight.c',
1700 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001701 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001702 install_rpath : rootlibexecdir,
1703 install : true,
1704 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001705endif
1706
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001707if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001708 executable('systemd-rfkill',
1709 'src/rfkill/rfkill.c',
1710 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001711 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001712 install_rpath : rootlibexecdir,
1713 install : true,
1714 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001715endif
1716
1717executable('systemd-system-update-generator',
1718 'src/system-update-generator/system-update-generator.c',
1719 include_directories : includes,
1720 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001721 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001722 install : true,
1723 install_dir : systemgeneratordir)
1724
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001725if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001726 executable('systemd-cryptsetup',
1727 'src/cryptsetup/cryptsetup.c',
1728 include_directories : includes,
1729 link_with : [libshared],
1730 dependencies : [libcryptsetup],
1731 install_rpath : rootlibexecdir,
1732 install : true,
1733 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001734
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001735 executable('systemd-cryptsetup-generator',
1736 'src/cryptsetup/cryptsetup-generator.c',
1737 include_directories : includes,
1738 link_with : [libshared],
1739 dependencies : [libcryptsetup],
1740 install_rpath : rootlibexecdir,
1741 install : true,
1742 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001743
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001744 executable('systemd-veritysetup',
1745 'src/veritysetup/veritysetup.c',
1746 include_directories : includes,
1747 link_with : [libshared],
1748 dependencies : [libcryptsetup],
1749 install_rpath : rootlibexecdir,
1750 install : true,
1751 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001752
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001753 executable('systemd-veritysetup-generator',
1754 'src/veritysetup/veritysetup-generator.c',
1755 include_directories : includes,
1756 link_with : [libshared],
1757 dependencies : [libcryptsetup],
1758 install_rpath : rootlibexecdir,
1759 install : true,
1760 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001761endif
1762
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001763if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001764 executable('systemd-sysv-generator',
1765 'src/sysv-generator/sysv-generator.c',
1766 include_directories : includes,
1767 link_with : [libshared],
1768 install_rpath : rootlibexecdir,
1769 install : true,
1770 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001771
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001772 executable('systemd-rc-local-generator',
1773 'src/rc-local-generator/rc-local-generator.c',
1774 include_directories : includes,
1775 link_with : [libshared],
1776 install_rpath : rootlibexecdir,
1777 install : true,
1778 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001779endif
1780
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001781if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001782 executable('systemd-hostnamed',
1783 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001784 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001785 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001786 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001787 install : true,
1788 install_dir : rootlibexecdir)
1789
1790 exe = executable('hostnamectl',
1791 'src/hostname/hostnamectl.c',
1792 include_directories : includes,
1793 link_with : [libshared],
1794 install_rpath : rootlibexecdir,
1795 install : true)
1796 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001797endif
1798
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001799if conf.get('ENABLE_LOCALED') == 1
1800 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001801 # logind will load libxkbcommon.so dynamically on its own
1802 deps = [libdl]
1803 else
1804 deps = []
1805 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001806
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001807 executable('systemd-localed',
1808 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001809 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001810 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001811 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001812 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001813 install : true,
1814 install_dir : rootlibexecdir)
1815
1816 exe = executable('localectl',
1817 localectl_sources,
1818 include_directories : includes,
1819 link_with : [libshared],
1820 install_rpath : rootlibexecdir,
1821 install : true)
1822 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001823endif
1824
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001825if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001826 executable('systemd-timedated',
1827 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001828 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001829 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001830 install_rpath : rootlibexecdir,
1831 install : true,
1832 install_dir : rootlibexecdir)
1833
1834 exe = executable('timedatectl',
1835 'src/timedate/timedatectl.c',
1836 include_directories : includes,
1837 install_rpath : rootlibexecdir,
1838 link_with : [libshared],
1839 install : true)
1840 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001841endif
1842
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001843if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001844 executable('systemd-timesyncd',
1845 systemd_timesyncd_sources,
1846 include_directories : includes,
1847 link_with : [libshared],
1848 dependencies : [threads,
1849 libm],
1850 install_rpath : rootlibexecdir,
1851 install : true,
1852 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001853endif
1854
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001855if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001856 executable('systemd-machined',
1857 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001858 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001859 link_with : [libmachine_core,
1860 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001861 install_rpath : rootlibexecdir,
1862 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001863 install_dir : rootlibexecdir)
1864
1865 exe = executable('machinectl',
1866 'src/machine/machinectl.c',
1867 include_directories : includes,
1868 link_with : [libshared],
1869 dependencies : [threads,
1870 libxz,
1871 liblz4],
1872 install_rpath : rootlibexecdir,
1873 install : true,
1874 install_dir : rootbindir)
1875 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001876endif
1877
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001878if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001879 executable('systemd-importd',
1880 systemd_importd_sources,
1881 include_directories : includes,
1882 link_with : [libshared],
1883 dependencies : [threads],
1884 install_rpath : rootlibexecdir,
1885 install : true,
1886 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001887
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001888 systemd_pull = executable('systemd-pull',
1889 systemd_pull_sources,
1890 include_directories : includes,
1891 link_with : [libshared],
1892 dependencies : [libcurl,
1893 libz,
1894 libbzip2,
1895 libxz,
1896 libgcrypt],
1897 install_rpath : rootlibexecdir,
1898 install : true,
1899 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001900
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001901 systemd_import = executable('systemd-import',
1902 systemd_import_sources,
1903 include_directories : includes,
1904 link_with : [libshared],
1905 dependencies : [libcurl,
1906 libz,
1907 libbzip2,
1908 libxz],
1909 install_rpath : rootlibexecdir,
1910 install : true,
1911 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001912
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001913 systemd_export = executable('systemd-export',
1914 systemd_export_sources,
1915 include_directories : includes,
1916 link_with : [libshared],
1917 dependencies : [libcurl,
1918 libz,
1919 libbzip2,
1920 libxz],
1921 install_rpath : rootlibexecdir,
1922 install : true,
1923 install_dir : rootlibexecdir)
1924 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001925endif
1926
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001927if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001928 exe = executable('systemd-journal-upload',
1929 systemd_journal_upload_sources,
1930 include_directories : includes,
1931 link_with : [libshared],
1932 dependencies : [threads,
1933 libcurl,
1934 libgnutls,
1935 libxz,
1936 liblz4],
1937 install_rpath : rootlibexecdir,
1938 install : true,
1939 install_dir : rootlibexecdir)
1940 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001941endif
1942
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001943if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001944 s_j_remote = executable('systemd-journal-remote',
1945 systemd_journal_remote_sources,
1946 include_directories : includes,
1947 link_with : [libshared],
1948 dependencies : [threads,
1949 libmicrohttpd,
1950 libgnutls,
1951 libxz,
1952 liblz4],
1953 install_rpath : rootlibexecdir,
1954 install : true,
1955 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001956
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001957 s_j_gatewayd = executable('systemd-journal-gatewayd',
1958 systemd_journal_gatewayd_sources,
1959 include_directories : includes,
1960 link_with : [libshared],
1961 dependencies : [threads,
1962 libmicrohttpd,
1963 libgnutls,
1964 libxz,
1965 liblz4],
1966 install_rpath : rootlibexecdir,
1967 install : true,
1968 install_dir : rootlibexecdir)
1969 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001970endif
1971
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001972if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001973 executable('systemd-coredump',
1974 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001975 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001976 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001977 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001978 libacl,
1979 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001980 libxz,
1981 liblz4],
1982 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001983 install : true,
1984 install_dir : rootlibexecdir)
1985
1986 exe = executable('coredumpctl',
1987 coredumpctl_sources,
1988 include_directories : includes,
1989 link_with : [libshared],
1990 dependencies : [threads,
1991 libxz,
1992 liblz4],
1993 install_rpath : rootlibexecdir,
1994 install : true)
1995 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001996endif
1997
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001998if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001999 exe = executable('systemd-binfmt',
2000 'src/binfmt/binfmt.c',
2001 include_directories : includes,
2002 link_with : [libshared],
2003 install_rpath : rootlibexecdir,
2004 install : true,
2005 install_dir : rootlibexecdir)
2006 public_programs += [exe]
2007
2008 meson.add_install_script('sh', '-c',
2009 mkdir_p.format(binfmtdir))
2010 meson.add_install_script('sh', '-c',
2011 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2012endif
2013
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002014if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002015 executable('systemd-vconsole-setup',
2016 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002017 include_directories : includes,
2018 link_with : [libshared],
2019 install_rpath : rootlibexecdir,
2020 install : true,
2021 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002022endif
2023
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002024if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002025 executable('systemd-random-seed',
2026 'src/random-seed/random-seed.c',
2027 include_directories : includes,
2028 link_with : [libshared],
2029 install_rpath : rootlibexecdir,
2030 install : true,
2031 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002032endif
2033
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002034if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002035 executable('systemd-firstboot',
2036 'src/firstboot/firstboot.c',
2037 include_directories : includes,
2038 link_with : [libshared],
2039 dependencies : [libcrypt],
2040 install_rpath : rootlibexecdir,
2041 install : true,
2042 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002043endif
2044
2045executable('systemd-remount-fs',
2046 'src/remount-fs/remount-fs.c',
2047 'src/core/mount-setup.c',
2048 'src/core/mount-setup.h',
2049 include_directories : includes,
2050 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002051 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002052 install : true,
2053 install_dir : rootlibexecdir)
2054
2055executable('systemd-machine-id-setup',
2056 'src/machine-id-setup/machine-id-setup-main.c',
2057 'src/core/machine-id-setup.c',
2058 'src/core/machine-id-setup.h',
2059 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002060 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002061 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002062 install : true,
2063 install_dir : rootbindir)
2064
2065executable('systemd-fsck',
2066 'src/fsck/fsck.c',
2067 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002068 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002069 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002070 install : true,
2071 install_dir : rootlibexecdir)
2072
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002073executable('systemd-growfs',
2074 'src/partition/growfs.c',
2075 include_directories : includes,
2076 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002077 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002078 install_rpath : rootlibexecdir,
2079 install : true,
2080 install_dir : rootlibexecdir)
2081
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002082executable('systemd-makefs',
2083 'src/partition/makefs.c',
2084 include_directories : includes,
2085 link_with : [libshared],
2086 install_rpath : rootlibexecdir,
2087 install : true,
2088 install_dir : rootlibexecdir)
2089
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002090executable('systemd-sleep',
2091 'src/sleep/sleep.c',
2092 include_directories : includes,
2093 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002094 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002095 install : true,
2096 install_dir : rootlibexecdir)
2097
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002098exe = executable('systemd-sysctl',
2099 'src/sysctl/sysctl.c',
2100 include_directories : includes,
2101 link_with : [libshared],
2102 install_rpath : rootlibexecdir,
2103 install : true,
2104 install_dir : rootlibexecdir)
2105public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002106
2107executable('systemd-ac-power',
2108 'src/ac-power/ac-power.c',
2109 include_directories : includes,
2110 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002111 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002112 install : true,
2113 install_dir : rootlibexecdir)
2114
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002115exe = executable('systemd-detect-virt',
2116 'src/detect-virt/detect-virt.c',
2117 include_directories : includes,
2118 link_with : [libshared],
2119 install_rpath : rootlibexecdir,
2120 install : true)
2121public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002122
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002123exe = executable('systemd-delta',
2124 'src/delta/delta.c',
2125 include_directories : includes,
2126 link_with : [libshared],
2127 install_rpath : rootlibexecdir,
2128 install : true)
2129public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002130
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002131exe = executable('systemd-escape',
2132 'src/escape/escape.c',
2133 include_directories : includes,
2134 link_with : [libshared],
2135 install_rpath : rootlibexecdir,
2136 install : true,
2137 install_dir : rootbindir)
2138public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002139
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002140exe = executable('systemd-notify',
2141 'src/notify/notify.c',
2142 include_directories : includes,
2143 link_with : [libshared],
2144 install_rpath : rootlibexecdir,
2145 install : true,
2146 install_dir : rootbindir)
2147public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002148
2149executable('systemd-volatile-root',
2150 'src/volatile-root/volatile-root.c',
2151 include_directories : includes,
2152 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002153 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002154 install : true,
2155 install_dir : rootlibexecdir)
2156
2157executable('systemd-cgroups-agent',
2158 'src/cgroups-agent/cgroups-agent.c',
2159 include_directories : includes,
2160 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002161 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002162 install : true,
2163 install_dir : rootlibexecdir)
2164
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002165exe = executable('systemd-path',
2166 'src/path/path.c',
2167 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002168 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002169 install_rpath : rootlibexecdir,
2170 install : true)
2171public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002172
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002173exe = executable('systemd-ask-password',
2174 'src/ask-password/ask-password.c',
2175 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002176 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002177 install_rpath : rootlibexecdir,
2178 install : true,
2179 install_dir : rootbindir)
2180public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002181
2182executable('systemd-reply-password',
2183 'src/reply-password/reply-password.c',
2184 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002185 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002186 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002187 install : true,
2188 install_dir : rootlibexecdir)
2189
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002190exe = executable('systemd-tty-ask-password-agent',
2191 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2192 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002193 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002194 install_rpath : rootlibexecdir,
2195 install : true,
2196 install_dir : rootbindir)
2197public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002198
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002199exe = executable('systemd-cgls',
2200 'src/cgls/cgls.c',
2201 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002202 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002203 install_rpath : rootlibexecdir,
2204 install : true)
2205public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002206
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002207exe = executable('systemd-cgtop',
2208 'src/cgtop/cgtop.c',
2209 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002210 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002211 install_rpath : rootlibexecdir,
2212 install : true)
2213public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002214
2215executable('systemd-initctl',
2216 'src/initctl/initctl.c',
2217 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002218 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002219 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002220 install : true,
2221 install_dir : rootlibexecdir)
2222
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002223exe = executable('systemd-mount',
2224 'src/mount/mount-tool.c',
2225 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002226 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002227 install_rpath : rootlibexecdir,
2228 install : true)
2229public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002230
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002231meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002232 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002233
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002234exe = executable('systemd-run',
2235 'src/run/run.c',
2236 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002237 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002238 install_rpath : rootlibexecdir,
2239 install : true)
2240public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002241
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002242exe = executable('systemd-stdio-bridge',
2243 'src/stdio-bridge/stdio-bridge.c',
2244 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002245 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002246 install_rpath : rootlibexecdir,
2247 install : true)
2248public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002249
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002250exe = executable('busctl',
2251 'src/busctl/busctl.c',
2252 'src/busctl/busctl-introspect.c',
2253 'src/busctl/busctl-introspect.h',
2254 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002255 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002256 install_rpath : rootlibexecdir,
2257 install : true)
2258public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002259
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002260if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002261 exe = executable('systemd-sysusers',
2262 'src/sysusers/sysusers.c',
2263 include_directories : includes,
2264 link_with : [libshared],
2265 install_rpath : rootlibexecdir,
2266 install : true,
2267 install_dir : rootbindir)
2268 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002269endif
2270
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002271if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002272 exe = executable('systemd-tmpfiles',
2273 'src/tmpfiles/tmpfiles.c',
2274 include_directories : includes,
2275 link_with : [libshared],
2276 dependencies : [libacl],
2277 install_rpath : rootlibexecdir,
2278 install : true,
2279 install_dir : rootbindir)
2280 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002281
2282 test('test-systemd-tmpfiles',
2283 test_systemd_tmpfiles_py,
2284 args : exe.full_path())
2285 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002286endif
2287
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002288if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002289 exe = executable('systemd-hwdb',
2290 'src/hwdb/hwdb.c',
2291 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2292 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002293 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002294 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002295 install : true,
2296 install_dir : rootbindir)
2297 public_programs += [exe]
2298endif
2299
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002300if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002301 executable('systemd-quotacheck',
2302 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002303 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002304 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002305 install_rpath : rootlibexecdir,
2306 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002307 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002308endif
2309
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002310exe = executable('systemd-socket-proxyd',
2311 'src/socket-proxy/socket-proxyd.c',
2312 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002313 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002314 dependencies : [threads],
2315 install_rpath : rootlibexecdir,
2316 install : true,
2317 install_dir : rootlibexecdir)
2318public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002319
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002320exe = executable('systemd-udevd',
2321 systemd_udevd_sources,
2322 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002323 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002324 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002325 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002326 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002327 dependencies : [threads,
2328 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002329 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002330 libacl,
2331 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002332 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002333 install : true,
2334 install_dir : rootlibexecdir)
2335public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002336
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002337exe = executable('udevadm',
2338 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002339 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002340 include_directories : includes,
2341 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002342 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002343 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002344 dependencies : [threads,
2345 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002346 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002347 libacl,
2348 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002349 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002350 install : true,
2351 install_dir : rootbindir)
2352public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002353
2354executable('systemd-shutdown',
2355 systemd_shutdown_sources,
2356 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002357 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002358 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002359 install : true,
2360 install_dir : rootlibexecdir)
2361
2362executable('systemd-update-done',
2363 'src/update-done/update-done.c',
2364 include_directories : includes,
2365 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002366 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002367 install : true,
2368 install_dir : rootlibexecdir)
2369
2370executable('systemd-update-utmp',
2371 'src/update-utmp/update-utmp.c',
2372 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002373 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002374 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002375 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002376 install : true,
2377 install_dir : rootlibexecdir)
2378
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002379if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002380 executable('systemd-modules-load',
2381 'src/modules-load/modules-load.c',
2382 include_directories : includes,
2383 link_with : [libshared],
2384 dependencies : [libkmod],
2385 install_rpath : rootlibexecdir,
2386 install : true,
2387 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002388
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002389 meson.add_install_script('sh', '-c',
2390 mkdir_p.format(modulesloaddir))
2391 meson.add_install_script('sh', '-c',
2392 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002393endif
2394
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002395exe = executable('systemd-nspawn',
2396 systemd_nspawn_sources,
2397 'src/core/mount-setup.c', # FIXME: use a variable?
2398 'src/core/mount-setup.h',
2399 'src/core/loopback-setup.c',
2400 'src/core/loopback-setup.h',
2401 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002402 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002403 dependencies : [libacl,
2404 libblkid,
2405 libseccomp,
2406 libselinux],
2407 install_rpath : rootlibexecdir,
2408 install : true)
2409public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002410
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002411if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002412 executable('systemd-networkd',
2413 systemd_networkd_sources,
2414 include_directories : includes,
2415 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002416 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002417 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002418 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002419 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002420 install_rpath : rootlibexecdir,
2421 install : true,
2422 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002423
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002424 executable('systemd-networkd-wait-online',
2425 systemd_networkd_wait_online_sources,
2426 include_directories : includes,
2427 link_with : [libnetworkd_core,
2428 libshared],
2429 install_rpath : rootlibexecdir,
2430 install : true,
2431 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002432
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002433 exe = executable('networkctl',
2434 networkctl_sources,
2435 include_directories : includes,
2436 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002437 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002438 install_rpath : rootlibexecdir,
2439 install : true,
2440 install_dir : rootbindir)
2441 public_programs += [exe]
2442endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002443
2444executable('systemd-sulogin-shell',
2445 ['src/sulogin-shell/sulogin-shell.c'],
2446 include_directories : includes,
2447 link_with : [libshared],
2448 install_rpath : rootlibexecdir,
2449 install : true,
2450 install_dir : rootlibexecdir)
2451
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002452############################################################
2453
2454foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002455 sources = tuple[0]
2456 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2457 dependencies = tuple[2]
2458 condition = tuple.length() >= 4 ? tuple[3] : ''
2459 type = tuple.length() >= 5 ? tuple[4] : ''
2460 defs = tuple.length() >= 6 ? tuple[5] : []
2461 incs = tuple.length() >= 7 ? tuple[6] : includes
2462 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002463
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002464 name = sources[0].split('/')[-1].split('.')[0]
2465 if type.startswith('timeout=')
2466 timeout = type.split('=')[1].to_int()
2467 type = ''
2468 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002469 if want_tests == 'false'
2470 message('Not compiling @0@ because tests is set to false'.format(name))
2471 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002472 exe = executable(
2473 name,
2474 sources,
2475 include_directories : incs,
2476 link_with : link_with,
2477 dependencies : dependencies,
2478 c_args : defs,
2479 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002480 install : install_tests,
2481 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002482
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002483 if type == 'manual'
2484 message('@0@ is a manual test'.format(name))
2485 elif type == 'unsafe' and want_tests != 'unsafe'
2486 message('@0@ is an unsafe test'.format(name))
2487 else
2488 test(name, exe,
2489 env : test_env,
2490 timeout : timeout)
2491 endif
2492 else
2493 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2494 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002495endforeach
2496
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002497test_libsystemd_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002498 'test-libsystemd-sym',
2499 test_libsystemd_sym_c,
2500 include_directories : includes,
2501 link_with : [libsystemd],
2502 install : install_tests,
2503 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002504test('test-libsystemd-sym',
2505 test_libsystemd_sym)
2506
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002507test_libudev_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002508 'test-libudev-sym',
2509 test_libudev_sym_c,
2510 include_directories : includes,
2511 c_args : ['-Wno-deprecated-declarations'],
2512 link_with : [libudev],
2513 install : install_tests,
2514 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002515test('test-libudev-sym',
2516 test_libudev_sym)
2517
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002518############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002519
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002520fuzzer_exes = []
2521
2522foreach tuple : fuzzers
2523 sources = tuple[0]
2524 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2525 dependencies = tuple[2]
2526 defs = tuple.length() >= 4 ? tuple[3] : []
2527 incs = tuple.length() >= 5 ? tuple[4] : includes
2528
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002529 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002530 dependencies += fuzzing_engine
2531 else
2532 sources += 'src/fuzz/fuzz-main.c'
2533 endif
2534
2535 name = sources[0].split('/')[-1].split('.')[0]
2536
2537 fuzzer_exes += executable(
2538 name,
2539 sources,
2540 include_directories : [incs, include_directories('src/fuzz')],
2541 link_with : link_with,
2542 dependencies : dependencies,
2543 c_args : defs,
2544 install : false)
2545endforeach
2546
2547run_target('fuzzers',
2548 depends : fuzzer_exes,
2549 command : ['true'])
2550
2551############################################################
2552
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002553make_directive_index_py = find_program('tools/make-directive-index.py')
2554make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002555xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002556hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002557
2558subdir('units')
2559subdir('sysctl.d')
2560subdir('sysusers.d')
2561subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002562subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002563subdir('hwdb')
2564subdir('network')
2565subdir('man')
2566subdir('shell-completion/bash')
2567subdir('shell-completion/zsh')
2568subdir('docs/sysvinit')
2569subdir('docs/var-log')
2570
2571# FIXME: figure out if the warning is true:
2572# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2573install_subdir('factory/etc',
2574 install_dir : factorydir)
2575
2576
2577install_data('xorg/50-systemd-user.sh',
2578 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002579install_data('modprobe.d/systemd.conf',
2580 install_dir : modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002581install_data('README',
2582 'NEWS',
2583 'CODING_STYLE',
2584 'DISTRO_PORTING',
2585 'ENVIRONMENT.md',
2586 'LICENSE.GPL2',
2587 'LICENSE.LGPL2.1',
Felipe Satelerf9f54412017-12-18 10:58:13 -03002588 'TRANSIENT-SETTINGS.md',
2589 'UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002590 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2591 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002592
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002593meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2594meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2595
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002596############################################################
2597
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002598meson_check_help = find_program('tools/meson-check-help.sh')
2599
2600foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002601 name = exec.full_path().split('/')[-1]
2602 test('check-help-' + name,
2603 meson_check_help,
2604 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002605endforeach
2606
2607############################################################
2608
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002609prev = ''
2610foreach p : fuzz_regression_tests
2611 a = p.split('/')[-3]
2612 b = p.split('/')[-2]
2613 c = p.split('/')[-1]
2614
2615 if a == 'address'
2616 build = sanitize_address
2617 else
2618 error('unknown sanitizer @0@'.format(a))
2619 endif
2620
2621 name = '@1@:@0@'.format(a, b)
2622
2623 if name != prev
2624 if want_tests == 'false'
2625 message('Not compiling @0@ because tests is set to false'.format(name))
2626 elif not sanitizers.contains(a)
2627 message('Not compiling @0@ because @1@ sanitizer is not available'.format(name, a))
2628 elif slow_tests
2629 exe = custom_target(
2630 name,
2631 output : name,
2632 depends : build,
2633 command : [env, 'ln', '-fs',
2634 join_paths(build.full_path(), b),
2635 '@OUTPUT@'],
2636 build_by_default : true)
2637 else
2638 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2639 endif
2640 endif
2641 prev = name
2642
2643 if want_tests != 'false' and slow_tests
2644 test(c, env, args : [exe.full_path(),
2645 join_paths(meson.source_root(),
2646 'test/fuzz-regressions',
2647 p)])
2648 endif
2649endforeach
2650
2651############################################################
2652
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002653if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002654 all_files = run_command(
2655 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002656 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002657 'ls-files',
2658 ':/*.[ch]'])
2659 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002660
userwithuide85a6902017-08-09 13:41:44 +00002661 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002662 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002663 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002664 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002665 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002666 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002667 output : 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002668 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002669endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002670
2671if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002672 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002673 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002674 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002675 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002676endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002677
2678if git.found()
2679 git_head = run_command(
2680 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002681 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002682 'rev-parse', 'HEAD']).stdout().strip()
2683 git_head_short = run_command(
2684 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002685 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002686 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2687
2688 run_target(
2689 'git-snapshot',
2690 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002691 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002692 git_head_short),
2693 '--prefix', 'systemd-@0@/'.format(git_head),
2694 'HEAD'])
2695endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002696
2697############################################################
2698
Lennart Poettering51b13862017-12-20 12:51:14 +01002699meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2700run_target(
2701 'check-api-docs',
2702 depends : [man, libsystemd, libudev],
2703 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2704
2705############################################################
2706
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002707status = [
2708 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2709
Yu Watanabe359b4962017-11-25 20:35:24 +09002710 'prefix directory: @0@'.format(prefixdir),
2711 'rootprefix directory: @0@'.format(rootprefixdir),
2712 'sysconf directory: @0@'.format(sysconfdir),
2713 'include directory: @0@'.format(includedir),
2714 'lib directory: @0@'.format(libdir),
2715 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002716 'SysV init scripts: @0@'.format(sysvinit_path),
2717 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002718 'PAM modules directory: @0@'.format(pamlibdir),
2719 'PAM configuration directory: @0@'.format(pamconfdir),
2720 'RPM macros directory: @0@'.format(rpmmacrosdir),
2721 'modprobe.d directory: @0@'.format(modprobedir),
2722 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2723 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2724 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2725 'bash completions directory: @0@'.format(bashcompletiondir),
2726 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002727 'extra start script: @0@'.format(get_option('rc-local')),
2728 'extra stop script: @0@'.format(get_option('halt-local')),
2729 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2730 get_option('debug-tty')),
2731 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002732 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002733 'maximum system UID: @0@'.format(system_uid_max),
2734 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002735 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2736 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2737 'minimum container UID base: @0@'.format(container_uid_base_min),
2738 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002739 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002740 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002741 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002742 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002743 'nobody user name: @0@'.format(nobody_user),
2744 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002745 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002746 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002747
2748 'default DNSSEC mode: @0@'.format(default_dnssec),
2749 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2750 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2751
2752alt_dns_servers = '\n '.join(dns_servers.split(' '))
2753alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2754status += [
2755 'default DNS servers: @0@'.format(alt_dns_servers),
2756 'default NTP servers: @0@'.format(alt_ntp_servers)]
2757
2758alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2759 '@@0@'.format(time_epoch)).stdout().strip()
2760status += [
2761 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2762
2763# TODO:
2764# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2765# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2766# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2767
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002768if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002769 status += [
2770 'efi arch: @0@'.format(efi_arch)]
2771
2772 if have_gnu_efi
2773 status += [
2774 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2775 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002776 'EFI lib directory: @0@'.format(efi_libdir),
2777 'EFI lds directory: @0@'.format(efi_ldsdir),
2778 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002779 endif
2780endif
2781
2782found = []
2783missing = []
2784
2785foreach tuple : [
2786 ['libcryptsetup'],
2787 ['PAM'],
2788 ['AUDIT'],
2789 ['IMA'],
2790 ['AppArmor'],
2791 ['SELinux'],
2792 ['SECCOMP'],
2793 ['SMACK'],
2794 ['zlib'],
2795 ['xz'],
2796 ['lz4'],
2797 ['bzip2'],
2798 ['ACL'],
2799 ['gcrypt'],
2800 ['qrencode'],
2801 ['microhttpd'],
2802 ['gnutls'],
2803 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002804 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002805 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002806 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002807 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002808 ['libiptc'],
2809 ['elfutils'],
2810 ['binfmt'],
2811 ['vconsole'],
2812 ['quotacheck'],
2813 ['tmpfiles'],
2814 ['environment.d'],
2815 ['sysusers'],
2816 ['firstboot'],
2817 ['randomseed'],
2818 ['backlight'],
2819 ['rfkill'],
2820 ['logind'],
2821 ['machined'],
2822 ['importd'],
2823 ['hostnamed'],
2824 ['timedated'],
2825 ['timesyncd'],
2826 ['localed'],
2827 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002828 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002829 ['coredump'],
2830 ['polkit'],
2831 ['legacy pkla', install_polkit_pkla],
2832 ['efi'],
2833 ['gnu-efi', have_gnu_efi],
2834 ['kmod'],
2835 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01002836 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002837 ['blkid'],
2838 ['dbus'],
2839 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002840 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002841 ['hwdb'],
2842 ['tpm'],
2843 ['man pages', want_man],
2844 ['html pages', want_html],
2845 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002846 ['split /usr', conf.get('HAVE_SPLIT_USR') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002847 ['SysV compat'],
2848 ['utmp'],
2849 ['ldconfig'],
2850 ['hibernate'],
2851 ['adm group', get_option('adm-group')],
2852 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002853 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002854 ['debug hashmap'],
2855 ['debug mmap cache'],
2856]
2857
2858 cond = tuple.get(1, '')
2859 if cond == ''
2860 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2861 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002862 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002863 endif
2864 if cond
2865 found += [tuple[0]]
2866 else
2867 missing += [tuple[0]]
2868 endif
2869endforeach
2870
2871status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002872 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002873 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002874 '',
2875 'disabled features: @0@'.format(', '.join(missing)),
2876 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002877message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002878
2879if rootprefixdir != rootprefix_default
2880 message('WARNING:\n' +
2881 ' Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2882 ' systemd used fixed names for unit file directories and other paths, so anything\n' +
2883 ' except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
2884endif