blob: 607502c937a9bc9eb70627cde1b908d7bef26b65 [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-Szmek26754132018-03-01 11:49:42 +010057if get_option('split-usr') == 'auto'
58 split_usr = run_command('test', '-L', '/bin').returncode() != 0
59else
60 split_usr = get_option('split-usr') == 'true'
61endif
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010062conf.set10('HAVE_SPLIT_USR', split_usr)
63
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010064if get_option('split-bin') == 'auto'
65 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
66else
67 split_bin = get_option('split-bin') == 'true'
68endif
69
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010070rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010071# Unusual rootprefixdir values are used by some distros
72# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010073rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010074if rootprefixdir == ''
75 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010076endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040077
78sysvinit_path = get_option('sysvinit-path')
79sysvrcnd_path = get_option('sysvrcnd-path')
Max Harmathy54248242017-12-15 16:05:25 +010080have = sysvinit_path != '' and sysvrcnd_path != ''
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020081conf.set10('HAVE_SYSV_COMPAT', have,
82 description : 'SysV init scripts and rcN.d links are supported')
83m4_defines += have ? ['-DHAVE_SYSV_COMPAT'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040084
85# join_paths ignore the preceding arguments if an absolute component is
86# encountered, so this should canonicalize various paths when they are
87# absolute or relative.
88prefixdir = get_option('prefix')
89if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040090 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040091endif
92bindir = join_paths(prefixdir, get_option('bindir'))
93libdir = join_paths(prefixdir, get_option('libdir'))
94sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
95includedir = join_paths(prefixdir, get_option('includedir'))
96datadir = join_paths(prefixdir, get_option('datadir'))
97localstatedir = join_paths('/', get_option('localstatedir'))
98
99rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +0100100rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400101rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
102
103rootlibdir = get_option('rootlibdir')
104if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400105 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400106endif
107
108# Dirs of external packages
Michael Bieble17e5ba2017-04-13 10:30:56 -0400109pkgconfigdatadir = join_paths(datadir, 'pkgconfig')
110pkgconfiglibdir = join_paths(libdir, 'pkgconfig')
111polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
112polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
113polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
114varlogdir = join_paths(localstatedir, 'log')
115xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900116rpmmacrosdir = get_option('rpmmacrosdir')
117if rpmmacrosdir != 'no'
118 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
119endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200120modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400121
122# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400123pkgdatadir = join_paths(datadir, 'systemd')
124environmentdir = join_paths(prefixdir, 'lib/environment.d')
125pkgsysconfdir = join_paths(sysconfdir, 'systemd')
126userunitdir = join_paths(prefixdir, 'lib/systemd/user')
127userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
128tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
129sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
130sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
131binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
132modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
133networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
134pkgincludedir = join_paths(includedir, 'systemd')
135systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
136usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
137systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
138userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
139systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
140systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
141systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
142systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
143udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
144udevhomedir = udevlibexecdir
145udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
146udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
147catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
148kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
149factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400150bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
151testsdir = join_paths(prefixdir, 'lib/systemd/tests')
152systemdstatedir = join_paths(localstatedir, 'lib/systemd')
153catalogstatedir = join_paths(systemdstatedir, 'catalog')
154randomseeddir = join_paths(localstatedir, 'lib/systemd')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400155
tblume75aaade2018-02-01 22:46:15 +0100156docdir = get_option('docdir')
157if docdir == ''
158 docdir = join_paths(datadir, 'doc/systemd')
159endif
160
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400161dbuspolicydir = get_option('dbuspolicydir')
162if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400163 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400164endif
165
166dbussessionservicedir = get_option('dbussessionservicedir')
167if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400168 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400169endif
170
171dbussystemservicedir = get_option('dbussystemservicedir')
172if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400173 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400174endif
175
176pamlibdir = get_option('pamlibdir')
177if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400178 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400179endif
180
181pamconfdir = get_option('pamconfdir')
182if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400183 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400184endif
185
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100186memory_accounting_default = get_option('memory-accounting-default')
187
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400188conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400189conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400190conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
191conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
192conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400193conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
194conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400195conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400196conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
197conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400198conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
199conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
200conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
201conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100202conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100203conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400204conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
205conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
206conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
207conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
208conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100209conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400210conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400211conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
212conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400213conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
214conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
215conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
216conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
217conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
218conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400219conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
220conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400221conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400222conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400223conf.set_quoted('LIBDIR', libdir)
224conf.set_quoted('ROOTLIBDIR', rootlibdir)
225conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
226conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400227conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
228conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
229conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
230conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
231conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
232conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100233conf.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'true' : 'false')
234conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_ON_OFF', memory_accounting_default ? 'on' : 'off')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400235
236conf.set_quoted('ABS_BUILD_DIR', meson.build_root())
237conf.set_quoted('ABS_SRC_DIR', meson.source_root())
238
239substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400240substs.set('exec_prefix', prefixdir)
241substs.set('libdir', libdir)
242substs.set('rootlibdir', rootlibdir)
243substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400244substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400245substs.set('bindir', bindir)
246substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400247substs.set('rootlibexecdir', rootlibexecdir)
248substs.set('systemunitdir', systemunitdir)
249substs.set('userunitdir', userunitdir)
250substs.set('systempresetdir', systempresetdir)
251substs.set('userpresetdir', userpresetdir)
252substs.set('udevhwdbdir', udevhwdbdir)
253substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400254substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400255substs.set('catalogdir', catalogdir)
256substs.set('tmpfilesdir', tmpfilesdir)
257substs.set('sysusersdir', sysusersdir)
258substs.set('sysctldir', sysctldir)
259substs.set('binfmtdir', binfmtdir)
260substs.set('modulesloaddir', modulesloaddir)
261substs.set('systemgeneratordir', systemgeneratordir)
262substs.set('usergeneratordir', usergeneratordir)
263substs.set('systemenvgeneratordir', systemenvgeneratordir)
264substs.set('userenvgeneratordir', userenvgeneratordir)
265substs.set('systemshutdowndir', systemshutdowndir)
266substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400267substs.set('VARLOGDIR', varlogdir)
268substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400269substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
270substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400271substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
272substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
273substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
274substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100275substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400276
277#####################################################################
278
279cc = meson.get_compiler('c')
280pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400281check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100282meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400283
Adam Duskett08318a22018-01-15 06:25:46 -0500284if get_option('tests') != 'false'
285 cxx = find_program('c++', required : false)
286 if cxx.found()
287 # Used only for tests
288 add_languages('cpp')
289 endif
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400290endif
291
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500292want_ossfuzz = get_option('oss-fuzz')
293want_libfuzzer = get_option('llvm-fuzz')
294fuzzer_build = want_ossfuzz or want_libfuzzer
295if want_ossfuzz and want_libfuzzer
296 error('only one of oss-fuzz and llvm-fuzz can be specified')
297endif
298if want_libfuzzer
299 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
300endif
301if want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500302 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
303endif
304
Zbigniew Jędrzejewski-Szmek75cf1d62017-07-04 17:59:15 -0400305foreach arg : ['-Wextra',
Zbigniew Jędrzejewski-Szmek70160ce2017-10-03 12:11:49 +0200306 '-Werror=undef',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400307 '-Wlogical-op',
308 '-Wmissing-include-dirs',
309 '-Wold-style-definition',
310 '-Wpointer-arith',
311 '-Winit-self',
312 '-Wdeclaration-after-statement',
313 '-Wfloat-equal',
314 '-Wsuggest-attribute=noreturn',
315 '-Werror=missing-prototypes',
316 '-Werror=implicit-function-declaration',
317 '-Werror=missing-declarations',
318 '-Werror=return-type',
319 '-Werror=incompatible-pointer-types',
320 '-Werror=format=2',
321 '-Wstrict-prototypes',
322 '-Wredundant-decls',
323 '-Wmissing-noreturn',
Zbigniew Jędrzejewski-Szmek97279d82017-11-20 14:23:40 +0100324 '-Wimplicit-fallthrough=5',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400325 '-Wshadow',
326 '-Wendif-labels',
327 '-Wstrict-aliasing=2',
328 '-Wwrite-strings',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400329 '-Werror=overflow',
330 '-Wdate-time',
331 '-Wnested-externs',
332 '-ffast-math',
333 '-fno-common',
334 '-fdiagnostics-show-option',
335 '-fno-strict-aliasing',
336 '-fvisibility=hidden',
337 '-fstack-protector',
338 '-fstack-protector-strong',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400339 '--param=ssp-buffer-size=4',
340 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400341 if cc.has_argument(arg)
342 add_project_arguments(arg, language : 'c')
343 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400344endforeach
345
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500346# the oss-fuzz fuzzers are not built with -fPIE, so don't
347# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500348if not fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500349 if cc.has_argument('-fPIE')
350 add_project_arguments('-fPIE', language : 'c')
351 endif
352endif
353
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400354# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
355# arguments, just emits a warnings. So test for the "positive" version instead.
356foreach arg : ['unused-parameter',
357 'missing-field-initializers',
358 'unused-result',
Zbigniew Jędrzejewski-Szmekfb1b5882017-09-04 19:49:12 +0300359 'format-signedness',
360 'error=nonnull', # work-around for gcc 7.1 turning this on on its own
361 ]
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400362 if cc.has_argument('-W' + arg)
363 add_project_arguments('-Wno-' + arg, language : 'c')
364 endif
365endforeach
366
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800367if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400368 #include <time.h>
369 #include <inttypes.h>
370 typedef uint64_t usec_t;
371 usec_t now(clockid_t clock);
372 int main(void) {
373 struct timespec now;
374 return 0;
375 }
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800376''', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400377 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400378endif
379
380if cc.get_id() == 'clang'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400381 foreach arg : ['-Wno-typedef-redefinition',
382 '-Wno-gnu-variable-sized-type-not-at-end',
383 ]
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400384 if cc.has_argument(arg,
385 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400386 add_project_arguments(arg, language : 'c')
387 endif
388 endforeach
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400389endif
390
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400391link_test_c = files('tools/meson-link-test.c')
392
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400393# --as-needed and --no-undefined are provided by meson by default,
394# run mesonconf to see what is enabled
395foreach arg : ['-Wl,-z,relro',
396 '-Wl,-z,now',
397 '-pie',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400398 ]
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400399
400 have = run_command(check_compilation_sh,
401 cc.cmd_array(), '-x', 'c', arg,
402 '-include', link_test_c).returncode() == 0
403 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500404 if have and (arg != '-pie' or not fuzzer_build)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400405 add_project_link_arguments(arg, language : 'c')
406 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400407endforeach
408
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100409# Check if various sanitizers are supported
410sanitizers = []
411foreach arg : ['address']
412
413 have = run_command(check_compilation_sh,
414 cc.cmd_array(), '-x', 'c',
415 '-fsanitize=@0@'.format(arg),
416 '-include', link_test_c).returncode() == 0
417 message('@0@ sanitizer supported: @1@'.format(arg, have ? 'yes' : 'no'))
418 if have
419 sanitizers += arg
420 endif
421endforeach
422
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400423if get_option('buildtype') != 'debug'
424 foreach arg : ['-ffunction-sections',
425 '-fdata-sections']
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400426 if cc.has_argument(arg,
427 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400428 add_project_arguments(arg, language : 'c')
429 endif
430 endforeach
431
432 foreach arg : ['-Wl,--gc-sections']
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400433 have = run_command(check_compilation_sh,
434 cc.cmd_array(), '-x', 'c', arg,
435 '-include', link_test_c).returncode() == 0
436 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
437 if have
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400438 add_project_link_arguments(arg, language : 'c')
439 endif
440 endforeach
441endif
442
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400443cpp = ' '.join(cc.cmd_array()) + ' -E'
444
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400445#####################################################################
446# compilation result tests
447
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400448conf.set('_GNU_SOURCE', true)
449conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400450
451conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
452conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
453conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
454conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
455conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
456conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
457conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
458
459decl_headers = '''
460#include <uchar.h>
461#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000462#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100463#include <linux/stat.h>
464#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400465'''
466# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
467
468foreach decl : ['char16_t',
469 'char32_t',
470 'key_serial_t',
471 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000472 'struct fib_rule_uid_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100473 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400474 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400475
476 # We get -1 if the size cannot be determined
477 have = cc.sizeof(decl, prefix : decl_headers) > 0
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200478 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400479endforeach
480
481foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
482 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
483 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
484 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530485 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400486 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
487 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
488 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
489 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
490 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530491 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400492 # if_tunnel.h is buggy and cannot be included on its own
493 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
494 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
495 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
496 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
497 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
498 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
499 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530500 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400501 ['NDA_IFINDEX', 'linux/neighbour.h'],
502 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000503 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400504 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530505 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400506 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400507 prefix = decl.length() > 2 ? decl[2] : ''
508 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200509 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400510endforeach
511
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400512foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200513 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400514endforeach
515
516foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100517 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100518 ['gettid', '''#include <sys/types.h>
519 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100520 ['pivot_root', '''#include <stdlib.h>
521 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100522 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400523 #include <sys/stat.h>
524 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100525 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100526 ['renameat2', '''#include <stdio.h>
527 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400528 ['kcmp', '''#include <linux/kcmp.h>'''],
529 ['keyctl', '''#include <sys/types.h>
530 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100531 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400532 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200533 ['bpf', '''#include <sys/syscall.h>
534 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100535 ['statx', '''#include <sys/types.h>
536 #include <sys/stat.h>
537 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100538 ['explicit_bzero' , '''#include <string.h>'''],
539 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400540]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400541
Lennart Poettering85db59b2017-12-25 12:01:14 +0100542 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200543 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400544endforeach
545
Lennart Poettering85db59b2017-12-25 12:01:14 +0100546if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200547 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200548 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400549else
550 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200551 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200552 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400553endif
554
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400555#####################################################################
556
557sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400558awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400559m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400560stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400561git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100562env = find_program('env')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400563
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400564meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400565mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400566test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
567splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400568
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400569# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
570# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500571progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400572 ['quotacheck', '/usr/sbin/quotacheck' ],
573 ['kill', '/usr/bin/kill' ],
574 ['kmod', '/usr/bin/kmod' ],
575 ['kexec', '/usr/sbin/kexec' ],
576 ['sulogin', '/usr/sbin/sulogin' ],
577 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
578 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
579 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
580 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
581 ]
582foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400583 path = get_option(prog[0] + '-path')
584 if path != ''
585 message('Using @1@ for @0@'.format(prog[0], path))
586 else
587 exe = find_program(prog[0],
588 '/usr/sbin/' + prog[0],
589 '/sbin/' + prog[0],
590 required: false)
591 path = exe.found() ? exe.path() : prog[1]
592 endif
593 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
594 conf.set_quoted(name, path)
595 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400596endforeach
597
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500598conf.set_quoted('TELINIT', get_option('telinit-path'))
599
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400600if run_command('ln', '--relative', '--help').returncode() != 0
601 error('ln does not support --relative')
602endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400603
604############################################################
605
606gperf = find_program('gperf')
607
608gperf_test_format = '''
609#include <string.h>
610const char * in_word_set(const char *, @0@);
611@1@
612'''
613gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
614gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
615gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
616if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400617 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400618else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400619 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
620 if cc.compiles(gperf_test)
621 gperf_len_type = 'unsigned'
622 else
623 error('unable to determine gperf len type')
624 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400625endif
626message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400627conf.set('GPERF_LEN_TYPE', gperf_len_type,
628 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400629
630############################################################
631
632if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400633 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400634endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100635foreach header : ['crypt.h',
636 'linux/btrfs.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400637 'linux/memfd.h',
638 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200639 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400640 'valgrind/memcheck.h',
641 'valgrind/valgrind.h',
642 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400643
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200644 conf.set10('HAVE_' + header.underscorify().to_upper(),
645 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400646endforeach
647
648############################################################
649
650conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400651conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
652gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400653
654default_hierarchy = get_option('default-hierarchy')
655conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
656 description : 'default cgroup hierarchy as string')
657if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400658 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400659elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400660 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400661else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400662 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400663endif
664
665time_epoch = get_option('time-epoch')
666if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400667 NEWS = files('NEWS')
668 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400669endif
670time_epoch = time_epoch.to_int()
671conf.set('TIME_EPOCH', time_epoch)
672
673system_uid_max = get_option('system-uid-max')
674if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400675 system_uid_max = run_command(
676 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800677 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
678 '/etc/login.defs').stdout().strip()
679 if system_uid_max == ''
680 system_uid_max = '999'
681 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400682endif
683system_uid_max = system_uid_max.to_int()
684conf.set('SYSTEM_UID_MAX', system_uid_max)
685substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400686message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400687
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400688system_gid_max = get_option('system-gid-max')
689if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400690 system_gid_max = run_command(
691 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800692 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
693 '/etc/login.defs').stdout().strip()
694 if system_gid_max == ''
695 system_gid_max = '999'
696 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400697endif
698system_gid_max = system_gid_max.to_int()
699conf.set('SYSTEM_GID_MAX', system_gid_max)
700substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400701message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400702
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100703dynamic_uid_min = get_option('dynamic-uid-min').to_int()
704dynamic_uid_max = get_option('dynamic-uid-max').to_int()
705conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
706conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
707substs.set('dynamicuidmin', dynamic_uid_min)
708substs.set('dynamicuidmax', dynamic_uid_max)
709
710container_uid_base_min = get_option('container-uid-base-min').to_int()
711container_uid_base_max = get_option('container-uid-base-max').to_int()
712conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
713conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
714substs.set('containeruidbasemin', container_uid_base_min)
715substs.set('containeruidbasemax', container_uid_base_max)
716
Lennart Poetteringafde4572017-12-05 11:00:24 +0100717nobody_user = get_option('nobody-user')
718nobody_group = get_option('nobody-group')
719
720getent_result = run_command('getent', 'passwd', '65534')
721if getent_result.returncode() == 0
722 name = getent_result.stdout().split(':')[0]
723 if name != nobody_user
724 message('WARNING:\n' +
725 ' 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) +
726 ' Your build will result in an user table setup that is incompatible with the local system.')
727 endif
728endif
729id_result = run_command('id', '-u', nobody_user)
730if id_result.returncode() == 0
731 id = id_result.stdout().to_int()
732 if id != 65534
733 message('WARNING:\n' +
734 ' 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) +
735 ' Your build will result in an user table setup that is incompatible with the local system.')
736 endif
737endif
738
739getent_result = run_command('getent', 'group', '65534')
740if getent_result.returncode() == 0
741 name = getent_result.stdout().split(':')[0]
742 if name != nobody_group
743 message('WARNING:\n' +
744 ' 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) +
745 ' Your build will result in an group table setup that is incompatible with the local system.')
746 endif
747endif
748id_result = run_command('id', '-g', nobody_group)
749if id_result.returncode() == 0
750 id = id_result.stdout().to_int()
751 if id != 65534
752 message('WARNING:\n' +
753 ' 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) +
754 ' Your build will result in an group table setup that is incompatible with the local system.')
755 endif
756endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900757if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
758 message('WARNING:\n' +
759 ' The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
760 ' Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
761endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100762
763conf.set_quoted('NOBODY_USER_NAME', nobody_user)
764conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900765substs.set('NOBODY_USER_NAME', nobody_user)
766substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100767
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400768tty_gid = get_option('tty-gid')
769conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400770substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400771
Ikey Doherty84786b82017-12-03 12:28:23 +0000772# Ensure provided GID argument is numeric, otherwise fallback to default assignment
773if get_option('users-gid') != ''
Yu Watanabed6806872017-12-05 14:01:39 +0900774 users_gid = get_option('users-gid').to_int()
Ikey Doherty84786b82017-12-03 12:28:23 +0000775else
Yu Watanabed6806872017-12-05 14:01:39 +0900776 users_gid = '-'
Ikey Doherty84786b82017-12-03 12:28:23 +0000777endif
778substs.set('USERS_GID', users_gid)
779
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400780if get_option('adm-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400781 m4_defines += ['-DENABLE_ADM_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400782endif
783
784if get_option('wheel-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400785 m4_defines += ['-DENABLE_WHEEL_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400786endif
787
788substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700789substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400790
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400791kill_user_processes = get_option('default-kill-user-processes')
792conf.set10('KILL_USER_PROCESSES', kill_user_processes)
793substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400794
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400795dns_servers = get_option('dns-servers')
796conf.set_quoted('DNS_SERVERS', dns_servers)
797substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400798
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400799ntp_servers = get_option('ntp-servers')
800conf.set_quoted('NTP_SERVERS', ntp_servers)
801substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400802
803conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
804
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400805substs.set('SUSHELL', get_option('debug-shell'))
806substs.set('DEBUGTTY', get_option('debug-tty'))
807
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400808debug = get_option('debug')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200809enable_debug_hashmap = false
810enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400811if debug != ''
812 foreach name : debug.split(',')
813 if name == 'hashmap'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200814 enable_debug_hashmap = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400815 elif name == 'mmap-cache'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200816 enable_debug_mmap_cache = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400817 else
818 message('unknown debug option "@0@", ignoring'.format(name))
819 endif
820 endforeach
821endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200822conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
823conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400824
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400825#####################################################################
826
827threads = dependency('threads')
828librt = cc.find_library('rt')
829libm = cc.find_library('m')
830libdl = cc.find_library('dl')
831libcrypt = cc.find_library('crypt')
832
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400833libcap = dependency('libcap', required : false)
834if not libcap.found()
835 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
836 libcap = cc.find_library('cap')
837endif
838
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400839libmount = dependency('mount',
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -0500840 version : '>= 2.30',
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500841 required : not fuzzer_build)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400842
843want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500844if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400845 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400846 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400847 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200848 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400849else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200850 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400851 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400852endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200853conf.set10('HAVE_SECCOMP', have)
854m4_defines += have ? ['-DHAVE_SECCOMP'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400855
856want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500857if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400858 libselinux = dependency('libselinux',
859 version : '>= 2.1.9',
860 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200861 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400862else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200863 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400864 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400865endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200866conf.set10('HAVE_SELINUX', have)
867m4_defines += have ? ['-DHAVE_SELINUX'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400868
869want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500870if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400871 libapparmor = dependency('libapparmor',
872 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200873 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400874else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200875 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400876 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400877endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200878conf.set10('HAVE_APPARMOR', have)
879m4_defines += have ? ['-DHAVE_APPARMOR'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400880
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400881smack_run_label = get_option('smack-run-label')
882if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400883 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
884 m4_defines += ['-DHAVE_SMACK_RUN_LABEL']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400885endif
886
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400887want_polkit = get_option('polkit')
888install_polkit = false
889install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500890if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400891 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400892
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400893 libpolkit = dependency('polkit-gobject-1',
894 required : false)
895 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
896 message('Old polkit detected, will install pkla files')
897 install_polkit_pkla = true
898 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400899endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200900conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400901
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400902want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500903if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400904 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200905 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400906else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200907 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400908 libacl = []
909endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200910conf.set10('HAVE_ACL', have)
911m4_defines += have ? ['-DHAVE_ACL'] : []
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400912
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400913want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500914if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400915 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200916 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400917else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200918 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400919 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400920endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200921conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400922
923want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500924if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400925 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200926 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400927else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200928 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400929 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400930endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200931conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400932
933want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500934if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400935 libkmod = dependency('libkmod',
936 version : '>= 15',
937 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200938 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400939else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200940 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400941 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400942endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200943conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400944
945want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500946if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400947 libpam = cc.find_library('pam', required : want_pam == 'true')
948 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200949 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400950else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200951 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400952 libpam = []
953 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400954endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200955conf.set10('HAVE_PAM', have)
956m4_defines += have ? ['-DHAVE_PAM'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400957
958want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500959if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400960 libmicrohttpd = dependency('libmicrohttpd',
961 version : '>= 0.9.33',
962 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200963 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400964else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200965 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400966 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400967endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200968conf.set10('HAVE_MICROHTTPD', have)
969m4_defines += have ? ['-DHAVE_MICROHTTPD'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400970
971want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500972if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400973 libcryptsetup = dependency('libcryptsetup',
974 version : '>= 1.6.0',
975 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200976 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400977else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200978 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400979 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400980endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200981conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400982
983want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500984if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400985 libcurl = dependency('libcurl',
986 version : '>= 7.32.0',
987 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200988 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400989else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200990 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400991 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400992endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200993conf.set10('HAVE_LIBCURL', have)
994m4_defines += have ? ['-DHAVE_LIBCURL'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400995
996want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400997want_libidn2 = get_option('libidn2')
998if want_libidn == 'true' and want_libidn2 == 'true'
999 error('libidn and libidn2 cannot be requested simultaneously')
1000endif
1001
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001002if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001003 libidn = dependency('libidn',
1004 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001005 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001006else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001007 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001008 libidn = []
1009endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001010conf.set10('HAVE_LIBIDN', have)
1011m4_defines += have ? ['-DHAVE_LIBIDN'] : []
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001012if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001013 # libidn is used for both libidn and libidn2 objects
1014 libidn = dependency('libidn2',
1015 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001016 have = libidn.found()
1017else
1018 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001019endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001020conf.set10('HAVE_LIBIDN2', have)
1021m4_defines += have ? ['-DHAVE_LIBIDN2'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001022
1023want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001024if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001025 libiptc = dependency('libiptc',
1026 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001027 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001028else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001029 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001030 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001031endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001032conf.set10('HAVE_LIBIPTC', have)
1033m4_defines += have ? ['-DHAVE_LIBIPTC'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001034
1035want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001036if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001037 libqrencode = dependency('libqrencode',
1038 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001039 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001040else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001041 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001042 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001043endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001044conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001045
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001046want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001047if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001048 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1049 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001050 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001051else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001052 have = false
1053endif
1054if not have
1055 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001056 libgcrypt = []
1057 libgpg_error = []
1058endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001059conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001060
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001061want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001062if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001063 libgnutls = dependency('gnutls',
1064 version : '>= 3.1.4',
1065 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001066 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001067else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001068 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001069 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001070endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001071conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001072
1073want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001074if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001075 libdw = dependency('libdw',
1076 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001077 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001078else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001079 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001080 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001081endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001082conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001083
1084want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001085if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001086 libz = dependency('zlib',
1087 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001088 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001089else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001090 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001091 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001092endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001093conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001094
1095want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001096if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001097 libbzip2 = cc.find_library('bz2',
1098 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001099 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001100else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001101 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001102 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001103endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001104conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001105
1106want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001107if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001108 libxz = dependency('liblzma',
1109 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001110 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001111else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001112 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001113 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001114endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001115conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001116
1117want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001118if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001119 liblz4 = dependency('liblz4',
1120 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001121 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001122else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001123 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001124 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001125endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001126conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001127
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001128want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001129if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001130 libxkbcommon = dependency('xkbcommon',
1131 version : '>= 0.3.0',
1132 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001133 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001134else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001135 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001136 libxkbcommon = []
1137endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001138conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001139
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001140want_pcre2 = get_option('pcre2')
1141if want_pcre2 != 'false'
1142 libpcre2 = dependency('libpcre2-8',
1143 required : want_pcre2 == 'true')
1144 have = libpcre2.found()
1145else
1146 have = false
1147 libpcre2 = []
1148endif
1149conf.set10('HAVE_PCRE2', have)
1150
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001151want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001152if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001153 libglib = dependency('glib-2.0',
1154 version : '>= 2.22.0',
1155 required : want_glib == 'true')
1156 libgobject = dependency('gobject-2.0',
1157 version : '>= 2.22.0',
1158 required : want_glib == 'true')
1159 libgio = dependency('gio-2.0',
1160 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001161 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001162else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001163 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001164 libglib = []
1165 libgobject = []
1166 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001167endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001168conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001169
1170want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001171if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001172 libdbus = dependency('dbus-1',
1173 version : '>= 1.3.2',
1174 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001175 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001176else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001177 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001178 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001179endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001180conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001181
Yu Watanabe42303dc2017-06-18 05:22:32 +09001182default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001183if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001184 default_dnssec = 'no'
1185endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001186if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001187 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1188 default_dnssec = 'no'
1189endif
1190conf.set('DEFAULT_DNSSEC_MODE',
1191 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1192substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1193
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001194want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001195if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001196 have = (conf.get('HAVE_LIBCURL') == 1 and
1197 conf.get('HAVE_ZLIB') == 1 and
1198 conf.get('HAVE_BZIP2') == 1 and
1199 conf.get('HAVE_XZ') == 1 and
1200 conf.get('HAVE_GCRYPT') == 1)
1201 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001202 error('importd support was requested, but dependencies are not available')
1203 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001204else
1205 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001206endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001207conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001208
1209want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001210if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001211 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1212 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001213 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1214 # it's possible to build one without the other. Complain only if
1215 # support was explictly requested. The auxiliary files like sysusers
1216 # config should be installed when any of the programs are built.
1217 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1218 error('remote support was requested, but dependencies are not available')
1219 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001220 have = have_deps[0] or have_deps[1]
1221else
1222 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001223endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001224conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001225
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001226foreach term : ['utmp',
1227 'hibernate',
1228 'environment-d',
1229 'binfmt',
1230 'coredump',
1231 'resolve',
1232 'logind',
1233 'hostnamed',
1234 'localed',
1235 'machined',
1236 'networkd',
1237 'timedated',
1238 'timesyncd',
1239 'myhostname',
1240 'firstboot',
1241 'randomseed',
1242 'backlight',
1243 'vconsole',
1244 'quotacheck',
1245 'sysusers',
1246 'tmpfiles',
1247 'hwdb',
1248 'rfkill',
1249 'ldconfig',
1250 'efi',
1251 'tpm',
1252 'ima',
1253 'smack',
1254 'gshadow',
1255 'idn',
1256 'nss-systemd']
1257 have = get_option(term)
1258 name = 'ENABLE_' + term.underscorify().to_upper()
1259 conf.set10(name, have)
1260 m4_defines += have ? ['-D' + name] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001261endforeach
1262
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001263want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001264install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001265slow_tests = get_option('slow-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001266tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001267fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001268
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001269conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001270
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001271#####################################################################
1272
1273if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001274 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001275
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001276 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001277 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001278 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001279 elif efi_arch == 'x86_64'
1280 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001281 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001282 elif efi_arch == 'arm'
1283 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001284 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001285 elif efi_arch == 'aarch64'
1286 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001287 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001288 else
1289 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001290 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001291 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001292
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001293 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001294 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001295
1296 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001297else
1298 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001299endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001300conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001301
1302#####################################################################
1303
1304config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001305 output : 'config.h',
1306 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001307
1308includes = include_directories('src/basic',
1309 'src/shared',
1310 'src/systemd',
1311 'src/journal',
1312 'src/resolve',
1313 'src/timesync',
1314 'src/login',
1315 'src/udev',
1316 'src/libudev',
1317 'src/core',
1318 'src/libsystemd/sd-bus',
1319 'src/libsystemd/sd-device',
1320 'src/libsystemd/sd-hwdb',
1321 'src/libsystemd/sd-id128',
1322 'src/libsystemd/sd-netlink',
1323 'src/libsystemd/sd-network',
1324 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001325 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001326
1327add_project_arguments('-include', 'config.h', language : 'c')
1328
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001329subdir('po')
1330subdir('catalog')
1331subdir('src/systemd')
1332subdir('src/basic')
1333subdir('src/libsystemd')
1334subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001335subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001336subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001337
1338libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001339 'journal-core',
1340 libjournal_core_sources,
1341 journald_gperf_c,
1342 include_directories : includes,
1343 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001344
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001345libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001346libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001347 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001348 '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 +02001349 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001350 include_directories : includes,
1351 link_args : ['-shared',
1352 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001353 link_with : [libbasic,
1354 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001355 link_whole : [libsystemd_static,
1356 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001357 dependencies : [threads,
1358 librt,
1359 libxz,
1360 liblz4],
1361 link_depends : libsystemd_sym,
1362 install : true,
1363 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001364
1365############################################################
1366
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001367# binaries that have --help and are intended for use by humans,
1368# usually, but not always, installed in /bin.
1369public_programs = []
1370
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001371subdir('src/libudev')
1372subdir('src/shared')
1373subdir('src/core')
1374subdir('src/udev')
1375subdir('src/network')
1376
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001377subdir('src/analyze')
1378subdir('src/journal-remote')
1379subdir('src/coredump')
1380subdir('src/hostname')
1381subdir('src/import')
1382subdir('src/kernel-install')
1383subdir('src/locale')
1384subdir('src/machine')
1385subdir('src/nspawn')
1386subdir('src/resolve')
1387subdir('src/timedate')
1388subdir('src/timesync')
1389subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001390subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001391
1392subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001393subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001394subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001395subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001396
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001397############################################################
1398
1399# only static linking apart from libdl, to make sure that the
1400# module is linked to all libraries that it uses.
1401test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001402 'test-dlopen',
1403 test_dlopen_c,
1404 include_directories : includes,
1405 link_with : [libbasic],
1406 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001407
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001408foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001409 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001410 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001411 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001412
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001413 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001414 if condition
1415 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001416
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001417 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1418 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001419
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001420 nss = shared_library(
1421 'nss_' + module,
1422 'src/nss-@0@/nss-@0@.c'.format(module),
1423 version : '2',
1424 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001425 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1426 link_args : ['-Wl,-z,nodelete',
1427 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001428 '-Wl,--version-script=' + version_script_arg,
1429 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001430 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001431 libbasic],
1432 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001433 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001434 link_depends : sym,
1435 install : true,
1436 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001437
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001438 # We cannot use shared_module because it does not support version suffix.
1439 # Unfortunately shared_library insists on creating the symlink…
1440 meson.add_install_script('sh', '-c',
1441 'rm $DESTDIR@0@/libnss_@1@.so'
1442 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001443
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001444 test('dlopen-nss_' + module,
1445 test_dlopen,
1446 args : [nss.full_path()]) # path to dlopen must include a slash
1447 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001448endforeach
1449
1450############################################################
1451
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001452executable('systemd',
1453 systemd_sources,
1454 include_directories : includes,
1455 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001456 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001457 dependencies : [threads,
1458 librt,
1459 libseccomp,
1460 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001461 libmount,
1462 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001463 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001464 install : true,
1465 install_dir : rootlibexecdir)
1466
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001467meson.add_install_script(meson_make_symlink,
1468 join_paths(rootlibexecdir, 'systemd'),
1469 join_paths(rootsbindir, 'init'))
1470
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001471exe = executable('systemd-analyze',
1472 systemd_analyze_sources,
1473 include_directories : includes,
1474 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001475 libshared],
1476 dependencies : [threads,
1477 librt,
1478 libseccomp,
1479 libselinux,
1480 libmount,
1481 libblkid],
1482 install_rpath : rootlibexecdir,
1483 install : true)
1484public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001485
1486executable('systemd-journald',
1487 systemd_journald_sources,
1488 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001489 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001490 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001491 dependencies : [threads,
1492 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001493 liblz4,
1494 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001495 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001496 install : true,
1497 install_dir : rootlibexecdir)
1498
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001499exe = executable('systemd-cat',
1500 systemd_cat_sources,
1501 include_directories : includes,
1502 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001503 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001504 dependencies : [threads],
1505 install_rpath : rootlibexecdir,
1506 install : true)
1507public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001508
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001509exe = executable('journalctl',
1510 journalctl_sources,
1511 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001512 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001513 dependencies : [threads,
1514 libqrencode,
1515 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001516 liblz4,
1517 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001518 install_rpath : rootlibexecdir,
1519 install : true,
1520 install_dir : rootbindir)
1521public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001522
1523executable('systemd-getty-generator',
1524 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001525 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001526 link_with : [libshared],
1527 install_rpath : rootlibexecdir,
1528 install : true,
1529 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001530
1531executable('systemd-debug-generator',
1532 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001533 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001534 link_with : [libshared],
1535 install_rpath : rootlibexecdir,
1536 install : true,
1537 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001538
1539executable('systemd-fstab-generator',
1540 'src/fstab-generator/fstab-generator.c',
1541 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001542 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001543 link_with : [libshared],
1544 install_rpath : rootlibexecdir,
1545 install : true,
1546 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001547
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001548if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001549 executable('30-systemd-environment-d-generator',
1550 'src/environment-d-generator/environment-d-generator.c',
1551 include_directories : includes,
1552 link_with : [libshared],
1553 install_rpath : rootlibexecdir,
1554 install : true,
1555 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001556
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001557 meson.add_install_script(meson_make_symlink,
1558 join_paths(sysconfdir, 'environment'),
1559 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001560endif
1561
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001562if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001563 executable('systemd-hibernate-resume-generator',
1564 'src/hibernate-resume/hibernate-resume-generator.c',
1565 include_directories : includes,
1566 link_with : [libshared],
1567 install_rpath : rootlibexecdir,
1568 install : true,
1569 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001570
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001571 executable('systemd-hibernate-resume',
1572 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001573 include_directories : includes,
1574 link_with : [libshared],
1575 install_rpath : rootlibexecdir,
1576 install : true,
1577 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001578endif
1579
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001580if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001581 executable('systemd-gpt-auto-generator',
1582 'src/gpt-auto-generator/gpt-auto-generator.c',
1583 'src/basic/blkid-util.h',
1584 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001585 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001586 dependencies : libblkid,
1587 install_rpath : rootlibexecdir,
1588 install : true,
1589 install_dir : systemgeneratordir)
1590
1591 exe = executable('systemd-dissect',
1592 'src/dissect/dissect.c',
1593 include_directories : includes,
1594 link_with : [libshared],
1595 install_rpath : rootlibexecdir,
1596 install : true,
1597 install_dir : rootlibexecdir)
1598 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001599endif
1600
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001601if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001602 executable('systemd-resolved',
1603 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001604 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001605 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001606 libbasic_gcrypt,
1607 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001608 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001609 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001610 libm,
1611 libidn],
1612 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001613 install : true,
1614 install_dir : rootlibexecdir)
1615
1616 exe = executable('systemd-resolve',
1617 systemd_resolve_sources,
1618 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001619 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001620 libbasic_gcrypt,
1621 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001622 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001623 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001624 libm,
1625 libidn],
1626 install_rpath : rootlibexecdir,
1627 install : true)
1628 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001629endif
1630
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001631if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001632 executable('systemd-logind',
1633 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001634 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001635 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001636 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001637 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001638 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001639 install_rpath : rootlibexecdir,
1640 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001641 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001642
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001643 exe = executable('loginctl',
1644 loginctl_sources,
1645 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001646 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001647 dependencies : [threads,
1648 liblz4,
1649 libxz],
1650 install_rpath : rootlibexecdir,
1651 install : true,
1652 install_dir : rootbindir)
1653 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001654
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001655 exe = executable('systemd-inhibit',
1656 'src/login/inhibit.c',
1657 include_directories : includes,
1658 link_with : [libshared],
1659 install_rpath : rootlibexecdir,
1660 install : true,
1661 install_dir : rootbindir)
1662 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001663
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001664 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001665 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1666 pam_systemd = shared_library(
1667 'pam_systemd',
1668 pam_systemd_c,
1669 name_prefix : '',
1670 include_directories : includes,
1671 link_args : ['-shared',
1672 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001673 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001674 libshared_static],
1675 dependencies : [threads,
1676 libpam,
1677 libpam_misc],
1678 link_depends : pam_systemd_sym,
1679 install : true,
1680 install_dir : pamlibdir)
1681
1682 test('dlopen-pam_systemd',
1683 test_dlopen,
1684 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1685 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001686endif
1687
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001688if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001689 executable('systemd-user-sessions',
1690 'src/user-sessions/user-sessions.c',
1691 include_directories : includes,
1692 link_with : [libshared],
1693 install_rpath : rootlibexecdir,
1694 install : true,
1695 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001696endif
1697
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001698if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001699 exe = executable('bootctl',
1700 'src/boot/bootctl.c',
1701 include_directories : includes,
1702 link_with : [libshared],
1703 dependencies : [libblkid],
1704 install_rpath : rootlibexecdir,
1705 install : true)
1706 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001707endif
1708
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001709exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1710 include_directories : includes,
1711 link_with : [libshared],
1712 dependencies : [threads],
1713 install_rpath : rootlibexecdir,
1714 install : true)
1715public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001716
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001717exe = executable('systemctl', 'src/systemctl/systemctl.c',
1718 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001719 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001720 dependencies : [threads,
1721 libcap,
1722 libselinux,
1723 libxz,
1724 liblz4],
1725 install_rpath : rootlibexecdir,
1726 install : true,
1727 install_dir : rootbindir)
1728public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001729
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001730foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1731 meson.add_install_script(meson_make_symlink,
1732 join_paths(rootbindir, 'systemctl'),
1733 join_paths(rootsbindir, alias))
1734endforeach
1735
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001736if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001737 executable('systemd-backlight',
1738 'src/backlight/backlight.c',
1739 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001740 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001741 install_rpath : rootlibexecdir,
1742 install : true,
1743 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001744endif
1745
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001746if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001747 executable('systemd-rfkill',
1748 'src/rfkill/rfkill.c',
1749 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001750 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001751 install_rpath : rootlibexecdir,
1752 install : true,
1753 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001754endif
1755
1756executable('systemd-system-update-generator',
1757 'src/system-update-generator/system-update-generator.c',
1758 include_directories : includes,
1759 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001760 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001761 install : true,
1762 install_dir : systemgeneratordir)
1763
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001764if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001765 executable('systemd-cryptsetup',
1766 'src/cryptsetup/cryptsetup.c',
1767 include_directories : includes,
1768 link_with : [libshared],
1769 dependencies : [libcryptsetup],
1770 install_rpath : rootlibexecdir,
1771 install : true,
1772 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001773
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001774 executable('systemd-cryptsetup-generator',
1775 'src/cryptsetup/cryptsetup-generator.c',
1776 include_directories : includes,
1777 link_with : [libshared],
1778 dependencies : [libcryptsetup],
1779 install_rpath : rootlibexecdir,
1780 install : true,
1781 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001782
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001783 executable('systemd-veritysetup',
1784 'src/veritysetup/veritysetup.c',
1785 include_directories : includes,
1786 link_with : [libshared],
1787 dependencies : [libcryptsetup],
1788 install_rpath : rootlibexecdir,
1789 install : true,
1790 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001791
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001792 executable('systemd-veritysetup-generator',
1793 'src/veritysetup/veritysetup-generator.c',
1794 include_directories : includes,
1795 link_with : [libshared],
1796 dependencies : [libcryptsetup],
1797 install_rpath : rootlibexecdir,
1798 install : true,
1799 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001800endif
1801
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001802if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001803 executable('systemd-sysv-generator',
1804 'src/sysv-generator/sysv-generator.c',
1805 include_directories : includes,
1806 link_with : [libshared],
1807 install_rpath : rootlibexecdir,
1808 install : true,
1809 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001810
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001811 executable('systemd-rc-local-generator',
1812 'src/rc-local-generator/rc-local-generator.c',
1813 include_directories : includes,
1814 link_with : [libshared],
1815 install_rpath : rootlibexecdir,
1816 install : true,
1817 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001818endif
1819
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001820if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001821 executable('systemd-hostnamed',
1822 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001823 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001824 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001825 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001826 install : true,
1827 install_dir : rootlibexecdir)
1828
1829 exe = executable('hostnamectl',
1830 'src/hostname/hostnamectl.c',
1831 include_directories : includes,
1832 link_with : [libshared],
1833 install_rpath : rootlibexecdir,
1834 install : true)
1835 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001836endif
1837
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001838if conf.get('ENABLE_LOCALED') == 1
1839 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001840 # logind will load libxkbcommon.so dynamically on its own
1841 deps = [libdl]
1842 else
1843 deps = []
1844 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001845
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001846 executable('systemd-localed',
1847 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001848 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001849 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001850 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001851 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001852 install : true,
1853 install_dir : rootlibexecdir)
1854
1855 exe = executable('localectl',
1856 localectl_sources,
1857 include_directories : includes,
1858 link_with : [libshared],
1859 install_rpath : rootlibexecdir,
1860 install : true)
1861 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001862endif
1863
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001864if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001865 executable('systemd-timedated',
1866 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001867 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001868 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001869 install_rpath : rootlibexecdir,
1870 install : true,
1871 install_dir : rootlibexecdir)
1872
1873 exe = executable('timedatectl',
1874 'src/timedate/timedatectl.c',
1875 include_directories : includes,
1876 install_rpath : rootlibexecdir,
1877 link_with : [libshared],
1878 install : true)
1879 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001880endif
1881
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001882if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001883 executable('systemd-timesyncd',
1884 systemd_timesyncd_sources,
1885 include_directories : includes,
1886 link_with : [libshared],
1887 dependencies : [threads,
1888 libm],
1889 install_rpath : rootlibexecdir,
1890 install : true,
1891 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001892endif
1893
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001894if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001895 executable('systemd-machined',
1896 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001897 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001898 link_with : [libmachine_core,
1899 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001900 install_rpath : rootlibexecdir,
1901 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001902 install_dir : rootlibexecdir)
1903
1904 exe = executable('machinectl',
1905 'src/machine/machinectl.c',
1906 include_directories : includes,
1907 link_with : [libshared],
1908 dependencies : [threads,
1909 libxz,
1910 liblz4],
1911 install_rpath : rootlibexecdir,
1912 install : true,
1913 install_dir : rootbindir)
1914 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001915endif
1916
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001917if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001918 executable('systemd-importd',
1919 systemd_importd_sources,
1920 include_directories : includes,
1921 link_with : [libshared],
1922 dependencies : [threads],
1923 install_rpath : rootlibexecdir,
1924 install : true,
1925 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001926
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001927 systemd_pull = executable('systemd-pull',
1928 systemd_pull_sources,
1929 include_directories : includes,
1930 link_with : [libshared],
1931 dependencies : [libcurl,
1932 libz,
1933 libbzip2,
1934 libxz,
1935 libgcrypt],
1936 install_rpath : rootlibexecdir,
1937 install : true,
1938 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001939
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001940 systemd_import = executable('systemd-import',
1941 systemd_import_sources,
1942 include_directories : includes,
1943 link_with : [libshared],
1944 dependencies : [libcurl,
1945 libz,
1946 libbzip2,
1947 libxz],
1948 install_rpath : rootlibexecdir,
1949 install : true,
1950 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001951
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001952 systemd_export = executable('systemd-export',
1953 systemd_export_sources,
1954 include_directories : includes,
1955 link_with : [libshared],
1956 dependencies : [libcurl,
1957 libz,
1958 libbzip2,
1959 libxz],
1960 install_rpath : rootlibexecdir,
1961 install : true,
1962 install_dir : rootlibexecdir)
1963 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001964endif
1965
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001966if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001967 exe = executable('systemd-journal-upload',
1968 systemd_journal_upload_sources,
1969 include_directories : includes,
1970 link_with : [libshared],
1971 dependencies : [threads,
1972 libcurl,
1973 libgnutls,
1974 libxz,
1975 liblz4],
1976 install_rpath : rootlibexecdir,
1977 install : true,
1978 install_dir : rootlibexecdir)
1979 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001980endif
1981
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001982if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001983 s_j_remote = executable('systemd-journal-remote',
1984 systemd_journal_remote_sources,
1985 include_directories : includes,
1986 link_with : [libshared],
1987 dependencies : [threads,
1988 libmicrohttpd,
1989 libgnutls,
1990 libxz,
1991 liblz4],
1992 install_rpath : rootlibexecdir,
1993 install : true,
1994 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001995
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001996 s_j_gatewayd = executable('systemd-journal-gatewayd',
1997 systemd_journal_gatewayd_sources,
1998 include_directories : includes,
1999 link_with : [libshared],
2000 dependencies : [threads,
2001 libmicrohttpd,
2002 libgnutls,
2003 libxz,
2004 liblz4],
2005 install_rpath : rootlibexecdir,
2006 install : true,
2007 install_dir : rootlibexecdir)
2008 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002009endif
2010
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002011if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002012 executable('systemd-coredump',
2013 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002014 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002015 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002016 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002017 libacl,
2018 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002019 libxz,
2020 liblz4],
2021 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002022 install : true,
2023 install_dir : rootlibexecdir)
2024
2025 exe = executable('coredumpctl',
2026 coredumpctl_sources,
2027 include_directories : includes,
2028 link_with : [libshared],
2029 dependencies : [threads,
2030 libxz,
2031 liblz4],
2032 install_rpath : rootlibexecdir,
2033 install : true)
2034 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002035endif
2036
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002037if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002038 exe = executable('systemd-binfmt',
2039 'src/binfmt/binfmt.c',
2040 include_directories : includes,
2041 link_with : [libshared],
2042 install_rpath : rootlibexecdir,
2043 install : true,
2044 install_dir : rootlibexecdir)
2045 public_programs += [exe]
2046
2047 meson.add_install_script('sh', '-c',
2048 mkdir_p.format(binfmtdir))
2049 meson.add_install_script('sh', '-c',
2050 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2051endif
2052
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002053if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002054 executable('systemd-vconsole-setup',
2055 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002056 include_directories : includes,
2057 link_with : [libshared],
2058 install_rpath : rootlibexecdir,
2059 install : true,
2060 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002061endif
2062
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002063if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002064 executable('systemd-random-seed',
2065 'src/random-seed/random-seed.c',
2066 include_directories : includes,
2067 link_with : [libshared],
2068 install_rpath : rootlibexecdir,
2069 install : true,
2070 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002071endif
2072
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002073if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002074 executable('systemd-firstboot',
2075 'src/firstboot/firstboot.c',
2076 include_directories : includes,
2077 link_with : [libshared],
2078 dependencies : [libcrypt],
2079 install_rpath : rootlibexecdir,
2080 install : true,
2081 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002082endif
2083
2084executable('systemd-remount-fs',
2085 'src/remount-fs/remount-fs.c',
2086 'src/core/mount-setup.c',
2087 'src/core/mount-setup.h',
2088 include_directories : includes,
2089 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002090 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002091 install : true,
2092 install_dir : rootlibexecdir)
2093
2094executable('systemd-machine-id-setup',
2095 'src/machine-id-setup/machine-id-setup-main.c',
2096 'src/core/machine-id-setup.c',
2097 'src/core/machine-id-setup.h',
2098 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002099 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002100 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002101 install : true,
2102 install_dir : rootbindir)
2103
2104executable('systemd-fsck',
2105 'src/fsck/fsck.c',
2106 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002107 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002108 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002109 install : true,
2110 install_dir : rootlibexecdir)
2111
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002112executable('systemd-growfs',
2113 'src/partition/growfs.c',
2114 include_directories : includes,
2115 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002116 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002117 install_rpath : rootlibexecdir,
2118 install : true,
2119 install_dir : rootlibexecdir)
2120
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002121executable('systemd-makefs',
2122 'src/partition/makefs.c',
2123 include_directories : includes,
2124 link_with : [libshared],
2125 install_rpath : rootlibexecdir,
2126 install : true,
2127 install_dir : rootlibexecdir)
2128
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002129executable('systemd-sleep',
2130 'src/sleep/sleep.c',
2131 include_directories : includes,
2132 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002133 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002134 install : true,
2135 install_dir : rootlibexecdir)
2136
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002137exe = executable('systemd-sysctl',
2138 'src/sysctl/sysctl.c',
2139 include_directories : includes,
2140 link_with : [libshared],
2141 install_rpath : rootlibexecdir,
2142 install : true,
2143 install_dir : rootlibexecdir)
2144public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002145
2146executable('systemd-ac-power',
2147 'src/ac-power/ac-power.c',
2148 include_directories : includes,
2149 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002150 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002151 install : true,
2152 install_dir : rootlibexecdir)
2153
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002154exe = executable('systemd-detect-virt',
2155 'src/detect-virt/detect-virt.c',
2156 include_directories : includes,
2157 link_with : [libshared],
2158 install_rpath : rootlibexecdir,
2159 install : true)
2160public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002161
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002162exe = executable('systemd-delta',
2163 'src/delta/delta.c',
2164 include_directories : includes,
2165 link_with : [libshared],
2166 install_rpath : rootlibexecdir,
2167 install : true)
2168public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002169
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002170exe = executable('systemd-escape',
2171 'src/escape/escape.c',
2172 include_directories : includes,
2173 link_with : [libshared],
2174 install_rpath : rootlibexecdir,
2175 install : true,
2176 install_dir : rootbindir)
2177public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002178
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002179exe = executable('systemd-notify',
2180 'src/notify/notify.c',
2181 include_directories : includes,
2182 link_with : [libshared],
2183 install_rpath : rootlibexecdir,
2184 install : true,
2185 install_dir : rootbindir)
2186public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002187
2188executable('systemd-volatile-root',
2189 'src/volatile-root/volatile-root.c',
2190 include_directories : includes,
2191 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002192 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002193 install : true,
2194 install_dir : rootlibexecdir)
2195
2196executable('systemd-cgroups-agent',
2197 'src/cgroups-agent/cgroups-agent.c',
2198 include_directories : includes,
2199 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002200 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002201 install : true,
2202 install_dir : rootlibexecdir)
2203
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002204exe = executable('systemd-path',
2205 'src/path/path.c',
2206 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002207 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002208 install_rpath : rootlibexecdir,
2209 install : true)
2210public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002211
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002212exe = executable('systemd-ask-password',
2213 'src/ask-password/ask-password.c',
2214 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002215 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002216 install_rpath : rootlibexecdir,
2217 install : true,
2218 install_dir : rootbindir)
2219public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002220
2221executable('systemd-reply-password',
2222 'src/reply-password/reply-password.c',
2223 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002224 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002225 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002226 install : true,
2227 install_dir : rootlibexecdir)
2228
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002229exe = executable('systemd-tty-ask-password-agent',
2230 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2231 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002232 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002233 install_rpath : rootlibexecdir,
2234 install : true,
2235 install_dir : rootbindir)
2236public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002237
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002238exe = executable('systemd-cgls',
2239 'src/cgls/cgls.c',
2240 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002241 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002242 install_rpath : rootlibexecdir,
2243 install : true)
2244public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002245
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002246exe = executable('systemd-cgtop',
2247 'src/cgtop/cgtop.c',
2248 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002249 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002250 install_rpath : rootlibexecdir,
2251 install : true)
2252public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002253
2254executable('systemd-initctl',
2255 'src/initctl/initctl.c',
2256 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002257 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002258 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002259 install : true,
2260 install_dir : rootlibexecdir)
2261
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002262exe = executable('systemd-mount',
2263 'src/mount/mount-tool.c',
2264 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002265 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002266 install_rpath : rootlibexecdir,
2267 install : true)
2268public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002269
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002270meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002271 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002272
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002273exe = executable('systemd-run',
2274 'src/run/run.c',
2275 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002276 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002277 install_rpath : rootlibexecdir,
2278 install : true)
2279public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002280
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002281exe = executable('systemd-stdio-bridge',
2282 'src/stdio-bridge/stdio-bridge.c',
2283 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002284 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002285 install_rpath : rootlibexecdir,
2286 install : true)
2287public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002288
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002289exe = executable('busctl',
2290 'src/busctl/busctl.c',
2291 'src/busctl/busctl-introspect.c',
2292 'src/busctl/busctl-introspect.h',
2293 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002294 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002295 install_rpath : rootlibexecdir,
2296 install : true)
2297public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002298
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002299if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002300 exe = executable('systemd-sysusers',
2301 'src/sysusers/sysusers.c',
2302 include_directories : includes,
2303 link_with : [libshared],
2304 install_rpath : rootlibexecdir,
2305 install : true,
2306 install_dir : rootbindir)
2307 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002308endif
2309
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002310if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002311 exe = executable('systemd-tmpfiles',
2312 'src/tmpfiles/tmpfiles.c',
2313 include_directories : includes,
2314 link_with : [libshared],
2315 dependencies : [libacl],
2316 install_rpath : rootlibexecdir,
2317 install : true,
2318 install_dir : rootbindir)
2319 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002320
2321 test('test-systemd-tmpfiles',
2322 test_systemd_tmpfiles_py,
2323 args : exe.full_path())
2324 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002325endif
2326
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002327if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002328 exe = executable('systemd-hwdb',
2329 'src/hwdb/hwdb.c',
2330 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2331 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002332 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002333 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002334 install : true,
2335 install_dir : rootbindir)
2336 public_programs += [exe]
2337endif
2338
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002339if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002340 executable('systemd-quotacheck',
2341 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002342 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002343 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002344 install_rpath : rootlibexecdir,
2345 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002346 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002347endif
2348
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002349exe = executable('systemd-socket-proxyd',
2350 'src/socket-proxy/socket-proxyd.c',
2351 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002352 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002353 dependencies : [threads],
2354 install_rpath : rootlibexecdir,
2355 install : true,
2356 install_dir : rootlibexecdir)
2357public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002358
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002359exe = executable('systemd-udevd',
2360 systemd_udevd_sources,
2361 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002362 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002363 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002364 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002365 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002366 dependencies : [threads,
2367 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002368 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002369 libacl,
2370 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002371 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002372 install : true,
2373 install_dir : rootlibexecdir)
2374public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002375
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002376exe = executable('udevadm',
2377 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002378 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002379 include_directories : includes,
2380 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002381 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002382 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002383 dependencies : [threads,
2384 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002385 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002386 libacl,
2387 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002388 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002389 install : true,
2390 install_dir : rootbindir)
2391public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002392
2393executable('systemd-shutdown',
2394 systemd_shutdown_sources,
2395 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002396 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002397 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002398 install : true,
2399 install_dir : rootlibexecdir)
2400
2401executable('systemd-update-done',
2402 'src/update-done/update-done.c',
2403 include_directories : includes,
2404 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002405 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002406 install : true,
2407 install_dir : rootlibexecdir)
2408
2409executable('systemd-update-utmp',
2410 'src/update-utmp/update-utmp.c',
2411 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002412 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002413 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002414 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002415 install : true,
2416 install_dir : rootlibexecdir)
2417
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002418if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002419 executable('systemd-modules-load',
2420 'src/modules-load/modules-load.c',
2421 include_directories : includes,
2422 link_with : [libshared],
2423 dependencies : [libkmod],
2424 install_rpath : rootlibexecdir,
2425 install : true,
2426 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002427
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002428 meson.add_install_script('sh', '-c',
2429 mkdir_p.format(modulesloaddir))
2430 meson.add_install_script('sh', '-c',
2431 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002432endif
2433
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002434exe = executable('systemd-nspawn',
2435 systemd_nspawn_sources,
2436 'src/core/mount-setup.c', # FIXME: use a variable?
2437 'src/core/mount-setup.h',
2438 'src/core/loopback-setup.c',
2439 'src/core/loopback-setup.h',
2440 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002441 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002442 dependencies : [libacl,
2443 libblkid,
2444 libseccomp,
2445 libselinux],
2446 install_rpath : rootlibexecdir,
2447 install : true)
2448public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002449
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002450if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002451 executable('systemd-networkd',
2452 systemd_networkd_sources,
2453 include_directories : includes,
2454 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002455 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002456 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002457 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002458 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002459 install_rpath : rootlibexecdir,
2460 install : true,
2461 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002462
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002463 executable('systemd-networkd-wait-online',
2464 systemd_networkd_wait_online_sources,
2465 include_directories : includes,
2466 link_with : [libnetworkd_core,
2467 libshared],
2468 install_rpath : rootlibexecdir,
2469 install : true,
2470 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002471
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002472 exe = executable('networkctl',
2473 networkctl_sources,
2474 include_directories : includes,
2475 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002476 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002477 install_rpath : rootlibexecdir,
2478 install : true,
2479 install_dir : rootbindir)
2480 public_programs += [exe]
2481endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002482
2483executable('systemd-sulogin-shell',
2484 ['src/sulogin-shell/sulogin-shell.c'],
2485 include_directories : includes,
2486 link_with : [libshared],
2487 install_rpath : rootlibexecdir,
2488 install : true,
2489 install_dir : rootlibexecdir)
2490
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002491############################################################
2492
2493foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002494 sources = tuple[0]
2495 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2496 dependencies = tuple[2]
2497 condition = tuple.length() >= 4 ? tuple[3] : ''
2498 type = tuple.length() >= 5 ? tuple[4] : ''
2499 defs = tuple.length() >= 6 ? tuple[5] : []
2500 incs = tuple.length() >= 7 ? tuple[6] : includes
2501 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002502
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002503 name = sources[0].split('/')[-1].split('.')[0]
2504 if type.startswith('timeout=')
2505 timeout = type.split('=')[1].to_int()
2506 type = ''
2507 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002508 if want_tests == 'false'
2509 message('Not compiling @0@ because tests is set to false'.format(name))
2510 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002511 exe = executable(
2512 name,
2513 sources,
2514 include_directories : incs,
2515 link_with : link_with,
2516 dependencies : dependencies,
2517 c_args : defs,
2518 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002519 install : install_tests,
2520 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002521
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002522 if type == 'manual'
2523 message('@0@ is a manual test'.format(name))
2524 elif type == 'unsafe' and want_tests != 'unsafe'
2525 message('@0@ is an unsafe test'.format(name))
2526 else
2527 test(name, exe,
2528 env : test_env,
2529 timeout : timeout)
2530 endif
2531 else
2532 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2533 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002534endforeach
2535
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002536test_libsystemd_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002537 'test-libsystemd-sym',
2538 test_libsystemd_sym_c,
2539 include_directories : includes,
2540 link_with : [libsystemd],
2541 install : install_tests,
2542 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002543test('test-libsystemd-sym',
2544 test_libsystemd_sym)
2545
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002546test_libudev_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002547 'test-libudev-sym',
2548 test_libudev_sym_c,
2549 include_directories : includes,
2550 c_args : ['-Wno-deprecated-declarations'],
2551 link_with : [libudev],
2552 install : install_tests,
2553 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002554test('test-libudev-sym',
2555 test_libudev_sym)
2556
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002557############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002558
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002559fuzzer_exes = []
2560
2561foreach tuple : fuzzers
2562 sources = tuple[0]
2563 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2564 dependencies = tuple[2]
2565 defs = tuple.length() >= 4 ? tuple[3] : []
2566 incs = tuple.length() >= 5 ? tuple[4] : includes
2567
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002568 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002569 dependencies += fuzzing_engine
2570 else
2571 sources += 'src/fuzz/fuzz-main.c'
2572 endif
2573
2574 name = sources[0].split('/')[-1].split('.')[0]
2575
2576 fuzzer_exes += executable(
2577 name,
2578 sources,
2579 include_directories : [incs, include_directories('src/fuzz')],
2580 link_with : link_with,
2581 dependencies : dependencies,
2582 c_args : defs,
2583 install : false)
2584endforeach
2585
2586run_target('fuzzers',
2587 depends : fuzzer_exes,
2588 command : ['true'])
2589
2590############################################################
2591
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002592make_directive_index_py = find_program('tools/make-directive-index.py')
2593make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002594xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002595hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002596
2597subdir('units')
2598subdir('sysctl.d')
2599subdir('sysusers.d')
2600subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002601subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002602subdir('hwdb')
2603subdir('network')
2604subdir('man')
2605subdir('shell-completion/bash')
2606subdir('shell-completion/zsh')
2607subdir('docs/sysvinit')
2608subdir('docs/var-log')
2609
2610# FIXME: figure out if the warning is true:
2611# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2612install_subdir('factory/etc',
2613 install_dir : factorydir)
2614
2615
2616install_data('xorg/50-systemd-user.sh',
2617 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002618install_data('modprobe.d/systemd.conf',
2619 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002620install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002621 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002622 'NEWS',
2623 'README',
2624 'doc/CODING_STYLE',
2625 'doc/DISTRO_PORTING',
2626 'doc/ENVIRONMENT.md',
2627 'doc/HACKING',
2628 'doc/TRANSIENT-SETTINGS.md',
2629 'doc/TRANSLATORS',
2630 'doc/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002631 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2632 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002633
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002634meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2635meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2636
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002637############################################################
2638
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002639meson_check_help = find_program('tools/meson-check-help.sh')
2640
2641foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002642 name = exec.full_path().split('/')[-1]
2643 test('check-help-' + name,
2644 meson_check_help,
2645 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002646endforeach
2647
2648############################################################
2649
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002650prev = ''
2651foreach p : fuzz_regression_tests
2652 a = p.split('/')[-3]
2653 b = p.split('/')[-2]
2654 c = p.split('/')[-1]
2655
2656 if a == 'address'
2657 build = sanitize_address
2658 else
2659 error('unknown sanitizer @0@'.format(a))
2660 endif
2661
2662 name = '@1@:@0@'.format(a, b)
2663
2664 if name != prev
2665 if want_tests == 'false'
2666 message('Not compiling @0@ because tests is set to false'.format(name))
2667 elif not sanitizers.contains(a)
2668 message('Not compiling @0@ because @1@ sanitizer is not available'.format(name, a))
2669 elif slow_tests
2670 exe = custom_target(
2671 name,
2672 output : name,
2673 depends : build,
2674 command : [env, 'ln', '-fs',
2675 join_paths(build.full_path(), b),
2676 '@OUTPUT@'],
2677 build_by_default : true)
2678 else
2679 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2680 endif
2681 endif
2682 prev = name
2683
2684 if want_tests != 'false' and slow_tests
2685 test(c, env, args : [exe.full_path(),
2686 join_paths(meson.source_root(),
2687 'test/fuzz-regressions',
2688 p)])
2689 endif
2690endforeach
2691
2692############################################################
2693
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002694if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002695 all_files = run_command(
2696 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002697 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002698 'ls-files',
2699 ':/*.[ch]'])
2700 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002701
userwithuide85a6902017-08-09 13:41:44 +00002702 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002703 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002704 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002705 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002706 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002707 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002708 output : 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002709 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002710endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002711
2712if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002713 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002714 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002715 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002716 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002717endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002718
2719if git.found()
2720 git_head = run_command(
2721 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002722 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002723 'rev-parse', 'HEAD']).stdout().strip()
2724 git_head_short = run_command(
2725 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002726 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002727 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2728
2729 run_target(
2730 'git-snapshot',
2731 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002732 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002733 git_head_short),
2734 '--prefix', 'systemd-@0@/'.format(git_head),
2735 'HEAD'])
2736endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002737
2738############################################################
2739
Lennart Poettering51b13862017-12-20 12:51:14 +01002740meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2741run_target(
2742 'check-api-docs',
2743 depends : [man, libsystemd, libudev],
2744 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2745
2746############################################################
2747
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002748status = [
2749 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2750
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002751 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002752 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002753 'prefix directory: @0@'.format(prefixdir),
2754 'rootprefix directory: @0@'.format(rootprefixdir),
2755 'sysconf directory: @0@'.format(sysconfdir),
2756 'include directory: @0@'.format(includedir),
2757 'lib directory: @0@'.format(libdir),
2758 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002759 'SysV init scripts: @0@'.format(sysvinit_path),
2760 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002761 'PAM modules directory: @0@'.format(pamlibdir),
2762 'PAM configuration directory: @0@'.format(pamconfdir),
2763 'RPM macros directory: @0@'.format(rpmmacrosdir),
2764 'modprobe.d directory: @0@'.format(modprobedir),
2765 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2766 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2767 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2768 'bash completions directory: @0@'.format(bashcompletiondir),
2769 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002770 'extra start script: @0@'.format(get_option('rc-local')),
2771 'extra stop script: @0@'.format(get_option('halt-local')),
2772 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2773 get_option('debug-tty')),
2774 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002775 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002776 'maximum system UID: @0@'.format(system_uid_max),
2777 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002778 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2779 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2780 'minimum container UID base: @0@'.format(container_uid_base_min),
2781 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002782 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002783 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002784 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002785 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002786 'nobody user name: @0@'.format(nobody_user),
2787 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002788 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002789 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002790
2791 'default DNSSEC mode: @0@'.format(default_dnssec),
2792 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2793 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2794
2795alt_dns_servers = '\n '.join(dns_servers.split(' '))
2796alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2797status += [
2798 'default DNS servers: @0@'.format(alt_dns_servers),
2799 'default NTP servers: @0@'.format(alt_ntp_servers)]
2800
2801alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2802 '@@0@'.format(time_epoch)).stdout().strip()
2803status += [
2804 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2805
2806# TODO:
2807# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2808# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2809# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2810
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002811if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002812 status += [
2813 'efi arch: @0@'.format(efi_arch)]
2814
2815 if have_gnu_efi
2816 status += [
2817 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2818 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002819 'EFI lib directory: @0@'.format(efi_libdir),
2820 'EFI lds directory: @0@'.format(efi_ldsdir),
2821 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002822 endif
2823endif
2824
2825found = []
2826missing = []
2827
2828foreach tuple : [
2829 ['libcryptsetup'],
2830 ['PAM'],
2831 ['AUDIT'],
2832 ['IMA'],
2833 ['AppArmor'],
2834 ['SELinux'],
2835 ['SECCOMP'],
2836 ['SMACK'],
2837 ['zlib'],
2838 ['xz'],
2839 ['lz4'],
2840 ['bzip2'],
2841 ['ACL'],
2842 ['gcrypt'],
2843 ['qrencode'],
2844 ['microhttpd'],
2845 ['gnutls'],
2846 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002847 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002848 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002849 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002850 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002851 ['libiptc'],
2852 ['elfutils'],
2853 ['binfmt'],
2854 ['vconsole'],
2855 ['quotacheck'],
2856 ['tmpfiles'],
2857 ['environment.d'],
2858 ['sysusers'],
2859 ['firstboot'],
2860 ['randomseed'],
2861 ['backlight'],
2862 ['rfkill'],
2863 ['logind'],
2864 ['machined'],
2865 ['importd'],
2866 ['hostnamed'],
2867 ['timedated'],
2868 ['timesyncd'],
2869 ['localed'],
2870 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002871 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002872 ['coredump'],
2873 ['polkit'],
2874 ['legacy pkla', install_polkit_pkla],
2875 ['efi'],
2876 ['gnu-efi', have_gnu_efi],
2877 ['kmod'],
2878 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01002879 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002880 ['blkid'],
2881 ['dbus'],
2882 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002883 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002884 ['hwdb'],
2885 ['tpm'],
2886 ['man pages', want_man],
2887 ['html pages', want_html],
2888 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002889 ['SysV compat'],
2890 ['utmp'],
2891 ['ldconfig'],
2892 ['hibernate'],
2893 ['adm group', get_option('adm-group')],
2894 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002895 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002896 ['debug hashmap'],
2897 ['debug mmap cache'],
2898]
2899
2900 cond = tuple.get(1, '')
2901 if cond == ''
2902 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2903 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002904 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002905 endif
2906 if cond
2907 found += [tuple[0]]
2908 else
2909 missing += [tuple[0]]
2910 endif
2911endforeach
2912
2913status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002914 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002915 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002916 '',
2917 'disabled features: @0@'.format(', '.join(missing)),
2918 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002919message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002920
2921if rootprefixdir != rootprefix_default
2922 message('WARNING:\n' +
2923 ' Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2924 ' systemd used fixed names for unit file directories and other paths, so anything\n' +
2925 ' except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
2926endif