blob: 5aa46cd579167c19cdcb7e55c5198e6b4b9067e4 [file] [log] [blame]
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01001# SPDX-License-Identifier: LGPL-2.1+
2#
3# Copyright 2017 Zbigniew Jędrzejewski-Szmek
4#
5# systemd is free software; you can redistribute it and/or modify it
6# under the terms of the GNU Lesser General Public License as published by
7# the Free Software Foundation; either version 2.1 of the License, or
8# (at your option) any later version.
9#
10# systemd is distributed in the hope that it will be useful, but
11# WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13# Lesser General Public License for more details.
14#
15# You should have received a copy of the GNU Lesser General Public License
16# along with systemd; If not, see <http://www.gnu.org/licenses/>.
17
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040018project('systemd', 'c',
Lennart Poettering69cd51d2018-01-25 14:18:14 +010019 version : '237',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040020 license : 'LGPLv2+',
21 default_options: [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040022 'c_std=gnu99',
23 'prefix=/usr',
24 'sysconfdir=/etc',
25 'localstatedir=/var',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040026 ],
Zbigniew Jędrzejewski-Szmek86ea8d72017-11-20 08:08:43 +010027 meson_version : '>= 0.41',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040028 )
29
Lennart Poettering69cd51d2018-01-25 14:18:14 +010030libsystemd_version = '0.21.0'
31libudev_version = '1.6.9'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020032
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040033# We need the same data in three different formats, ugh!
34# Also, for hysterical reasons, we use different variable
35# names, sometimes. Not all variables are included in every
36# set. Ugh, ugh, ugh!
37conf = configuration_data()
38conf.set_quoted('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version())
39conf.set_quoted('PACKAGE_VERSION', meson.project_version())
40
41substs = configuration_data()
42substs.set('PACKAGE_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
43substs.set('PACKAGE_VERSION', meson.project_version())
44
45m4_defines = []
46
47#####################################################################
48
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040049# Try to install the git pre-commit hook
50git_hook = run_command(join_paths(meson.source_root(), 'tools/add-git-hook.sh'))
51if git_hook.returncode() == 0
52 message(git_hook.stdout().strip())
53endif
54
55#####################################################################
56
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010057split_usr = get_option('split-usr')
58conf.set10('HAVE_SPLIT_USR', split_usr)
59
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010060rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010061# Unusual rootprefixdir values are used by some distros
62# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010063rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010064if rootprefixdir == ''
65 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010066endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040067
68sysvinit_path = get_option('sysvinit-path')
69sysvrcnd_path = get_option('sysvrcnd-path')
Max Harmathy54248242017-12-15 16:05:25 +010070have = sysvinit_path != '' and sysvrcnd_path != ''
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020071conf.set10('HAVE_SYSV_COMPAT', have,
72 description : 'SysV init scripts and rcN.d links are supported')
73m4_defines += have ? ['-DHAVE_SYSV_COMPAT'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040074
75# join_paths ignore the preceding arguments if an absolute component is
76# encountered, so this should canonicalize various paths when they are
77# absolute or relative.
78prefixdir = get_option('prefix')
79if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040080 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040081endif
82bindir = join_paths(prefixdir, get_option('bindir'))
83libdir = join_paths(prefixdir, get_option('libdir'))
84sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
85includedir = join_paths(prefixdir, get_option('includedir'))
86datadir = join_paths(prefixdir, get_option('datadir'))
87localstatedir = join_paths('/', get_option('localstatedir'))
88
89rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010090rootsbindir = join_paths(rootprefixdir, 'sbin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040091rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
92
93rootlibdir = get_option('rootlibdir')
94if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040095 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040096endif
97
98# Dirs of external packages
Michael Bieble17e5ba2017-04-13 10:30:56 -040099pkgconfigdatadir = join_paths(datadir, 'pkgconfig')
100pkgconfiglibdir = join_paths(libdir, 'pkgconfig')
101polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
102polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
103polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
104varlogdir = join_paths(localstatedir, 'log')
105xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900106rpmmacrosdir = get_option('rpmmacrosdir')
107if rpmmacrosdir != 'no'
108 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
109endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200110modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400111
112# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400113pkgdatadir = join_paths(datadir, 'systemd')
114environmentdir = join_paths(prefixdir, 'lib/environment.d')
115pkgsysconfdir = join_paths(sysconfdir, 'systemd')
116userunitdir = join_paths(prefixdir, 'lib/systemd/user')
117userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
118tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
119sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
120sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
121binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
122modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
123networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
124pkgincludedir = join_paths(includedir, 'systemd')
125systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
126usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
127systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
128userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
129systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
130systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
131systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
132systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
133udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
134udevhomedir = udevlibexecdir
135udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
136udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
137catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
138kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
139factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400140bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
141testsdir = join_paths(prefixdir, 'lib/systemd/tests')
142systemdstatedir = join_paths(localstatedir, 'lib/systemd')
143catalogstatedir = join_paths(systemdstatedir, 'catalog')
144randomseeddir = join_paths(localstatedir, 'lib/systemd')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400145
tblume75aaade2018-02-01 22:46:15 +0100146docdir = get_option('docdir')
147if docdir == ''
148 docdir = join_paths(datadir, 'doc/systemd')
149endif
150
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400151dbuspolicydir = get_option('dbuspolicydir')
152if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400153 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400154endif
155
156dbussessionservicedir = get_option('dbussessionservicedir')
157if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400158 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400159endif
160
161dbussystemservicedir = get_option('dbussystemservicedir')
162if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400163 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400164endif
165
166pamlibdir = get_option('pamlibdir')
167if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400168 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400169endif
170
171pamconfdir = get_option('pamconfdir')
172if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400173 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400174endif
175
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100176memory_accounting_default = get_option('memory-accounting-default')
177
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400178conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400179conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400180conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
181conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
182conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400183conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
184conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100185
186conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').to_upper())
187
Michael Bieble17e5ba2017-04-13 10:30:56 -0400188conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400189conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
190conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400191conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
192conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
193conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
194conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100195conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100196conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400197conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
198conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
199conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
200conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
201conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100202conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400203conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400204conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
205conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400206conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
207conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
208conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
209conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
210conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
211conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400212conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
213conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400214conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400215conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400216conf.set_quoted('LIBDIR', libdir)
217conf.set_quoted('ROOTLIBDIR', rootlibdir)
218conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
219conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400220conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
221conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
222conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
223conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
224conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
225conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100226conf.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'true' : 'false')
227conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_ON_OFF', memory_accounting_default ? 'on' : 'off')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400228
229conf.set_quoted('ABS_BUILD_DIR', meson.build_root())
230conf.set_quoted('ABS_SRC_DIR', meson.source_root())
231
232substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400233substs.set('exec_prefix', prefixdir)
234substs.set('libdir', libdir)
235substs.set('rootlibdir', rootlibdir)
236substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400237substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400238substs.set('bindir', bindir)
239substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400240substs.set('rootlibexecdir', rootlibexecdir)
241substs.set('systemunitdir', systemunitdir)
242substs.set('userunitdir', userunitdir)
243substs.set('systempresetdir', systempresetdir)
244substs.set('userpresetdir', userpresetdir)
245substs.set('udevhwdbdir', udevhwdbdir)
246substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400247substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400248substs.set('catalogdir', catalogdir)
249substs.set('tmpfilesdir', tmpfilesdir)
250substs.set('sysusersdir', sysusersdir)
251substs.set('sysctldir', sysctldir)
252substs.set('binfmtdir', binfmtdir)
253substs.set('modulesloaddir', modulesloaddir)
254substs.set('systemgeneratordir', systemgeneratordir)
255substs.set('usergeneratordir', usergeneratordir)
256substs.set('systemenvgeneratordir', systemenvgeneratordir)
257substs.set('userenvgeneratordir', userenvgeneratordir)
258substs.set('systemshutdowndir', systemshutdowndir)
259substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400260substs.set('VARLOGDIR', varlogdir)
261substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400262substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
263substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400264substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
265substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
266substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
267substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100268substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400269
270#####################################################################
271
272cc = meson.get_compiler('c')
273pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400274check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100275meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400276
Adam Duskett08318a22018-01-15 06:25:46 -0500277if get_option('tests') != 'false'
278 cxx = find_program('c++', required : false)
279 if cxx.found()
280 # Used only for tests
281 add_languages('cpp')
282 endif
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400283endif
284
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500285want_ossfuzz = get_option('oss-fuzz')
286want_libfuzzer = get_option('llvm-fuzz')
287fuzzer_build = want_ossfuzz or want_libfuzzer
288if want_ossfuzz and want_libfuzzer
289 error('only one of oss-fuzz and llvm-fuzz can be specified')
290endif
291if want_libfuzzer
292 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
293endif
294if want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500295 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
296endif
297
Zbigniew Jędrzejewski-Szmek75cf1d62017-07-04 17:59:15 -0400298foreach arg : ['-Wextra',
Zbigniew Jędrzejewski-Szmek70160ce2017-10-03 12:11:49 +0200299 '-Werror=undef',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400300 '-Wlogical-op',
301 '-Wmissing-include-dirs',
302 '-Wold-style-definition',
303 '-Wpointer-arith',
304 '-Winit-self',
305 '-Wdeclaration-after-statement',
306 '-Wfloat-equal',
307 '-Wsuggest-attribute=noreturn',
308 '-Werror=missing-prototypes',
309 '-Werror=implicit-function-declaration',
310 '-Werror=missing-declarations',
311 '-Werror=return-type',
312 '-Werror=incompatible-pointer-types',
313 '-Werror=format=2',
314 '-Wstrict-prototypes',
315 '-Wredundant-decls',
316 '-Wmissing-noreturn',
Zbigniew Jędrzejewski-Szmek97279d82017-11-20 14:23:40 +0100317 '-Wimplicit-fallthrough=5',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400318 '-Wshadow',
319 '-Wendif-labels',
320 '-Wstrict-aliasing=2',
321 '-Wwrite-strings',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400322 '-Werror=overflow',
323 '-Wdate-time',
324 '-Wnested-externs',
325 '-ffast-math',
326 '-fno-common',
327 '-fdiagnostics-show-option',
328 '-fno-strict-aliasing',
329 '-fvisibility=hidden',
330 '-fstack-protector',
331 '-fstack-protector-strong',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400332 '--param=ssp-buffer-size=4',
333 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400334 if cc.has_argument(arg)
335 add_project_arguments(arg, language : 'c')
336 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400337endforeach
338
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500339# the oss-fuzz fuzzers are not built with -fPIE, so don't
340# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500341if not fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500342 if cc.has_argument('-fPIE')
343 add_project_arguments('-fPIE', language : 'c')
344 endif
345endif
346
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400347# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
348# arguments, just emits a warnings. So test for the "positive" version instead.
349foreach arg : ['unused-parameter',
350 'missing-field-initializers',
351 'unused-result',
Zbigniew Jędrzejewski-Szmekfb1b5882017-09-04 19:49:12 +0300352 'format-signedness',
353 'error=nonnull', # work-around for gcc 7.1 turning this on on its own
354 ]
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400355 if cc.has_argument('-W' + arg)
356 add_project_arguments('-Wno-' + arg, language : 'c')
357 endif
358endforeach
359
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800360if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400361 #include <time.h>
362 #include <inttypes.h>
363 typedef uint64_t usec_t;
364 usec_t now(clockid_t clock);
365 int main(void) {
366 struct timespec now;
367 return 0;
368 }
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800369''', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400370 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400371endif
372
373if cc.get_id() == 'clang'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400374 foreach arg : ['-Wno-typedef-redefinition',
375 '-Wno-gnu-variable-sized-type-not-at-end',
376 ]
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400377 if cc.has_argument(arg,
378 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400379 add_project_arguments(arg, language : 'c')
380 endif
381 endforeach
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400382endif
383
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400384link_test_c = files('tools/meson-link-test.c')
385
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400386# --as-needed and --no-undefined are provided by meson by default,
387# run mesonconf to see what is enabled
388foreach arg : ['-Wl,-z,relro',
389 '-Wl,-z,now',
390 '-pie',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400391 ]
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400392
393 have = run_command(check_compilation_sh,
394 cc.cmd_array(), '-x', 'c', arg,
395 '-include', link_test_c).returncode() == 0
396 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500397 if have and (arg != '-pie' or not fuzzer_build)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400398 add_project_link_arguments(arg, language : 'c')
399 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400400endforeach
401
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100402# Check if various sanitizers are supported
403sanitizers = []
404foreach arg : ['address']
405
406 have = run_command(check_compilation_sh,
407 cc.cmd_array(), '-x', 'c',
408 '-fsanitize=@0@'.format(arg),
409 '-include', link_test_c).returncode() == 0
410 message('@0@ sanitizer supported: @1@'.format(arg, have ? 'yes' : 'no'))
411 if have
412 sanitizers += arg
413 endif
414endforeach
415
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400416if get_option('buildtype') != 'debug'
417 foreach arg : ['-ffunction-sections',
418 '-fdata-sections']
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400419 if cc.has_argument(arg,
420 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400421 add_project_arguments(arg, language : 'c')
422 endif
423 endforeach
424
425 foreach arg : ['-Wl,--gc-sections']
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400426 have = run_command(check_compilation_sh,
427 cc.cmd_array(), '-x', 'c', arg,
428 '-include', link_test_c).returncode() == 0
429 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
430 if have
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400431 add_project_link_arguments(arg, language : 'c')
432 endif
433 endforeach
434endif
435
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400436cpp = ' '.join(cc.cmd_array()) + ' -E'
437
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400438#####################################################################
439# compilation result tests
440
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400441conf.set('_GNU_SOURCE', true)
442conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400443
444conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
445conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
446conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
447conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
448conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
449conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
450conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
451
452decl_headers = '''
453#include <uchar.h>
454#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000455#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100456#include <linux/stat.h>
457#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400458'''
459# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
460
461foreach decl : ['char16_t',
462 'char32_t',
463 'key_serial_t',
464 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000465 'struct fib_rule_uid_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100466 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400467 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400468
469 # We get -1 if the size cannot be determined
470 have = cc.sizeof(decl, prefix : decl_headers) > 0
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200471 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400472endforeach
473
474foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
475 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
476 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
477 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530478 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400479 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
480 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
481 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
482 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
483 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530484 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400485 # if_tunnel.h is buggy and cannot be included on its own
486 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
487 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
488 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
489 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
490 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
491 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
492 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530493 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400494 ['NDA_IFINDEX', 'linux/neighbour.h'],
495 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000496 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400497 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530498 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400499 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400500 prefix = decl.length() > 2 ? decl[2] : ''
501 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200502 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400503endforeach
504
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400505foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200506 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400507endforeach
508
509foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100510 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100511 ['gettid', '''#include <sys/types.h>
512 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100513 ['pivot_root', '''#include <stdlib.h>
514 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100515 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400516 #include <sys/stat.h>
517 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100518 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100519 ['renameat2', '''#include <stdio.h>
520 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400521 ['kcmp', '''#include <linux/kcmp.h>'''],
522 ['keyctl', '''#include <sys/types.h>
523 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100524 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400525 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200526 ['bpf', '''#include <sys/syscall.h>
527 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100528 ['statx', '''#include <sys/types.h>
529 #include <sys/stat.h>
530 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100531 ['explicit_bzero' , '''#include <string.h>'''],
532 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400533]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400534
Lennart Poettering85db59b2017-12-25 12:01:14 +0100535 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200536 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400537endforeach
538
Lennart Poettering85db59b2017-12-25 12:01:14 +0100539if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200540 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200541 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400542else
543 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200544 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200545 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400546endif
547
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400548#####################################################################
549
550sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400551awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400552m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400553stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400554git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100555env = find_program('env')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400556
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400557meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400558mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400559test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
560splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400561
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400562# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
563# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500564progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400565 ['quotacheck', '/usr/sbin/quotacheck' ],
566 ['kill', '/usr/bin/kill' ],
567 ['kmod', '/usr/bin/kmod' ],
568 ['kexec', '/usr/sbin/kexec' ],
569 ['sulogin', '/usr/sbin/sulogin' ],
570 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
571 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
572 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
573 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
574 ]
575foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400576 path = get_option(prog[0] + '-path')
577 if path != ''
578 message('Using @1@ for @0@'.format(prog[0], path))
579 else
580 exe = find_program(prog[0],
581 '/usr/sbin/' + prog[0],
582 '/sbin/' + prog[0],
583 required: false)
584 path = exe.found() ? exe.path() : prog[1]
585 endif
586 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
587 conf.set_quoted(name, path)
588 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400589endforeach
590
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500591conf.set_quoted('TELINIT', get_option('telinit-path'))
592
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400593if run_command('ln', '--relative', '--help').returncode() != 0
594 error('ln does not support --relative')
595endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400596
597############################################################
598
599gperf = find_program('gperf')
600
601gperf_test_format = '''
602#include <string.h>
603const char * in_word_set(const char *, @0@);
604@1@
605'''
606gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
607gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
608gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
609if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400610 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400611else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400612 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
613 if cc.compiles(gperf_test)
614 gperf_len_type = 'unsigned'
615 else
616 error('unable to determine gperf len type')
617 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400618endif
619message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400620conf.set('GPERF_LEN_TYPE', gperf_len_type,
621 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400622
623############################################################
624
625if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400626 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400627endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100628foreach header : ['crypt.h',
629 'linux/btrfs.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400630 'linux/memfd.h',
631 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200632 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400633 'valgrind/memcheck.h',
634 'valgrind/valgrind.h',
635 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400636
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200637 conf.set10('HAVE_' + header.underscorify().to_upper(),
638 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400639endforeach
640
641############################################################
642
643conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400644conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
645gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400646
647default_hierarchy = get_option('default-hierarchy')
648conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
649 description : 'default cgroup hierarchy as string')
650if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400651 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400652elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400653 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400654else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400655 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400656endif
657
658time_epoch = get_option('time-epoch')
659if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400660 NEWS = files('NEWS')
661 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400662endif
663time_epoch = time_epoch.to_int()
664conf.set('TIME_EPOCH', time_epoch)
665
666system_uid_max = get_option('system-uid-max')
667if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400668 system_uid_max = run_command(
669 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800670 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
671 '/etc/login.defs').stdout().strip()
672 if system_uid_max == ''
673 system_uid_max = '999'
674 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400675endif
676system_uid_max = system_uid_max.to_int()
677conf.set('SYSTEM_UID_MAX', system_uid_max)
678substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400679message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400680
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400681system_gid_max = get_option('system-gid-max')
682if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400683 system_gid_max = run_command(
684 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800685 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
686 '/etc/login.defs').stdout().strip()
687 if system_gid_max == ''
688 system_gid_max = '999'
689 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400690endif
691system_gid_max = system_gid_max.to_int()
692conf.set('SYSTEM_GID_MAX', system_gid_max)
693substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400694message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400695
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100696dynamic_uid_min = get_option('dynamic-uid-min').to_int()
697dynamic_uid_max = get_option('dynamic-uid-max').to_int()
698conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
699conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
700substs.set('dynamicuidmin', dynamic_uid_min)
701substs.set('dynamicuidmax', dynamic_uid_max)
702
703container_uid_base_min = get_option('container-uid-base-min').to_int()
704container_uid_base_max = get_option('container-uid-base-max').to_int()
705conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
706conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
707substs.set('containeruidbasemin', container_uid_base_min)
708substs.set('containeruidbasemax', container_uid_base_max)
709
Lennart Poetteringafde4572017-12-05 11:00:24 +0100710nobody_user = get_option('nobody-user')
711nobody_group = get_option('nobody-group')
712
713getent_result = run_command('getent', 'passwd', '65534')
714if getent_result.returncode() == 0
715 name = getent_result.stdout().split(':')[0]
716 if name != nobody_user
717 message('WARNING:\n' +
718 ' 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) +
719 ' Your build will result in an user table setup that is incompatible with the local system.')
720 endif
721endif
722id_result = run_command('id', '-u', nobody_user)
723if id_result.returncode() == 0
724 id = id_result.stdout().to_int()
725 if id != 65534
726 message('WARNING:\n' +
727 ' 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) +
728 ' Your build will result in an user table setup that is incompatible with the local system.')
729 endif
730endif
731
732getent_result = run_command('getent', 'group', '65534')
733if getent_result.returncode() == 0
734 name = getent_result.stdout().split(':')[0]
735 if name != nobody_group
736 message('WARNING:\n' +
737 ' 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) +
738 ' Your build will result in an group table setup that is incompatible with the local system.')
739 endif
740endif
741id_result = run_command('id', '-g', nobody_group)
742if id_result.returncode() == 0
743 id = id_result.stdout().to_int()
744 if id != 65534
745 message('WARNING:\n' +
746 ' 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) +
747 ' Your build will result in an group table setup that is incompatible with the local system.')
748 endif
749endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900750if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
751 message('WARNING:\n' +
752 ' The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
753 ' Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
754endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100755
756conf.set_quoted('NOBODY_USER_NAME', nobody_user)
757conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900758substs.set('NOBODY_USER_NAME', nobody_user)
759substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100760
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400761tty_gid = get_option('tty-gid')
762conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400763substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400764
Ikey Doherty84786b82017-12-03 12:28:23 +0000765# Ensure provided GID argument is numeric, otherwise fallback to default assignment
766if get_option('users-gid') != ''
Yu Watanabed6806872017-12-05 14:01:39 +0900767 users_gid = get_option('users-gid').to_int()
Ikey Doherty84786b82017-12-03 12:28:23 +0000768else
Yu Watanabed6806872017-12-05 14:01:39 +0900769 users_gid = '-'
Ikey Doherty84786b82017-12-03 12:28:23 +0000770endif
771substs.set('USERS_GID', users_gid)
772
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400773if get_option('adm-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400774 m4_defines += ['-DENABLE_ADM_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400775endif
776
777if get_option('wheel-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400778 m4_defines += ['-DENABLE_WHEEL_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400779endif
780
781substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700782substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400783
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400784kill_user_processes = get_option('default-kill-user-processes')
785conf.set10('KILL_USER_PROCESSES', kill_user_processes)
786substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400787
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400788dns_servers = get_option('dns-servers')
789conf.set_quoted('DNS_SERVERS', dns_servers)
790substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400791
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400792ntp_servers = get_option('ntp-servers')
793conf.set_quoted('NTP_SERVERS', ntp_servers)
794substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400795
796conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
797
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400798substs.set('SUSHELL', get_option('debug-shell'))
799substs.set('DEBUGTTY', get_option('debug-tty'))
800
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400801debug = get_option('debug')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200802enable_debug_hashmap = false
803enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400804if debug != ''
805 foreach name : debug.split(',')
806 if name == 'hashmap'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200807 enable_debug_hashmap = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400808 elif name == 'mmap-cache'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200809 enable_debug_mmap_cache = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400810 else
811 message('unknown debug option "@0@", ignoring'.format(name))
812 endif
813 endforeach
814endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200815conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
816conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400817
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400818#####################################################################
819
820threads = dependency('threads')
821librt = cc.find_library('rt')
822libm = cc.find_library('m')
823libdl = cc.find_library('dl')
824libcrypt = cc.find_library('crypt')
825
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400826libcap = dependency('libcap', required : false)
827if not libcap.found()
828 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
829 libcap = cc.find_library('cap')
830endif
831
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400832libmount = dependency('mount',
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -0500833 version : '>= 2.30',
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500834 required : not fuzzer_build)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400835
836want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500837if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400838 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400839 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400840 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200841 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400842else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200843 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400844 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400845endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200846conf.set10('HAVE_SECCOMP', have)
847m4_defines += have ? ['-DHAVE_SECCOMP'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400848
849want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500850if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400851 libselinux = dependency('libselinux',
852 version : '>= 2.1.9',
853 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200854 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400855else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200856 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400857 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400858endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200859conf.set10('HAVE_SELINUX', have)
860m4_defines += have ? ['-DHAVE_SELINUX'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400861
862want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500863if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400864 libapparmor = dependency('libapparmor',
865 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200866 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400867else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200868 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400869 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400870endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200871conf.set10('HAVE_APPARMOR', have)
872m4_defines += have ? ['-DHAVE_APPARMOR'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400873
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400874smack_run_label = get_option('smack-run-label')
875if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400876 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
877 m4_defines += ['-DHAVE_SMACK_RUN_LABEL']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400878endif
879
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400880want_polkit = get_option('polkit')
881install_polkit = false
882install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500883if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400884 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400885
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400886 libpolkit = dependency('polkit-gobject-1',
887 required : false)
888 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
889 message('Old polkit detected, will install pkla files')
890 install_polkit_pkla = true
891 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400892endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200893conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400894
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400895want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500896if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400897 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200898 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400899else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200900 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400901 libacl = []
902endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200903conf.set10('HAVE_ACL', have)
904m4_defines += have ? ['-DHAVE_ACL'] : []
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400905
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400906want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500907if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400908 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200909 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400910else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200911 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400912 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400913endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200914conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400915
916want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500917if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400918 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200919 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400920else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200921 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400922 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400923endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200924conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400925
926want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500927if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400928 libkmod = dependency('libkmod',
929 version : '>= 15',
930 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200931 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400932else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200933 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400934 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400935endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200936conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400937
938want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500939if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400940 libpam = cc.find_library('pam', required : want_pam == 'true')
941 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200942 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400943else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200944 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400945 libpam = []
946 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400947endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200948conf.set10('HAVE_PAM', have)
949m4_defines += have ? ['-DHAVE_PAM'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400950
951want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500952if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400953 libmicrohttpd = dependency('libmicrohttpd',
954 version : '>= 0.9.33',
955 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200956 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400957else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200958 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400959 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400960endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200961conf.set10('HAVE_MICROHTTPD', have)
962m4_defines += have ? ['-DHAVE_MICROHTTPD'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400963
964want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500965if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400966 libcryptsetup = dependency('libcryptsetup',
967 version : '>= 1.6.0',
968 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200969 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400970else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200971 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400972 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400973endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200974conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400975
976want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500977if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400978 libcurl = dependency('libcurl',
979 version : '>= 7.32.0',
980 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200981 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400982else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200983 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400984 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400985endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200986conf.set10('HAVE_LIBCURL', have)
987m4_defines += have ? ['-DHAVE_LIBCURL'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400988
989want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400990want_libidn2 = get_option('libidn2')
991if want_libidn == 'true' and want_libidn2 == 'true'
992 error('libidn and libidn2 cannot be requested simultaneously')
993endif
994
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500995if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400996 libidn = dependency('libidn',
997 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200998 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400999else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001000 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001001 libidn = []
1002endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001003conf.set10('HAVE_LIBIDN', have)
1004m4_defines += have ? ['-DHAVE_LIBIDN'] : []
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001005if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001006 # libidn is used for both libidn and libidn2 objects
1007 libidn = dependency('libidn2',
1008 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001009 have = libidn.found()
1010else
1011 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001012endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001013conf.set10('HAVE_LIBIDN2', have)
1014m4_defines += have ? ['-DHAVE_LIBIDN2'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001015
1016want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001017if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001018 libiptc = dependency('libiptc',
1019 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001020 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001021else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001022 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001023 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001024endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001025conf.set10('HAVE_LIBIPTC', have)
1026m4_defines += have ? ['-DHAVE_LIBIPTC'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001027
1028want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001029if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001030 libqrencode = dependency('libqrencode',
1031 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001032 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001033else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001034 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001035 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001036endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001037conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001038
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001039want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001040if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001041 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1042 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001043 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001044else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001045 have = false
1046endif
1047if not have
1048 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001049 libgcrypt = []
1050 libgpg_error = []
1051endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001052conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001053
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001054want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001055if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001056 libgnutls = dependency('gnutls',
1057 version : '>= 3.1.4',
1058 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001059 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001060else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001061 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001062 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001063endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001064conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001065
1066want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001067if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001068 libdw = dependency('libdw',
1069 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001070 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001071else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001072 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001073 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001074endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001075conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001076
1077want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001078if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001079 libz = dependency('zlib',
1080 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001081 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001082else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001083 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001084 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001085endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001086conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001087
1088want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001089if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001090 libbzip2 = cc.find_library('bz2',
1091 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001092 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001093else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001094 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001095 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001096endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001097conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001098
1099want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001100if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001101 libxz = dependency('liblzma',
1102 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001103 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001104else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001105 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001106 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001107endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001108conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001109
1110want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001111if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001112 liblz4 = dependency('liblz4',
1113 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001114 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001115else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001116 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001117 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001118endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001119conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001120
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001121want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001122if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001123 libxkbcommon = dependency('xkbcommon',
1124 version : '>= 0.3.0',
1125 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001126 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001127else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001128 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001129 libxkbcommon = []
1130endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001131conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001132
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001133want_pcre2 = get_option('pcre2')
1134if want_pcre2 != 'false'
1135 libpcre2 = dependency('libpcre2-8',
1136 required : want_pcre2 == 'true')
1137 have = libpcre2.found()
1138else
1139 have = false
1140 libpcre2 = []
1141endif
1142conf.set10('HAVE_PCRE2', have)
1143
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001144want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001145if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001146 libglib = dependency('glib-2.0',
1147 version : '>= 2.22.0',
1148 required : want_glib == 'true')
1149 libgobject = dependency('gobject-2.0',
1150 version : '>= 2.22.0',
1151 required : want_glib == 'true')
1152 libgio = dependency('gio-2.0',
1153 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001154 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001155else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001156 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001157 libglib = []
1158 libgobject = []
1159 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001160endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001161conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001162
1163want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001164if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001165 libdbus = dependency('dbus-1',
1166 version : '>= 1.3.2',
1167 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001168 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001169else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001170 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001171 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001172endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001173conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001174
Yu Watanabe42303dc2017-06-18 05:22:32 +09001175default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001176if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001177 default_dnssec = 'no'
1178endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001179if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001180 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1181 default_dnssec = 'no'
1182endif
1183conf.set('DEFAULT_DNSSEC_MODE',
1184 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1185substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1186
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001187want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001188if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001189 have = (conf.get('HAVE_LIBCURL') == 1 and
1190 conf.get('HAVE_ZLIB') == 1 and
1191 conf.get('HAVE_BZIP2') == 1 and
1192 conf.get('HAVE_XZ') == 1 and
1193 conf.get('HAVE_GCRYPT') == 1)
1194 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001195 error('importd support was requested, but dependencies are not available')
1196 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001197else
1198 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001199endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001200conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001201
1202want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001203if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001204 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1205 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001206 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1207 # it's possible to build one without the other. Complain only if
1208 # support was explictly requested. The auxiliary files like sysusers
1209 # config should be installed when any of the programs are built.
1210 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1211 error('remote support was requested, but dependencies are not available')
1212 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001213 have = have_deps[0] or have_deps[1]
1214else
1215 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001216endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001217conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001218
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001219foreach term : ['utmp',
1220 'hibernate',
1221 'environment-d',
1222 'binfmt',
1223 'coredump',
1224 'resolve',
1225 'logind',
1226 'hostnamed',
1227 'localed',
1228 'machined',
1229 'networkd',
1230 'timedated',
1231 'timesyncd',
1232 'myhostname',
1233 'firstboot',
1234 'randomseed',
1235 'backlight',
1236 'vconsole',
1237 'quotacheck',
1238 'sysusers',
1239 'tmpfiles',
1240 'hwdb',
1241 'rfkill',
1242 'ldconfig',
1243 'efi',
1244 'tpm',
1245 'ima',
1246 'smack',
1247 'gshadow',
1248 'idn',
1249 'nss-systemd']
1250 have = get_option(term)
1251 name = 'ENABLE_' + term.underscorify().to_upper()
1252 conf.set10(name, have)
1253 m4_defines += have ? ['-D' + name] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001254endforeach
1255
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001256want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001257install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001258slow_tests = get_option('slow-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001259tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001260fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001261
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001262conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001263
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001264#####################################################################
1265
1266if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001267 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001268
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001269 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001270 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001271 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001272 elif efi_arch == 'x86_64'
1273 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001274 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001275 elif efi_arch == 'arm'
1276 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001277 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001278 elif efi_arch == 'aarch64'
1279 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001280 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001281 else
1282 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001283 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001284 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001285
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001286 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001287 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001288
1289 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001290else
1291 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001292endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001293conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001294
1295#####################################################################
1296
1297config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001298 output : 'config.h',
1299 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001300
1301includes = include_directories('src/basic',
1302 'src/shared',
1303 'src/systemd',
1304 'src/journal',
1305 'src/resolve',
1306 'src/timesync',
1307 'src/login',
1308 'src/udev',
1309 'src/libudev',
1310 'src/core',
1311 'src/libsystemd/sd-bus',
1312 'src/libsystemd/sd-device',
1313 'src/libsystemd/sd-hwdb',
1314 'src/libsystemd/sd-id128',
1315 'src/libsystemd/sd-netlink',
1316 'src/libsystemd/sd-network',
1317 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001318 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001319
1320add_project_arguments('-include', 'config.h', language : 'c')
1321
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001322subdir('po')
1323subdir('catalog')
1324subdir('src/systemd')
1325subdir('src/basic')
1326subdir('src/libsystemd')
1327subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001328subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001329subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001330
1331libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001332 'journal-core',
1333 libjournal_core_sources,
1334 journald_gperf_c,
1335 include_directories : includes,
1336 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001337
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001338libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001339libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001340 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001341 '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 +02001342 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001343 include_directories : includes,
1344 link_args : ['-shared',
1345 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001346 link_with : [libbasic,
1347 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001348 link_whole : [libsystemd_static,
1349 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001350 dependencies : [threads,
1351 librt,
1352 libxz,
1353 liblz4],
1354 link_depends : libsystemd_sym,
1355 install : true,
1356 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001357
1358############################################################
1359
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001360# binaries that have --help and are intended for use by humans,
1361# usually, but not always, installed in /bin.
1362public_programs = []
1363
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001364subdir('src/libudev')
1365subdir('src/shared')
1366subdir('src/core')
1367subdir('src/udev')
1368subdir('src/network')
1369
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001370subdir('src/analyze')
1371subdir('src/journal-remote')
1372subdir('src/coredump')
1373subdir('src/hostname')
1374subdir('src/import')
1375subdir('src/kernel-install')
1376subdir('src/locale')
1377subdir('src/machine')
1378subdir('src/nspawn')
1379subdir('src/resolve')
1380subdir('src/timedate')
1381subdir('src/timesync')
1382subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001383subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001384
1385subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001386subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001387subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001388subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001389
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001390############################################################
1391
1392# only static linking apart from libdl, to make sure that the
1393# module is linked to all libraries that it uses.
1394test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001395 'test-dlopen',
1396 test_dlopen_c,
1397 include_directories : includes,
1398 link_with : [libbasic],
1399 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001400
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001401foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001402 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001403 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001404 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001405
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001406 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001407 if condition
1408 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001409
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001410 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1411 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001412
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001413 nss = shared_library(
1414 'nss_' + module,
1415 'src/nss-@0@/nss-@0@.c'.format(module),
1416 version : '2',
1417 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001418 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1419 link_args : ['-Wl,-z,nodelete',
1420 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001421 '-Wl,--version-script=' + version_script_arg,
1422 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001423 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001424 libbasic],
1425 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001426 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001427 link_depends : sym,
1428 install : true,
1429 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001430
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001431 # We cannot use shared_module because it does not support version suffix.
1432 # Unfortunately shared_library insists on creating the symlink…
1433 meson.add_install_script('sh', '-c',
1434 'rm $DESTDIR@0@/libnss_@1@.so'
1435 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001436
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001437 test('dlopen-nss_' + module,
1438 test_dlopen,
1439 args : [nss.full_path()]) # path to dlopen must include a slash
1440 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001441endforeach
1442
1443############################################################
1444
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001445executable('systemd',
1446 systemd_sources,
1447 include_directories : includes,
1448 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001449 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001450 dependencies : [threads,
1451 librt,
1452 libseccomp,
1453 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001454 libmount,
1455 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001456 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001457 install : true,
1458 install_dir : rootlibexecdir)
1459
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001460meson.add_install_script(meson_make_symlink,
1461 join_paths(rootlibexecdir, 'systemd'),
1462 join_paths(rootsbindir, 'init'))
1463
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001464exe = executable('systemd-analyze',
1465 systemd_analyze_sources,
1466 include_directories : includes,
1467 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001468 libshared],
1469 dependencies : [threads,
1470 librt,
1471 libseccomp,
1472 libselinux,
1473 libmount,
1474 libblkid],
1475 install_rpath : rootlibexecdir,
1476 install : true)
1477public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001478
1479executable('systemd-journald',
1480 systemd_journald_sources,
1481 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001482 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001483 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001484 dependencies : [threads,
1485 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001486 liblz4,
1487 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001488 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001489 install : true,
1490 install_dir : rootlibexecdir)
1491
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001492exe = executable('systemd-cat',
1493 systemd_cat_sources,
1494 include_directories : includes,
1495 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001496 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001497 dependencies : [threads],
1498 install_rpath : rootlibexecdir,
1499 install : true)
1500public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001501
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001502exe = executable('journalctl',
1503 journalctl_sources,
1504 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001505 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001506 dependencies : [threads,
1507 libqrencode,
1508 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001509 liblz4,
1510 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001511 install_rpath : rootlibexecdir,
1512 install : true,
1513 install_dir : rootbindir)
1514public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001515
1516executable('systemd-getty-generator',
1517 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001518 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001519 link_with : [libshared],
1520 install_rpath : rootlibexecdir,
1521 install : true,
1522 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001523
1524executable('systemd-debug-generator',
1525 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001526 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001527 link_with : [libshared],
1528 install_rpath : rootlibexecdir,
1529 install : true,
1530 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001531
1532executable('systemd-fstab-generator',
1533 'src/fstab-generator/fstab-generator.c',
1534 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001535 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001536 link_with : [libshared],
1537 install_rpath : rootlibexecdir,
1538 install : true,
1539 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001540
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001541if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001542 executable('30-systemd-environment-d-generator',
1543 'src/environment-d-generator/environment-d-generator.c',
1544 include_directories : includes,
1545 link_with : [libshared],
1546 install_rpath : rootlibexecdir,
1547 install : true,
1548 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001549
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001550 meson.add_install_script(meson_make_symlink,
1551 join_paths(sysconfdir, 'environment'),
1552 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001553endif
1554
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001555if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001556 executable('systemd-hibernate-resume-generator',
1557 'src/hibernate-resume/hibernate-resume-generator.c',
1558 include_directories : includes,
1559 link_with : [libshared],
1560 install_rpath : rootlibexecdir,
1561 install : true,
1562 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001563
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001564 executable('systemd-hibernate-resume',
1565 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001566 include_directories : includes,
1567 link_with : [libshared],
1568 install_rpath : rootlibexecdir,
1569 install : true,
1570 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001571endif
1572
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001573if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001574 executable('systemd-gpt-auto-generator',
1575 'src/gpt-auto-generator/gpt-auto-generator.c',
1576 'src/basic/blkid-util.h',
1577 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001578 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001579 dependencies : libblkid,
1580 install_rpath : rootlibexecdir,
1581 install : true,
1582 install_dir : systemgeneratordir)
1583
1584 exe = executable('systemd-dissect',
1585 'src/dissect/dissect.c',
1586 include_directories : includes,
1587 link_with : [libshared],
1588 install_rpath : rootlibexecdir,
1589 install : true,
1590 install_dir : rootlibexecdir)
1591 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001592endif
1593
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001594if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001595 executable('systemd-resolved',
1596 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001597 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001598 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001599 libbasic_gcrypt,
1600 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001601 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001602 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001603 libm,
1604 libidn],
1605 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001606 install : true,
1607 install_dir : rootlibexecdir)
1608
1609 exe = executable('systemd-resolve',
1610 systemd_resolve_sources,
1611 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001612 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001613 libbasic_gcrypt,
1614 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001615 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001616 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001617 libm,
1618 libidn],
1619 install_rpath : rootlibexecdir,
1620 install : true)
1621 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001622endif
1623
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001624if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001625 executable('systemd-logind',
1626 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001627 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001628 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001629 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001630 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001631 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001632 install_rpath : rootlibexecdir,
1633 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001634 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001635
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001636 exe = executable('loginctl',
1637 loginctl_sources,
1638 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001639 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001640 dependencies : [threads,
1641 liblz4,
1642 libxz],
1643 install_rpath : rootlibexecdir,
1644 install : true,
1645 install_dir : rootbindir)
1646 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001647
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001648 exe = executable('systemd-inhibit',
1649 'src/login/inhibit.c',
1650 include_directories : includes,
1651 link_with : [libshared],
1652 install_rpath : rootlibexecdir,
1653 install : true,
1654 install_dir : rootbindir)
1655 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001656
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001657 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001658 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1659 pam_systemd = shared_library(
1660 'pam_systemd',
1661 pam_systemd_c,
1662 name_prefix : '',
1663 include_directories : includes,
1664 link_args : ['-shared',
1665 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001666 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001667 libshared_static],
1668 dependencies : [threads,
1669 libpam,
1670 libpam_misc],
1671 link_depends : pam_systemd_sym,
1672 install : true,
1673 install_dir : pamlibdir)
1674
1675 test('dlopen-pam_systemd',
1676 test_dlopen,
1677 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1678 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001679endif
1680
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001681if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001682 executable('systemd-user-sessions',
1683 'src/user-sessions/user-sessions.c',
1684 include_directories : includes,
1685 link_with : [libshared],
1686 install_rpath : rootlibexecdir,
1687 install : true,
1688 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001689endif
1690
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001691if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001692 exe = executable('bootctl',
1693 'src/boot/bootctl.c',
1694 include_directories : includes,
1695 link_with : [libshared],
1696 dependencies : [libblkid],
1697 install_rpath : rootlibexecdir,
1698 install : true)
1699 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001700endif
1701
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001702exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1703 include_directories : includes,
1704 link_with : [libshared],
1705 dependencies : [threads],
1706 install_rpath : rootlibexecdir,
1707 install : true)
1708public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001709
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001710exe = executable('systemctl', 'src/systemctl/systemctl.c',
1711 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001712 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001713 dependencies : [threads,
1714 libcap,
1715 libselinux,
1716 libxz,
1717 liblz4],
1718 install_rpath : rootlibexecdir,
1719 install : true,
1720 install_dir : rootbindir)
1721public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001722
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001723foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1724 meson.add_install_script(meson_make_symlink,
1725 join_paths(rootbindir, 'systemctl'),
1726 join_paths(rootsbindir, alias))
1727endforeach
1728
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001729if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001730 executable('systemd-backlight',
1731 'src/backlight/backlight.c',
1732 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001733 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001734 install_rpath : rootlibexecdir,
1735 install : true,
1736 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001737endif
1738
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001739if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001740 executable('systemd-rfkill',
1741 'src/rfkill/rfkill.c',
1742 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001743 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001744 install_rpath : rootlibexecdir,
1745 install : true,
1746 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001747endif
1748
1749executable('systemd-system-update-generator',
1750 'src/system-update-generator/system-update-generator.c',
1751 include_directories : includes,
1752 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001753 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001754 install : true,
1755 install_dir : systemgeneratordir)
1756
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001757if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001758 executable('systemd-cryptsetup',
1759 'src/cryptsetup/cryptsetup.c',
1760 include_directories : includes,
1761 link_with : [libshared],
1762 dependencies : [libcryptsetup],
1763 install_rpath : rootlibexecdir,
1764 install : true,
1765 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001766
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001767 executable('systemd-cryptsetup-generator',
1768 'src/cryptsetup/cryptsetup-generator.c',
1769 include_directories : includes,
1770 link_with : [libshared],
1771 dependencies : [libcryptsetup],
1772 install_rpath : rootlibexecdir,
1773 install : true,
1774 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001775
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001776 executable('systemd-veritysetup',
1777 'src/veritysetup/veritysetup.c',
1778 include_directories : includes,
1779 link_with : [libshared],
1780 dependencies : [libcryptsetup],
1781 install_rpath : rootlibexecdir,
1782 install : true,
1783 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001784
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001785 executable('systemd-veritysetup-generator',
1786 'src/veritysetup/veritysetup-generator.c',
1787 include_directories : includes,
1788 link_with : [libshared],
1789 dependencies : [libcryptsetup],
1790 install_rpath : rootlibexecdir,
1791 install : true,
1792 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001793endif
1794
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001795if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001796 executable('systemd-sysv-generator',
1797 'src/sysv-generator/sysv-generator.c',
1798 include_directories : includes,
1799 link_with : [libshared],
1800 install_rpath : rootlibexecdir,
1801 install : true,
1802 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001803
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001804 executable('systemd-rc-local-generator',
1805 'src/rc-local-generator/rc-local-generator.c',
1806 include_directories : includes,
1807 link_with : [libshared],
1808 install_rpath : rootlibexecdir,
1809 install : true,
1810 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001811endif
1812
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001813if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001814 executable('systemd-hostnamed',
1815 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001816 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001817 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001818 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001819 install : true,
1820 install_dir : rootlibexecdir)
1821
1822 exe = executable('hostnamectl',
1823 'src/hostname/hostnamectl.c',
1824 include_directories : includes,
1825 link_with : [libshared],
1826 install_rpath : rootlibexecdir,
1827 install : true)
1828 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001829endif
1830
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001831if conf.get('ENABLE_LOCALED') == 1
1832 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001833 # logind will load libxkbcommon.so dynamically on its own
1834 deps = [libdl]
1835 else
1836 deps = []
1837 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001838
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001839 executable('systemd-localed',
1840 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001841 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001842 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001843 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001844 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001845 install : true,
1846 install_dir : rootlibexecdir)
1847
1848 exe = executable('localectl',
1849 localectl_sources,
1850 include_directories : includes,
1851 link_with : [libshared],
1852 install_rpath : rootlibexecdir,
1853 install : true)
1854 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001855endif
1856
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001857if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001858 executable('systemd-timedated',
1859 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001860 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001861 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001862 install_rpath : rootlibexecdir,
1863 install : true,
1864 install_dir : rootlibexecdir)
1865
1866 exe = executable('timedatectl',
1867 'src/timedate/timedatectl.c',
1868 include_directories : includes,
1869 install_rpath : rootlibexecdir,
1870 link_with : [libshared],
1871 install : true)
1872 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001873endif
1874
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001875if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001876 executable('systemd-timesyncd',
1877 systemd_timesyncd_sources,
1878 include_directories : includes,
1879 link_with : [libshared],
1880 dependencies : [threads,
1881 libm],
1882 install_rpath : rootlibexecdir,
1883 install : true,
1884 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001885endif
1886
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001887if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001888 executable('systemd-machined',
1889 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001890 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001891 link_with : [libmachine_core,
1892 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001893 install_rpath : rootlibexecdir,
1894 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001895 install_dir : rootlibexecdir)
1896
1897 exe = executable('machinectl',
1898 'src/machine/machinectl.c',
1899 include_directories : includes,
1900 link_with : [libshared],
1901 dependencies : [threads,
1902 libxz,
1903 liblz4],
1904 install_rpath : rootlibexecdir,
1905 install : true,
1906 install_dir : rootbindir)
1907 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001908endif
1909
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001910if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001911 executable('systemd-importd',
1912 systemd_importd_sources,
1913 include_directories : includes,
1914 link_with : [libshared],
1915 dependencies : [threads],
1916 install_rpath : rootlibexecdir,
1917 install : true,
1918 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001919
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001920 systemd_pull = executable('systemd-pull',
1921 systemd_pull_sources,
1922 include_directories : includes,
1923 link_with : [libshared],
1924 dependencies : [libcurl,
1925 libz,
1926 libbzip2,
1927 libxz,
1928 libgcrypt],
1929 install_rpath : rootlibexecdir,
1930 install : true,
1931 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001932
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001933 systemd_import = executable('systemd-import',
1934 systemd_import_sources,
1935 include_directories : includes,
1936 link_with : [libshared],
1937 dependencies : [libcurl,
1938 libz,
1939 libbzip2,
1940 libxz],
1941 install_rpath : rootlibexecdir,
1942 install : true,
1943 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001944
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001945 systemd_export = executable('systemd-export',
1946 systemd_export_sources,
1947 include_directories : includes,
1948 link_with : [libshared],
1949 dependencies : [libcurl,
1950 libz,
1951 libbzip2,
1952 libxz],
1953 install_rpath : rootlibexecdir,
1954 install : true,
1955 install_dir : rootlibexecdir)
1956 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001957endif
1958
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001959if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001960 exe = executable('systemd-journal-upload',
1961 systemd_journal_upload_sources,
1962 include_directories : includes,
1963 link_with : [libshared],
1964 dependencies : [threads,
1965 libcurl,
1966 libgnutls,
1967 libxz,
1968 liblz4],
1969 install_rpath : rootlibexecdir,
1970 install : true,
1971 install_dir : rootlibexecdir)
1972 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001973endif
1974
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001975if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001976 s_j_remote = executable('systemd-journal-remote',
1977 systemd_journal_remote_sources,
1978 include_directories : includes,
1979 link_with : [libshared],
1980 dependencies : [threads,
1981 libmicrohttpd,
1982 libgnutls,
1983 libxz,
1984 liblz4],
1985 install_rpath : rootlibexecdir,
1986 install : true,
1987 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001988
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001989 s_j_gatewayd = executable('systemd-journal-gatewayd',
1990 systemd_journal_gatewayd_sources,
1991 include_directories : includes,
1992 link_with : [libshared],
1993 dependencies : [threads,
1994 libmicrohttpd,
1995 libgnutls,
1996 libxz,
1997 liblz4],
1998 install_rpath : rootlibexecdir,
1999 install : true,
2000 install_dir : rootlibexecdir)
2001 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002002endif
2003
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002004if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002005 executable('systemd-coredump',
2006 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002007 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002008 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002009 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002010 libacl,
2011 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002012 libxz,
2013 liblz4],
2014 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002015 install : true,
2016 install_dir : rootlibexecdir)
2017
2018 exe = executable('coredumpctl',
2019 coredumpctl_sources,
2020 include_directories : includes,
2021 link_with : [libshared],
2022 dependencies : [threads,
2023 libxz,
2024 liblz4],
2025 install_rpath : rootlibexecdir,
2026 install : true)
2027 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002028endif
2029
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002030if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002031 exe = executable('systemd-binfmt',
2032 'src/binfmt/binfmt.c',
2033 include_directories : includes,
2034 link_with : [libshared],
2035 install_rpath : rootlibexecdir,
2036 install : true,
2037 install_dir : rootlibexecdir)
2038 public_programs += [exe]
2039
2040 meson.add_install_script('sh', '-c',
2041 mkdir_p.format(binfmtdir))
2042 meson.add_install_script('sh', '-c',
2043 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2044endif
2045
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002046if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002047 executable('systemd-vconsole-setup',
2048 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002049 include_directories : includes,
2050 link_with : [libshared],
2051 install_rpath : rootlibexecdir,
2052 install : true,
2053 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002054endif
2055
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002056if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002057 executable('systemd-random-seed',
2058 'src/random-seed/random-seed.c',
2059 include_directories : includes,
2060 link_with : [libshared],
2061 install_rpath : rootlibexecdir,
2062 install : true,
2063 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002064endif
2065
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002066if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002067 executable('systemd-firstboot',
2068 'src/firstboot/firstboot.c',
2069 include_directories : includes,
2070 link_with : [libshared],
2071 dependencies : [libcrypt],
2072 install_rpath : rootlibexecdir,
2073 install : true,
2074 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002075endif
2076
2077executable('systemd-remount-fs',
2078 'src/remount-fs/remount-fs.c',
2079 'src/core/mount-setup.c',
2080 'src/core/mount-setup.h',
2081 include_directories : includes,
2082 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002083 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002084 install : true,
2085 install_dir : rootlibexecdir)
2086
2087executable('systemd-machine-id-setup',
2088 'src/machine-id-setup/machine-id-setup-main.c',
2089 'src/core/machine-id-setup.c',
2090 'src/core/machine-id-setup.h',
2091 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002092 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002093 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002094 install : true,
2095 install_dir : rootbindir)
2096
2097executable('systemd-fsck',
2098 'src/fsck/fsck.c',
2099 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002100 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002101 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002102 install : true,
2103 install_dir : rootlibexecdir)
2104
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002105executable('systemd-growfs',
2106 'src/partition/growfs.c',
2107 include_directories : includes,
2108 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002109 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002110 install_rpath : rootlibexecdir,
2111 install : true,
2112 install_dir : rootlibexecdir)
2113
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002114executable('systemd-makefs',
2115 'src/partition/makefs.c',
2116 include_directories : includes,
2117 link_with : [libshared],
2118 install_rpath : rootlibexecdir,
2119 install : true,
2120 install_dir : rootlibexecdir)
2121
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002122executable('systemd-sleep',
2123 'src/sleep/sleep.c',
2124 include_directories : includes,
2125 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002126 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002127 install : true,
2128 install_dir : rootlibexecdir)
2129
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002130exe = executable('systemd-sysctl',
2131 'src/sysctl/sysctl.c',
2132 include_directories : includes,
2133 link_with : [libshared],
2134 install_rpath : rootlibexecdir,
2135 install : true,
2136 install_dir : rootlibexecdir)
2137public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002138
2139executable('systemd-ac-power',
2140 'src/ac-power/ac-power.c',
2141 include_directories : includes,
2142 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002143 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002144 install : true,
2145 install_dir : rootlibexecdir)
2146
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002147exe = executable('systemd-detect-virt',
2148 'src/detect-virt/detect-virt.c',
2149 include_directories : includes,
2150 link_with : [libshared],
2151 install_rpath : rootlibexecdir,
2152 install : true)
2153public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002154
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002155exe = executable('systemd-delta',
2156 'src/delta/delta.c',
2157 include_directories : includes,
2158 link_with : [libshared],
2159 install_rpath : rootlibexecdir,
2160 install : true)
2161public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002162
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002163exe = executable('systemd-escape',
2164 'src/escape/escape.c',
2165 include_directories : includes,
2166 link_with : [libshared],
2167 install_rpath : rootlibexecdir,
2168 install : true,
2169 install_dir : rootbindir)
2170public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002171
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002172exe = executable('systemd-notify',
2173 'src/notify/notify.c',
2174 include_directories : includes,
2175 link_with : [libshared],
2176 install_rpath : rootlibexecdir,
2177 install : true,
2178 install_dir : rootbindir)
2179public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002180
2181executable('systemd-volatile-root',
2182 'src/volatile-root/volatile-root.c',
2183 include_directories : includes,
2184 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002185 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002186 install : true,
2187 install_dir : rootlibexecdir)
2188
2189executable('systemd-cgroups-agent',
2190 'src/cgroups-agent/cgroups-agent.c',
2191 include_directories : includes,
2192 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002193 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002194 install : true,
2195 install_dir : rootlibexecdir)
2196
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002197exe = executable('systemd-path',
2198 'src/path/path.c',
2199 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002200 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002201 install_rpath : rootlibexecdir,
2202 install : true)
2203public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002204
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002205exe = executable('systemd-ask-password',
2206 'src/ask-password/ask-password.c',
2207 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002208 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002209 install_rpath : rootlibexecdir,
2210 install : true,
2211 install_dir : rootbindir)
2212public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002213
2214executable('systemd-reply-password',
2215 'src/reply-password/reply-password.c',
2216 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002217 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002218 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002219 install : true,
2220 install_dir : rootlibexecdir)
2221
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002222exe = executable('systemd-tty-ask-password-agent',
2223 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2224 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002225 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002226 install_rpath : rootlibexecdir,
2227 install : true,
2228 install_dir : rootbindir)
2229public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002230
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002231exe = executable('systemd-cgls',
2232 'src/cgls/cgls.c',
2233 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002234 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002235 install_rpath : rootlibexecdir,
2236 install : true)
2237public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002238
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002239exe = executable('systemd-cgtop',
2240 'src/cgtop/cgtop.c',
2241 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002242 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002243 install_rpath : rootlibexecdir,
2244 install : true)
2245public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002246
2247executable('systemd-initctl',
2248 'src/initctl/initctl.c',
2249 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002250 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002251 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002252 install : true,
2253 install_dir : rootlibexecdir)
2254
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002255exe = executable('systemd-mount',
2256 'src/mount/mount-tool.c',
2257 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002258 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002259 install_rpath : rootlibexecdir,
2260 install : true)
2261public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002262
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002263meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002264 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002265
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002266exe = executable('systemd-run',
2267 'src/run/run.c',
2268 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002269 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002270 install_rpath : rootlibexecdir,
2271 install : true)
2272public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002273
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002274exe = executable('systemd-stdio-bridge',
2275 'src/stdio-bridge/stdio-bridge.c',
2276 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002277 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002278 install_rpath : rootlibexecdir,
2279 install : true)
2280public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002281
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002282exe = executable('busctl',
2283 'src/busctl/busctl.c',
2284 'src/busctl/busctl-introspect.c',
2285 'src/busctl/busctl-introspect.h',
2286 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002287 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002288 install_rpath : rootlibexecdir,
2289 install : true)
2290public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002291
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002292if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002293 exe = executable('systemd-sysusers',
2294 'src/sysusers/sysusers.c',
2295 include_directories : includes,
2296 link_with : [libshared],
2297 install_rpath : rootlibexecdir,
2298 install : true,
2299 install_dir : rootbindir)
2300 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002301endif
2302
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002303if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002304 exe = executable('systemd-tmpfiles',
2305 'src/tmpfiles/tmpfiles.c',
2306 include_directories : includes,
2307 link_with : [libshared],
2308 dependencies : [libacl],
2309 install_rpath : rootlibexecdir,
2310 install : true,
2311 install_dir : rootbindir)
2312 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002313
2314 test('test-systemd-tmpfiles',
2315 test_systemd_tmpfiles_py,
2316 args : exe.full_path())
2317 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002318endif
2319
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002320if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002321 exe = executable('systemd-hwdb',
2322 'src/hwdb/hwdb.c',
2323 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2324 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002325 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002326 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002327 install : true,
2328 install_dir : rootbindir)
2329 public_programs += [exe]
2330endif
2331
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002332if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002333 executable('systemd-quotacheck',
2334 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002335 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002336 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002337 install_rpath : rootlibexecdir,
2338 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002339 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002340endif
2341
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002342exe = executable('systemd-socket-proxyd',
2343 'src/socket-proxy/socket-proxyd.c',
2344 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002345 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002346 dependencies : [threads],
2347 install_rpath : rootlibexecdir,
2348 install : true,
2349 install_dir : rootlibexecdir)
2350public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002351
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002352exe = executable('systemd-udevd',
2353 systemd_udevd_sources,
2354 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002355 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002356 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002357 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002358 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002359 dependencies : [threads,
2360 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002361 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002362 libacl,
2363 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002364 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002365 install : true,
2366 install_dir : rootlibexecdir)
2367public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002368
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002369exe = executable('udevadm',
2370 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002371 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002372 include_directories : includes,
2373 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002374 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002375 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002376 dependencies : [threads,
2377 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002378 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002379 libacl,
2380 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002381 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002382 install : true,
2383 install_dir : rootbindir)
2384public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002385
2386executable('systemd-shutdown',
2387 systemd_shutdown_sources,
2388 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002389 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002390 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002391 install : true,
2392 install_dir : rootlibexecdir)
2393
2394executable('systemd-update-done',
2395 'src/update-done/update-done.c',
2396 include_directories : includes,
2397 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002398 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002399 install : true,
2400 install_dir : rootlibexecdir)
2401
2402executable('systemd-update-utmp',
2403 'src/update-utmp/update-utmp.c',
2404 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002405 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002406 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002407 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002408 install : true,
2409 install_dir : rootlibexecdir)
2410
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002411if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002412 executable('systemd-modules-load',
2413 'src/modules-load/modules-load.c',
2414 include_directories : includes,
2415 link_with : [libshared],
2416 dependencies : [libkmod],
2417 install_rpath : rootlibexecdir,
2418 install : true,
2419 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002420
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002421 meson.add_install_script('sh', '-c',
2422 mkdir_p.format(modulesloaddir))
2423 meson.add_install_script('sh', '-c',
2424 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002425endif
2426
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002427exe = executable('systemd-nspawn',
2428 systemd_nspawn_sources,
2429 'src/core/mount-setup.c', # FIXME: use a variable?
2430 'src/core/mount-setup.h',
2431 'src/core/loopback-setup.c',
2432 'src/core/loopback-setup.h',
2433 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002434 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002435 dependencies : [libacl,
2436 libblkid,
2437 libseccomp,
2438 libselinux],
2439 install_rpath : rootlibexecdir,
2440 install : true)
2441public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002442
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002443if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002444 executable('systemd-networkd',
2445 systemd_networkd_sources,
2446 include_directories : includes,
2447 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002448 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002449 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002450 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002451 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002452 install_rpath : rootlibexecdir,
2453 install : true,
2454 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002455
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002456 executable('systemd-networkd-wait-online',
2457 systemd_networkd_wait_online_sources,
2458 include_directories : includes,
2459 link_with : [libnetworkd_core,
2460 libshared],
2461 install_rpath : rootlibexecdir,
2462 install : true,
2463 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002464
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002465 exe = executable('networkctl',
2466 networkctl_sources,
2467 include_directories : includes,
2468 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002469 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002470 install_rpath : rootlibexecdir,
2471 install : true,
2472 install_dir : rootbindir)
2473 public_programs += [exe]
2474endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002475
2476executable('systemd-sulogin-shell',
2477 ['src/sulogin-shell/sulogin-shell.c'],
2478 include_directories : includes,
2479 link_with : [libshared],
2480 install_rpath : rootlibexecdir,
2481 install : true,
2482 install_dir : rootlibexecdir)
2483
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002484############################################################
2485
2486foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002487 sources = tuple[0]
2488 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2489 dependencies = tuple[2]
2490 condition = tuple.length() >= 4 ? tuple[3] : ''
2491 type = tuple.length() >= 5 ? tuple[4] : ''
2492 defs = tuple.length() >= 6 ? tuple[5] : []
2493 incs = tuple.length() >= 7 ? tuple[6] : includes
2494 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002495
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002496 name = sources[0].split('/')[-1].split('.')[0]
2497 if type.startswith('timeout=')
2498 timeout = type.split('=')[1].to_int()
2499 type = ''
2500 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002501 if want_tests == 'false'
2502 message('Not compiling @0@ because tests is set to false'.format(name))
2503 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002504 exe = executable(
2505 name,
2506 sources,
2507 include_directories : incs,
2508 link_with : link_with,
2509 dependencies : dependencies,
2510 c_args : defs,
2511 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002512 install : install_tests,
2513 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002514
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002515 if type == 'manual'
2516 message('@0@ is a manual test'.format(name))
2517 elif type == 'unsafe' and want_tests != 'unsafe'
2518 message('@0@ is an unsafe test'.format(name))
2519 else
2520 test(name, exe,
2521 env : test_env,
2522 timeout : timeout)
2523 endif
2524 else
2525 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2526 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002527endforeach
2528
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002529test_libsystemd_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002530 'test-libsystemd-sym',
2531 test_libsystemd_sym_c,
2532 include_directories : includes,
2533 link_with : [libsystemd],
2534 install : install_tests,
2535 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002536test('test-libsystemd-sym',
2537 test_libsystemd_sym)
2538
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002539test_libudev_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002540 'test-libudev-sym',
2541 test_libudev_sym_c,
2542 include_directories : includes,
2543 c_args : ['-Wno-deprecated-declarations'],
2544 link_with : [libudev],
2545 install : install_tests,
2546 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002547test('test-libudev-sym',
2548 test_libudev_sym)
2549
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002550############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002551
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002552fuzzer_exes = []
2553
2554foreach tuple : fuzzers
2555 sources = tuple[0]
2556 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2557 dependencies = tuple[2]
2558 defs = tuple.length() >= 4 ? tuple[3] : []
2559 incs = tuple.length() >= 5 ? tuple[4] : includes
2560
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002561 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002562 dependencies += fuzzing_engine
2563 else
2564 sources += 'src/fuzz/fuzz-main.c'
2565 endif
2566
2567 name = sources[0].split('/')[-1].split('.')[0]
2568
2569 fuzzer_exes += executable(
2570 name,
2571 sources,
2572 include_directories : [incs, include_directories('src/fuzz')],
2573 link_with : link_with,
2574 dependencies : dependencies,
2575 c_args : defs,
2576 install : false)
2577endforeach
2578
2579run_target('fuzzers',
2580 depends : fuzzer_exes,
2581 command : ['true'])
2582
2583############################################################
2584
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002585make_directive_index_py = find_program('tools/make-directive-index.py')
2586make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002587xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002588hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002589
2590subdir('units')
2591subdir('sysctl.d')
2592subdir('sysusers.d')
2593subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002594subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002595subdir('hwdb')
2596subdir('network')
2597subdir('man')
2598subdir('shell-completion/bash')
2599subdir('shell-completion/zsh')
2600subdir('docs/sysvinit')
2601subdir('docs/var-log')
2602
2603# FIXME: figure out if the warning is true:
2604# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2605install_subdir('factory/etc',
2606 install_dir : factorydir)
2607
2608
2609install_data('xorg/50-systemd-user.sh',
2610 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002611install_data('modprobe.d/systemd.conf',
2612 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002613install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002614 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002615 'NEWS',
2616 'README',
2617 'doc/CODING_STYLE',
2618 'doc/DISTRO_PORTING',
2619 'doc/ENVIRONMENT.md',
2620 'doc/HACKING',
2621 'doc/TRANSIENT-SETTINGS.md',
2622 'doc/TRANSLATORS',
2623 'doc/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002624 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2625 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002626
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002627meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2628meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2629
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002630############################################################
2631
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002632meson_check_help = find_program('tools/meson-check-help.sh')
2633
2634foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002635 name = exec.full_path().split('/')[-1]
2636 test('check-help-' + name,
2637 meson_check_help,
2638 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002639endforeach
2640
2641############################################################
2642
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002643prev = ''
2644foreach p : fuzz_regression_tests
2645 a = p.split('/')[-3]
2646 b = p.split('/')[-2]
2647 c = p.split('/')[-1]
2648
2649 if a == 'address'
2650 build = sanitize_address
2651 else
2652 error('unknown sanitizer @0@'.format(a))
2653 endif
2654
2655 name = '@1@:@0@'.format(a, b)
2656
2657 if name != prev
2658 if want_tests == 'false'
2659 message('Not compiling @0@ because tests is set to false'.format(name))
2660 elif not sanitizers.contains(a)
2661 message('Not compiling @0@ because @1@ sanitizer is not available'.format(name, a))
2662 elif slow_tests
2663 exe = custom_target(
2664 name,
2665 output : name,
2666 depends : build,
2667 command : [env, 'ln', '-fs',
2668 join_paths(build.full_path(), b),
2669 '@OUTPUT@'],
2670 build_by_default : true)
2671 else
2672 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2673 endif
2674 endif
2675 prev = name
2676
2677 if want_tests != 'false' and slow_tests
2678 test(c, env, args : [exe.full_path(),
2679 join_paths(meson.source_root(),
2680 'test/fuzz-regressions',
2681 p)])
2682 endif
2683endforeach
2684
2685############################################################
2686
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002687if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002688 all_files = run_command(
2689 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002690 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002691 'ls-files',
2692 ':/*.[ch]'])
2693 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002694
userwithuide85a6902017-08-09 13:41:44 +00002695 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002696 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002697 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002698 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002699 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002700 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002701 output : 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002702 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002703endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002704
2705if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002706 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002707 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002708 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002709 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002710endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002711
2712if git.found()
2713 git_head = run_command(
2714 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002715 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002716 'rev-parse', 'HEAD']).stdout().strip()
2717 git_head_short = run_command(
2718 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002719 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002720 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2721
2722 run_target(
2723 'git-snapshot',
2724 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002725 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002726 git_head_short),
2727 '--prefix', 'systemd-@0@/'.format(git_head),
2728 'HEAD'])
2729endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002730
2731############################################################
2732
Lennart Poettering51b13862017-12-20 12:51:14 +01002733meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2734run_target(
2735 'check-api-docs',
2736 depends : [man, libsystemd, libudev],
2737 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2738
2739############################################################
2740
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002741status = [
2742 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2743
Yu Watanabe359b4962017-11-25 20:35:24 +09002744 'prefix directory: @0@'.format(prefixdir),
2745 'rootprefix directory: @0@'.format(rootprefixdir),
2746 'sysconf directory: @0@'.format(sysconfdir),
2747 'include directory: @0@'.format(includedir),
2748 'lib directory: @0@'.format(libdir),
2749 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002750 'SysV init scripts: @0@'.format(sysvinit_path),
2751 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002752 'PAM modules directory: @0@'.format(pamlibdir),
2753 'PAM configuration directory: @0@'.format(pamconfdir),
2754 'RPM macros directory: @0@'.format(rpmmacrosdir),
2755 'modprobe.d directory: @0@'.format(modprobedir),
2756 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2757 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2758 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2759 'bash completions directory: @0@'.format(bashcompletiondir),
2760 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002761 'extra start script: @0@'.format(get_option('rc-local')),
2762 'extra stop script: @0@'.format(get_option('halt-local')),
2763 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2764 get_option('debug-tty')),
2765 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002766 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002767 'maximum system UID: @0@'.format(system_uid_max),
2768 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002769 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2770 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2771 'minimum container UID base: @0@'.format(container_uid_base_min),
2772 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002773 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002774 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002775 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002776 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002777 'nobody user name: @0@'.format(nobody_user),
2778 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002779 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002780 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002781
2782 'default DNSSEC mode: @0@'.format(default_dnssec),
2783 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2784 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2785
2786alt_dns_servers = '\n '.join(dns_servers.split(' '))
2787alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2788status += [
2789 'default DNS servers: @0@'.format(alt_dns_servers),
2790 'default NTP servers: @0@'.format(alt_ntp_servers)]
2791
2792alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2793 '@@0@'.format(time_epoch)).stdout().strip()
2794status += [
2795 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2796
2797# TODO:
2798# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2799# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2800# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2801
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002802if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002803 status += [
2804 'efi arch: @0@'.format(efi_arch)]
2805
2806 if have_gnu_efi
2807 status += [
2808 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2809 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002810 'EFI lib directory: @0@'.format(efi_libdir),
2811 'EFI lds directory: @0@'.format(efi_ldsdir),
2812 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002813 endif
2814endif
2815
2816found = []
2817missing = []
2818
2819foreach tuple : [
2820 ['libcryptsetup'],
2821 ['PAM'],
2822 ['AUDIT'],
2823 ['IMA'],
2824 ['AppArmor'],
2825 ['SELinux'],
2826 ['SECCOMP'],
2827 ['SMACK'],
2828 ['zlib'],
2829 ['xz'],
2830 ['lz4'],
2831 ['bzip2'],
2832 ['ACL'],
2833 ['gcrypt'],
2834 ['qrencode'],
2835 ['microhttpd'],
2836 ['gnutls'],
2837 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002838 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002839 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002840 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002841 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002842 ['libiptc'],
2843 ['elfutils'],
2844 ['binfmt'],
2845 ['vconsole'],
2846 ['quotacheck'],
2847 ['tmpfiles'],
2848 ['environment.d'],
2849 ['sysusers'],
2850 ['firstboot'],
2851 ['randomseed'],
2852 ['backlight'],
2853 ['rfkill'],
2854 ['logind'],
2855 ['machined'],
2856 ['importd'],
2857 ['hostnamed'],
2858 ['timedated'],
2859 ['timesyncd'],
2860 ['localed'],
2861 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002862 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002863 ['coredump'],
2864 ['polkit'],
2865 ['legacy pkla', install_polkit_pkla],
2866 ['efi'],
2867 ['gnu-efi', have_gnu_efi],
2868 ['kmod'],
2869 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01002870 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002871 ['blkid'],
2872 ['dbus'],
2873 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002874 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002875 ['hwdb'],
2876 ['tpm'],
2877 ['man pages', want_man],
2878 ['html pages', want_html],
2879 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002880 ['split /usr', conf.get('HAVE_SPLIT_USR') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002881 ['SysV compat'],
2882 ['utmp'],
2883 ['ldconfig'],
2884 ['hibernate'],
2885 ['adm group', get_option('adm-group')],
2886 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002887 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002888 ['debug hashmap'],
2889 ['debug mmap cache'],
2890]
2891
2892 cond = tuple.get(1, '')
2893 if cond == ''
2894 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2895 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002896 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002897 endif
2898 if cond
2899 found += [tuple[0]]
2900 else
2901 missing += [tuple[0]]
2902 endif
2903endforeach
2904
2905status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002906 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002907 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002908 '',
2909 'disabled features: @0@'.format(', '.join(missing)),
2910 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002911message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002912
2913if rootprefixdir != rootprefix_default
2914 message('WARNING:\n' +
2915 ' Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2916 ' systemd used fixed names for unit file directories and other paths, so anything\n' +
2917 ' except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
2918endif