blob: 7cf89ecf2ed20d652f06d27ef21480dd2b7049a6 [file] [log] [blame]
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01001# SPDX-License-Identifier: LGPL-2.1+
2#
3# Copyright 2017 Zbigniew Jędrzejewski-Szmek
4#
5# systemd is free software; you can redistribute it and/or modify it
6# under the terms of the GNU Lesser General Public License as published by
7# the Free Software Foundation; either version 2.1 of the License, or
8# (at your option) any later version.
9#
10# systemd is distributed in the hope that it will be useful, but
11# WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13# Lesser General Public License for more details.
14#
15# You should have received a copy of the GNU Lesser General Public License
16# along with systemd; If not, see <http://www.gnu.org/licenses/>.
17
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040018project('systemd', 'c',
Lennart Poettering69cd51d2018-01-25 14:18:14 +010019 version : '237',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040020 license : 'LGPLv2+',
21 default_options: [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040022 'c_std=gnu99',
23 'prefix=/usr',
24 'sysconfdir=/etc',
25 'localstatedir=/var',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040026 ],
Zbigniew Jędrzejewski-Szmek86ea8d72017-11-20 08:08:43 +010027 meson_version : '>= 0.41',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040028 )
29
Lennart Poettering69cd51d2018-01-25 14:18:14 +010030libsystemd_version = '0.21.0'
31libudev_version = '1.6.9'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020032
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040033# We need the same data in three different formats, ugh!
34# Also, for hysterical reasons, we use different variable
35# names, sometimes. Not all variables are included in every
36# set. Ugh, ugh, ugh!
37conf = configuration_data()
38conf.set_quoted('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version())
39conf.set_quoted('PACKAGE_VERSION', meson.project_version())
40
41substs = configuration_data()
42substs.set('PACKAGE_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
43substs.set('PACKAGE_VERSION', meson.project_version())
44
45m4_defines = []
46
47#####################################################################
48
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040049# Try to install the git pre-commit hook
50git_hook = run_command(join_paths(meson.source_root(), 'tools/add-git-hook.sh'))
51if git_hook.returncode() == 0
52 message(git_hook.stdout().strip())
53endif
54
55#####################################################################
56
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010057if get_option('split-usr') == 'auto'
58 split_usr = run_command('test', '-L', '/bin').returncode() != 0
59else
60 split_usr = get_option('split-usr') == 'true'
61endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010062conf.set10('HAVE_SPLIT_USR', split_usr,
63 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010064
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010065if get_option('split-bin') == 'auto'
66 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
67else
68 split_bin = get_option('split-bin') == 'true'
69endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010070conf.set10('HAVE_SPLIT_BIN', split_bin,
71 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010072
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010073rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010074# Unusual rootprefixdir values are used by some distros
75# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010076rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010077if rootprefixdir == ''
78 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010079endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040080
81sysvinit_path = get_option('sysvinit-path')
82sysvrcnd_path = get_option('sysvrcnd-path')
Max Harmathy54248242017-12-15 16:05:25 +010083have = sysvinit_path != '' and sysvrcnd_path != ''
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020084conf.set10('HAVE_SYSV_COMPAT', have,
85 description : 'SysV init scripts and rcN.d links are supported')
86m4_defines += have ? ['-DHAVE_SYSV_COMPAT'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040087
88# join_paths ignore the preceding arguments if an absolute component is
89# encountered, so this should canonicalize various paths when they are
90# absolute or relative.
91prefixdir = get_option('prefix')
92if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040093 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040094endif
95bindir = join_paths(prefixdir, get_option('bindir'))
96libdir = join_paths(prefixdir, get_option('libdir'))
97sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
98includedir = join_paths(prefixdir, get_option('includedir'))
99datadir = join_paths(prefixdir, get_option('datadir'))
100localstatedir = join_paths('/', get_option('localstatedir'))
101
102rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +0100103rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400104rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
105
106rootlibdir = get_option('rootlibdir')
107if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400108 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400109endif
110
111# Dirs of external packages
Michael Bieble17e5ba2017-04-13 10:30:56 -0400112pkgconfigdatadir = join_paths(datadir, 'pkgconfig')
113pkgconfiglibdir = join_paths(libdir, 'pkgconfig')
114polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
115polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
116polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
117varlogdir = join_paths(localstatedir, 'log')
118xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900119rpmmacrosdir = get_option('rpmmacrosdir')
120if rpmmacrosdir != 'no'
121 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
122endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200123modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400124
125# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400126pkgdatadir = join_paths(datadir, 'systemd')
127environmentdir = join_paths(prefixdir, 'lib/environment.d')
128pkgsysconfdir = join_paths(sysconfdir, 'systemd')
129userunitdir = join_paths(prefixdir, 'lib/systemd/user')
130userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
131tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
132sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
133sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
134binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
135modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
136networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
137pkgincludedir = join_paths(includedir, 'systemd')
138systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
139usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
140systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
141userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
142systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
143systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
144systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
145systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
146udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
147udevhomedir = udevlibexecdir
148udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
149udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
150catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
151kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
152factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400153bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
154testsdir = join_paths(prefixdir, 'lib/systemd/tests')
155systemdstatedir = join_paths(localstatedir, 'lib/systemd')
156catalogstatedir = join_paths(systemdstatedir, 'catalog')
157randomseeddir = join_paths(localstatedir, 'lib/systemd')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400158
tblume75aaade2018-02-01 22:46:15 +0100159docdir = get_option('docdir')
160if docdir == ''
161 docdir = join_paths(datadir, 'doc/systemd')
162endif
163
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400164dbuspolicydir = get_option('dbuspolicydir')
165if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400166 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400167endif
168
169dbussessionservicedir = get_option('dbussessionservicedir')
170if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400171 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400172endif
173
174dbussystemservicedir = get_option('dbussystemservicedir')
175if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400176 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400177endif
178
179pamlibdir = get_option('pamlibdir')
180if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400181 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400182endif
183
184pamconfdir = get_option('pamconfdir')
185if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400186 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400187endif
188
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100189memory_accounting_default = get_option('memory-accounting-default')
190
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400191conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400192conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400193conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
194conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
195conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400196conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
197conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400198conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400199conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
200conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400201conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
202conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
203conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
204conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100205conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100206conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400207conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
208conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
209conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
210conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
211conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100212conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400213conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400214conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
215conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400216conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
217conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
218conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
219conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
220conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
221conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400222conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
223conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400224conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400225conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400226conf.set_quoted('LIBDIR', libdir)
227conf.set_quoted('ROOTLIBDIR', rootlibdir)
228conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
229conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400230conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
231conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
232conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
233conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
234conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
235conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100236conf.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'true' : 'false')
237conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_ON_OFF', memory_accounting_default ? 'on' : 'off')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400238
239conf.set_quoted('ABS_BUILD_DIR', meson.build_root())
240conf.set_quoted('ABS_SRC_DIR', meson.source_root())
241
242substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400243substs.set('exec_prefix', prefixdir)
244substs.set('libdir', libdir)
245substs.set('rootlibdir', rootlibdir)
246substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400247substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400248substs.set('bindir', bindir)
249substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400250substs.set('rootlibexecdir', rootlibexecdir)
251substs.set('systemunitdir', systemunitdir)
252substs.set('userunitdir', userunitdir)
253substs.set('systempresetdir', systempresetdir)
254substs.set('userpresetdir', userpresetdir)
255substs.set('udevhwdbdir', udevhwdbdir)
256substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400257substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400258substs.set('catalogdir', catalogdir)
259substs.set('tmpfilesdir', tmpfilesdir)
260substs.set('sysusersdir', sysusersdir)
261substs.set('sysctldir', sysctldir)
262substs.set('binfmtdir', binfmtdir)
263substs.set('modulesloaddir', modulesloaddir)
264substs.set('systemgeneratordir', systemgeneratordir)
265substs.set('usergeneratordir', usergeneratordir)
266substs.set('systemenvgeneratordir', systemenvgeneratordir)
267substs.set('userenvgeneratordir', userenvgeneratordir)
268substs.set('systemshutdowndir', systemshutdowndir)
269substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400270substs.set('VARLOGDIR', varlogdir)
271substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400272substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
273substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400274substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
275substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
276substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
277substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100278substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400279
280#####################################################################
281
282cc = meson.get_compiler('c')
283pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400284check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100285meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400286
Adam Duskett08318a22018-01-15 06:25:46 -0500287if get_option('tests') != 'false'
288 cxx = find_program('c++', required : false)
289 if cxx.found()
290 # Used only for tests
291 add_languages('cpp')
292 endif
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400293endif
294
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500295want_ossfuzz = get_option('oss-fuzz')
296want_libfuzzer = get_option('llvm-fuzz')
297fuzzer_build = want_ossfuzz or want_libfuzzer
298if want_ossfuzz and want_libfuzzer
299 error('only one of oss-fuzz and llvm-fuzz can be specified')
300endif
301if want_libfuzzer
302 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
303endif
304if want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500305 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
306endif
307
Zbigniew Jędrzejewski-Szmek75cf1d62017-07-04 17:59:15 -0400308foreach arg : ['-Wextra',
Zbigniew Jędrzejewski-Szmek70160ce2017-10-03 12:11:49 +0200309 '-Werror=undef',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400310 '-Wlogical-op',
311 '-Wmissing-include-dirs',
312 '-Wold-style-definition',
313 '-Wpointer-arith',
314 '-Winit-self',
315 '-Wdeclaration-after-statement',
316 '-Wfloat-equal',
317 '-Wsuggest-attribute=noreturn',
318 '-Werror=missing-prototypes',
319 '-Werror=implicit-function-declaration',
320 '-Werror=missing-declarations',
321 '-Werror=return-type',
322 '-Werror=incompatible-pointer-types',
323 '-Werror=format=2',
324 '-Wstrict-prototypes',
325 '-Wredundant-decls',
326 '-Wmissing-noreturn',
Zbigniew Jędrzejewski-Szmek97279d82017-11-20 14:23:40 +0100327 '-Wimplicit-fallthrough=5',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400328 '-Wshadow',
329 '-Wendif-labels',
330 '-Wstrict-aliasing=2',
331 '-Wwrite-strings',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400332 '-Werror=overflow',
333 '-Wdate-time',
334 '-Wnested-externs',
335 '-ffast-math',
336 '-fno-common',
337 '-fdiagnostics-show-option',
338 '-fno-strict-aliasing',
339 '-fvisibility=hidden',
340 '-fstack-protector',
341 '-fstack-protector-strong',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400342 '--param=ssp-buffer-size=4',
343 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400344 if cc.has_argument(arg)
345 add_project_arguments(arg, language : 'c')
346 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400347endforeach
348
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500349# the oss-fuzz fuzzers are not built with -fPIE, so don't
350# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500351if not fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500352 if cc.has_argument('-fPIE')
353 add_project_arguments('-fPIE', language : 'c')
354 endif
355endif
356
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400357# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
358# arguments, just emits a warnings. So test for the "positive" version instead.
359foreach arg : ['unused-parameter',
360 'missing-field-initializers',
361 'unused-result',
Zbigniew Jędrzejewski-Szmekfb1b5882017-09-04 19:49:12 +0300362 'format-signedness',
363 'error=nonnull', # work-around for gcc 7.1 turning this on on its own
364 ]
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400365 if cc.has_argument('-W' + arg)
366 add_project_arguments('-Wno-' + arg, language : 'c')
367 endif
368endforeach
369
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800370if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400371 #include <time.h>
372 #include <inttypes.h>
373 typedef uint64_t usec_t;
374 usec_t now(clockid_t clock);
375 int main(void) {
376 struct timespec now;
377 return 0;
378 }
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800379''', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400380 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400381endif
382
383if cc.get_id() == 'clang'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400384 foreach arg : ['-Wno-typedef-redefinition',
385 '-Wno-gnu-variable-sized-type-not-at-end',
386 ]
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400387 if cc.has_argument(arg,
388 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400389 add_project_arguments(arg, language : 'c')
390 endif
391 endforeach
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400392endif
393
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400394link_test_c = files('tools/meson-link-test.c')
395
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400396# --as-needed and --no-undefined are provided by meson by default,
397# run mesonconf to see what is enabled
398foreach arg : ['-Wl,-z,relro',
399 '-Wl,-z,now',
400 '-pie',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400401 ]
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400402
403 have = run_command(check_compilation_sh,
404 cc.cmd_array(), '-x', 'c', arg,
405 '-include', link_test_c).returncode() == 0
406 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500407 if have and (arg != '-pie' or not fuzzer_build)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400408 add_project_link_arguments(arg, language : 'c')
409 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400410endforeach
411
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100412# Check if various sanitizers are supported
413sanitizers = []
414foreach arg : ['address']
415
416 have = run_command(check_compilation_sh,
417 cc.cmd_array(), '-x', 'c',
418 '-fsanitize=@0@'.format(arg),
419 '-include', link_test_c).returncode() == 0
420 message('@0@ sanitizer supported: @1@'.format(arg, have ? 'yes' : 'no'))
421 if have
422 sanitizers += arg
423 endif
424endforeach
425
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400426if get_option('buildtype') != 'debug'
427 foreach arg : ['-ffunction-sections',
428 '-fdata-sections']
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400429 if cc.has_argument(arg,
430 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400431 add_project_arguments(arg, language : 'c')
432 endif
433 endforeach
434
435 foreach arg : ['-Wl,--gc-sections']
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400436 have = run_command(check_compilation_sh,
437 cc.cmd_array(), '-x', 'c', arg,
438 '-include', link_test_c).returncode() == 0
439 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
440 if have
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400441 add_project_link_arguments(arg, language : 'c')
442 endif
443 endforeach
444endif
445
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400446cpp = ' '.join(cc.cmd_array()) + ' -E'
447
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400448#####################################################################
449# compilation result tests
450
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400451conf.set('_GNU_SOURCE', true)
452conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400453
454conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
455conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
456conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
457conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
458conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
459conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
460conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
461
462decl_headers = '''
463#include <uchar.h>
464#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000465#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100466#include <linux/stat.h>
467#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400468'''
469# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
470
471foreach decl : ['char16_t',
472 'char32_t',
473 'key_serial_t',
474 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000475 'struct fib_rule_uid_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100476 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400477 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400478
479 # We get -1 if the size cannot be determined
480 have = cc.sizeof(decl, prefix : decl_headers) > 0
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200481 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400482endforeach
483
484foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
485 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
486 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
487 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530488 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400489 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
490 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
491 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
492 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
493 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530494 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400495 # if_tunnel.h is buggy and cannot be included on its own
496 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
497 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
498 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
499 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
500 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
501 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
502 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530503 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400504 ['NDA_IFINDEX', 'linux/neighbour.h'],
505 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000506 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400507 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530508 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400509 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400510 prefix = decl.length() > 2 ? decl[2] : ''
511 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200512 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400513endforeach
514
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400515foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200516 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400517endforeach
518
519foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100520 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100521 ['gettid', '''#include <sys/types.h>
522 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100523 ['pivot_root', '''#include <stdlib.h>
524 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100525 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400526 #include <sys/stat.h>
527 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100528 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100529 ['renameat2', '''#include <stdio.h>
530 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400531 ['kcmp', '''#include <linux/kcmp.h>'''],
532 ['keyctl', '''#include <sys/types.h>
533 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100534 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400535 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200536 ['bpf', '''#include <sys/syscall.h>
537 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100538 ['statx', '''#include <sys/types.h>
539 #include <sys/stat.h>
540 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100541 ['explicit_bzero' , '''#include <string.h>'''],
542 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400543]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400544
Lennart Poettering85db59b2017-12-25 12:01:14 +0100545 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200546 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400547endforeach
548
Lennart Poettering85db59b2017-12-25 12:01:14 +0100549if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200550 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200551 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400552else
553 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200554 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200555 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400556endif
557
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400558#####################################################################
559
560sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400561awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400562m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400563stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400564git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100565env = find_program('env')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400566
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400567meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400568mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400569test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
570splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400571
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400572# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
573# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500574progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400575 ['quotacheck', '/usr/sbin/quotacheck' ],
576 ['kill', '/usr/bin/kill' ],
577 ['kmod', '/usr/bin/kmod' ],
578 ['kexec', '/usr/sbin/kexec' ],
579 ['sulogin', '/usr/sbin/sulogin' ],
580 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
581 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
582 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
583 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
584 ]
585foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400586 path = get_option(prog[0] + '-path')
587 if path != ''
588 message('Using @1@ for @0@'.format(prog[0], path))
589 else
590 exe = find_program(prog[0],
591 '/usr/sbin/' + prog[0],
592 '/sbin/' + prog[0],
593 required: false)
594 path = exe.found() ? exe.path() : prog[1]
595 endif
596 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
597 conf.set_quoted(name, path)
598 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400599endforeach
600
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500601conf.set_quoted('TELINIT', get_option('telinit-path'))
602
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400603if run_command('ln', '--relative', '--help').returncode() != 0
604 error('ln does not support --relative')
605endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400606
607############################################################
608
609gperf = find_program('gperf')
610
611gperf_test_format = '''
612#include <string.h>
613const char * in_word_set(const char *, @0@);
614@1@
615'''
616gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
617gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
618gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
619if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400620 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400621else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400622 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
623 if cc.compiles(gperf_test)
624 gperf_len_type = 'unsigned'
625 else
626 error('unable to determine gperf len type')
627 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400628endif
629message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400630conf.set('GPERF_LEN_TYPE', gperf_len_type,
631 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400632
633############################################################
634
635if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400636 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400637endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100638foreach header : ['crypt.h',
639 'linux/btrfs.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400640 'linux/memfd.h',
641 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200642 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400643 'valgrind/memcheck.h',
644 'valgrind/valgrind.h',
645 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400646
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200647 conf.set10('HAVE_' + header.underscorify().to_upper(),
648 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400649endforeach
650
651############################################################
652
653conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400654conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
655gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400656
657default_hierarchy = get_option('default-hierarchy')
658conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
659 description : 'default cgroup hierarchy as string')
660if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400661 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400662elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400663 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400664else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400665 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400666endif
667
668time_epoch = get_option('time-epoch')
669if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400670 NEWS = files('NEWS')
671 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400672endif
673time_epoch = time_epoch.to_int()
674conf.set('TIME_EPOCH', time_epoch)
675
676system_uid_max = get_option('system-uid-max')
677if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400678 system_uid_max = run_command(
679 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800680 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
681 '/etc/login.defs').stdout().strip()
682 if system_uid_max == ''
683 system_uid_max = '999'
684 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400685endif
686system_uid_max = system_uid_max.to_int()
687conf.set('SYSTEM_UID_MAX', system_uid_max)
688substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400689message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400690
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400691system_gid_max = get_option('system-gid-max')
692if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400693 system_gid_max = run_command(
694 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800695 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
696 '/etc/login.defs').stdout().strip()
697 if system_gid_max == ''
698 system_gid_max = '999'
699 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400700endif
701system_gid_max = system_gid_max.to_int()
702conf.set('SYSTEM_GID_MAX', system_gid_max)
703substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400704message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400705
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100706dynamic_uid_min = get_option('dynamic-uid-min').to_int()
707dynamic_uid_max = get_option('dynamic-uid-max').to_int()
708conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
709conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
710substs.set('dynamicuidmin', dynamic_uid_min)
711substs.set('dynamicuidmax', dynamic_uid_max)
712
713container_uid_base_min = get_option('container-uid-base-min').to_int()
714container_uid_base_max = get_option('container-uid-base-max').to_int()
715conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
716conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
717substs.set('containeruidbasemin', container_uid_base_min)
718substs.set('containeruidbasemax', container_uid_base_max)
719
Lennart Poetteringafde4572017-12-05 11:00:24 +0100720nobody_user = get_option('nobody-user')
721nobody_group = get_option('nobody-group')
722
723getent_result = run_command('getent', 'passwd', '65534')
724if getent_result.returncode() == 0
725 name = getent_result.stdout().split(':')[0]
726 if name != nobody_user
727 message('WARNING:\n' +
728 ' 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) +
729 ' Your build will result in an user table setup that is incompatible with the local system.')
730 endif
731endif
732id_result = run_command('id', '-u', nobody_user)
733if id_result.returncode() == 0
734 id = id_result.stdout().to_int()
735 if id != 65534
736 message('WARNING:\n' +
737 ' 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) +
738 ' Your build will result in an user table setup that is incompatible with the local system.')
739 endif
740endif
741
742getent_result = run_command('getent', 'group', '65534')
743if getent_result.returncode() == 0
744 name = getent_result.stdout().split(':')[0]
745 if name != nobody_group
746 message('WARNING:\n' +
747 ' 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) +
748 ' Your build will result in an group table setup that is incompatible with the local system.')
749 endif
750endif
751id_result = run_command('id', '-g', nobody_group)
752if id_result.returncode() == 0
753 id = id_result.stdout().to_int()
754 if id != 65534
755 message('WARNING:\n' +
756 ' 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) +
757 ' Your build will result in an group table setup that is incompatible with the local system.')
758 endif
759endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900760if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
761 message('WARNING:\n' +
762 ' The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
763 ' Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
764endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100765
766conf.set_quoted('NOBODY_USER_NAME', nobody_user)
767conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900768substs.set('NOBODY_USER_NAME', nobody_user)
769substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100770
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400771tty_gid = get_option('tty-gid')
772conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400773substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400774
Ikey Doherty84786b82017-12-03 12:28:23 +0000775# Ensure provided GID argument is numeric, otherwise fallback to default assignment
776if get_option('users-gid') != ''
Yu Watanabed6806872017-12-05 14:01:39 +0900777 users_gid = get_option('users-gid').to_int()
Ikey Doherty84786b82017-12-03 12:28:23 +0000778else
Yu Watanabed6806872017-12-05 14:01:39 +0900779 users_gid = '-'
Ikey Doherty84786b82017-12-03 12:28:23 +0000780endif
781substs.set('USERS_GID', users_gid)
782
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400783if get_option('adm-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400784 m4_defines += ['-DENABLE_ADM_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400785endif
786
787if get_option('wheel-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400788 m4_defines += ['-DENABLE_WHEEL_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400789endif
790
791substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700792substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400793
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400794kill_user_processes = get_option('default-kill-user-processes')
795conf.set10('KILL_USER_PROCESSES', kill_user_processes)
796substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400797
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400798dns_servers = get_option('dns-servers')
799conf.set_quoted('DNS_SERVERS', dns_servers)
800substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400801
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400802ntp_servers = get_option('ntp-servers')
803conf.set_quoted('NTP_SERVERS', ntp_servers)
804substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400805
806conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
807
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400808substs.set('SUSHELL', get_option('debug-shell'))
809substs.set('DEBUGTTY', get_option('debug-tty'))
810
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400811debug = get_option('debug')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200812enable_debug_hashmap = false
813enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400814if debug != ''
815 foreach name : debug.split(',')
816 if name == 'hashmap'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200817 enable_debug_hashmap = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400818 elif name == 'mmap-cache'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200819 enable_debug_mmap_cache = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400820 else
821 message('unknown debug option "@0@", ignoring'.format(name))
822 endif
823 endforeach
824endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200825conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
826conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400827
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400828#####################################################################
829
830threads = dependency('threads')
831librt = cc.find_library('rt')
832libm = cc.find_library('m')
833libdl = cc.find_library('dl')
834libcrypt = cc.find_library('crypt')
835
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400836libcap = dependency('libcap', required : false)
837if not libcap.found()
838 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
839 libcap = cc.find_library('cap')
840endif
841
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400842libmount = dependency('mount',
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -0500843 version : '>= 2.30',
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500844 required : not fuzzer_build)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400845
846want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500847if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400848 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400849 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400850 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200851 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400852else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200853 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400854 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400855endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200856conf.set10('HAVE_SECCOMP', have)
857m4_defines += have ? ['-DHAVE_SECCOMP'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400858
859want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500860if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400861 libselinux = dependency('libselinux',
862 version : '>= 2.1.9',
863 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200864 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400865else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200866 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400867 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400868endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200869conf.set10('HAVE_SELINUX', have)
870m4_defines += have ? ['-DHAVE_SELINUX'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400871
872want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500873if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400874 libapparmor = dependency('libapparmor',
875 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200876 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400877else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200878 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400879 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400880endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200881conf.set10('HAVE_APPARMOR', have)
882m4_defines += have ? ['-DHAVE_APPARMOR'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400883
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400884smack_run_label = get_option('smack-run-label')
885if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400886 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
887 m4_defines += ['-DHAVE_SMACK_RUN_LABEL']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400888endif
889
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400890want_polkit = get_option('polkit')
891install_polkit = false
892install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500893if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400894 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400895
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400896 libpolkit = dependency('polkit-gobject-1',
897 required : false)
898 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
899 message('Old polkit detected, will install pkla files')
900 install_polkit_pkla = true
901 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400902endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200903conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400904
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400905want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500906if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400907 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200908 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400909else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200910 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400911 libacl = []
912endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200913conf.set10('HAVE_ACL', have)
914m4_defines += have ? ['-DHAVE_ACL'] : []
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400915
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400916want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500917if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400918 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200919 have = libaudit.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 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400923endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200924conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400925
926want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500927if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400928 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200929 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400930else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200931 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400932 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400933endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200934conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400935
936want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500937if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400938 libkmod = dependency('libkmod',
939 version : '>= 15',
940 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200941 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400942else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200943 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400944 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400945endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200946conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400947
948want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500949if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400950 libpam = cc.find_library('pam', required : want_pam == 'true')
951 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200952 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400953else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200954 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400955 libpam = []
956 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400957endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200958conf.set10('HAVE_PAM', have)
959m4_defines += have ? ['-DHAVE_PAM'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400960
961want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500962if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400963 libmicrohttpd = dependency('libmicrohttpd',
964 version : '>= 0.9.33',
965 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200966 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400967else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200968 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400969 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400970endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200971conf.set10('HAVE_MICROHTTPD', have)
972m4_defines += have ? ['-DHAVE_MICROHTTPD'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400973
974want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500975if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400976 libcryptsetup = dependency('libcryptsetup',
977 version : '>= 1.6.0',
978 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200979 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400980else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200981 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400982 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400983endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200984conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400985
986want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500987if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400988 libcurl = dependency('libcurl',
989 version : '>= 7.32.0',
990 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200991 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400992else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200993 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400994 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400995endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200996conf.set10('HAVE_LIBCURL', have)
997m4_defines += have ? ['-DHAVE_LIBCURL'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400998
999want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001000want_libidn2 = get_option('libidn2')
1001if want_libidn == 'true' and want_libidn2 == 'true'
1002 error('libidn and libidn2 cannot be requested simultaneously')
1003endif
1004
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001005if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001006 libidn = dependency('libidn',
1007 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001008 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001009else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001010 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001011 libidn = []
1012endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001013conf.set10('HAVE_LIBIDN', have)
1014m4_defines += have ? ['-DHAVE_LIBIDN'] : []
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001015if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001016 # libidn is used for both libidn and libidn2 objects
1017 libidn = dependency('libidn2',
1018 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001019 have = libidn.found()
1020else
1021 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001022endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001023conf.set10('HAVE_LIBIDN2', have)
1024m4_defines += have ? ['-DHAVE_LIBIDN2'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001025
1026want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001027if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001028 libiptc = dependency('libiptc',
1029 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001030 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001031else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001032 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001033 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001034endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001035conf.set10('HAVE_LIBIPTC', have)
1036m4_defines += have ? ['-DHAVE_LIBIPTC'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001037
1038want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001039if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001040 libqrencode = dependency('libqrencode',
1041 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001042 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001043else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001044 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001045 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001046endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001047conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001048
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001049want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001050if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001051 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1052 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001053 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001054else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001055 have = false
1056endif
1057if not have
1058 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001059 libgcrypt = []
1060 libgpg_error = []
1061endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001062conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001063
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001064want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001065if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001066 libgnutls = dependency('gnutls',
1067 version : '>= 3.1.4',
1068 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001069 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001070else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001071 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001072 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001073endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001074conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001075
1076want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001077if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001078 libdw = dependency('libdw',
1079 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001080 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001081else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001082 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001083 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001084endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001085conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001086
1087want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001088if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001089 libz = dependency('zlib',
1090 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001091 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001092else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001093 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001094 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001095endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001096conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001097
1098want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001099if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001100 libbzip2 = cc.find_library('bz2',
1101 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001102 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001103else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001104 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001105 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001106endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001107conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001108
1109want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001110if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001111 libxz = dependency('liblzma',
1112 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001113 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001114else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001115 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001116 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001117endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001118conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001119
1120want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001121if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001122 liblz4 = dependency('liblz4',
1123 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001124 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001125else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001126 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001127 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001128endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001129conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001130
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001131want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001132if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001133 libxkbcommon = dependency('xkbcommon',
1134 version : '>= 0.3.0',
1135 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001136 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001137else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001138 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001139 libxkbcommon = []
1140endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001141conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001142
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001143want_pcre2 = get_option('pcre2')
1144if want_pcre2 != 'false'
1145 libpcre2 = dependency('libpcre2-8',
1146 required : want_pcre2 == 'true')
1147 have = libpcre2.found()
1148else
1149 have = false
1150 libpcre2 = []
1151endif
1152conf.set10('HAVE_PCRE2', have)
1153
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001154want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001155if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001156 libglib = dependency('glib-2.0',
1157 version : '>= 2.22.0',
1158 required : want_glib == 'true')
1159 libgobject = dependency('gobject-2.0',
1160 version : '>= 2.22.0',
1161 required : want_glib == 'true')
1162 libgio = dependency('gio-2.0',
1163 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001164 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001165else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001166 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001167 libglib = []
1168 libgobject = []
1169 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001170endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001171conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001172
1173want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001174if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001175 libdbus = dependency('dbus-1',
1176 version : '>= 1.3.2',
1177 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001178 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001179else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001180 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001181 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001182endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001183conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001184
Yu Watanabe42303dc2017-06-18 05:22:32 +09001185default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001186if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001187 default_dnssec = 'no'
1188endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001189if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001190 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1191 default_dnssec = 'no'
1192endif
1193conf.set('DEFAULT_DNSSEC_MODE',
1194 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1195substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1196
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001197want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001198if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001199 have = (conf.get('HAVE_LIBCURL') == 1 and
1200 conf.get('HAVE_ZLIB') == 1 and
1201 conf.get('HAVE_BZIP2') == 1 and
1202 conf.get('HAVE_XZ') == 1 and
1203 conf.get('HAVE_GCRYPT') == 1)
1204 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001205 error('importd support was requested, but dependencies are not available')
1206 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001207else
1208 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001209endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001210conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001211
1212want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001213if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001214 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1215 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001216 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1217 # it's possible to build one without the other. Complain only if
1218 # support was explictly requested. The auxiliary files like sysusers
1219 # config should be installed when any of the programs are built.
1220 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1221 error('remote support was requested, but dependencies are not available')
1222 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001223 have = have_deps[0] or have_deps[1]
1224else
1225 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001226endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001227conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001228
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001229foreach term : ['utmp',
1230 'hibernate',
1231 'environment-d',
1232 'binfmt',
1233 'coredump',
1234 'resolve',
1235 'logind',
1236 'hostnamed',
1237 'localed',
1238 'machined',
1239 'networkd',
1240 'timedated',
1241 'timesyncd',
1242 'myhostname',
1243 'firstboot',
1244 'randomseed',
1245 'backlight',
1246 'vconsole',
1247 'quotacheck',
1248 'sysusers',
1249 'tmpfiles',
1250 'hwdb',
1251 'rfkill',
1252 'ldconfig',
1253 'efi',
1254 'tpm',
1255 'ima',
1256 'smack',
1257 'gshadow',
1258 'idn',
1259 'nss-systemd']
1260 have = get_option(term)
1261 name = 'ENABLE_' + term.underscorify().to_upper()
1262 conf.set10(name, have)
1263 m4_defines += have ? ['-D' + name] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001264endforeach
1265
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001266want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001267install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001268slow_tests = get_option('slow-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001269tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001270fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001271
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001272conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001273
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001274#####################################################################
1275
1276if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001277 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001278
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001279 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001280 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001281 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001282 elif efi_arch == 'x86_64'
1283 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001284 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001285 elif efi_arch == 'arm'
1286 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001287 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001288 elif efi_arch == 'aarch64'
1289 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001290 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001291 else
1292 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001293 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001294 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001295
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001296 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001297 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001298
1299 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001300else
1301 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001302endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001303conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001304
1305#####################################################################
1306
1307config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001308 output : 'config.h',
1309 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001310
1311includes = include_directories('src/basic',
1312 'src/shared',
1313 'src/systemd',
1314 'src/journal',
1315 'src/resolve',
1316 'src/timesync',
1317 'src/login',
1318 'src/udev',
1319 'src/libudev',
1320 'src/core',
1321 'src/libsystemd/sd-bus',
1322 'src/libsystemd/sd-device',
1323 'src/libsystemd/sd-hwdb',
1324 'src/libsystemd/sd-id128',
1325 'src/libsystemd/sd-netlink',
1326 'src/libsystemd/sd-network',
1327 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001328 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001329
1330add_project_arguments('-include', 'config.h', language : 'c')
1331
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001332subdir('po')
1333subdir('catalog')
1334subdir('src/systemd')
1335subdir('src/basic')
1336subdir('src/libsystemd')
1337subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001338subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001339subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001340
1341libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001342 'journal-core',
1343 libjournal_core_sources,
1344 journald_gperf_c,
1345 include_directories : includes,
1346 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001347
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001348libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001349libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001350 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001351 '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 +02001352 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001353 include_directories : includes,
1354 link_args : ['-shared',
1355 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001356 link_with : [libbasic,
1357 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001358 link_whole : [libsystemd_static,
1359 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001360 dependencies : [threads,
1361 librt,
1362 libxz,
1363 liblz4],
1364 link_depends : libsystemd_sym,
1365 install : true,
1366 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001367
1368############################################################
1369
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001370# binaries that have --help and are intended for use by humans,
1371# usually, but not always, installed in /bin.
1372public_programs = []
1373
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001374subdir('src/libudev')
1375subdir('src/shared')
1376subdir('src/core')
1377subdir('src/udev')
1378subdir('src/network')
1379
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001380subdir('src/analyze')
1381subdir('src/journal-remote')
1382subdir('src/coredump')
1383subdir('src/hostname')
1384subdir('src/import')
1385subdir('src/kernel-install')
1386subdir('src/locale')
1387subdir('src/machine')
1388subdir('src/nspawn')
1389subdir('src/resolve')
1390subdir('src/timedate')
1391subdir('src/timesync')
1392subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001393subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001394
1395subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001396subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001397subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001398subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001399
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001400############################################################
1401
1402# only static linking apart from libdl, to make sure that the
1403# module is linked to all libraries that it uses.
1404test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001405 'test-dlopen',
1406 test_dlopen_c,
1407 include_directories : includes,
1408 link_with : [libbasic],
1409 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001410
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001411foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001412 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001413 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001414 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001415
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001416 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001417 if condition
1418 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001419
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001420 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1421 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001422
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001423 nss = shared_library(
1424 'nss_' + module,
1425 'src/nss-@0@/nss-@0@.c'.format(module),
1426 version : '2',
1427 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001428 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1429 link_args : ['-Wl,-z,nodelete',
1430 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001431 '-Wl,--version-script=' + version_script_arg,
1432 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001433 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001434 libbasic],
1435 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001436 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001437 link_depends : sym,
1438 install : true,
1439 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001440
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001441 # We cannot use shared_module because it does not support version suffix.
1442 # Unfortunately shared_library insists on creating the symlink…
1443 meson.add_install_script('sh', '-c',
1444 'rm $DESTDIR@0@/libnss_@1@.so'
1445 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001446
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001447 test('dlopen-nss_' + module,
1448 test_dlopen,
1449 args : [nss.full_path()]) # path to dlopen must include a slash
1450 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001451endforeach
1452
1453############################################################
1454
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001455executable('systemd',
1456 systemd_sources,
1457 include_directories : includes,
1458 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001459 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001460 dependencies : [threads,
1461 librt,
1462 libseccomp,
1463 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001464 libmount,
1465 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001466 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001467 install : true,
1468 install_dir : rootlibexecdir)
1469
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001470meson.add_install_script(meson_make_symlink,
1471 join_paths(rootlibexecdir, 'systemd'),
1472 join_paths(rootsbindir, 'init'))
1473
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001474exe = executable('systemd-analyze',
1475 systemd_analyze_sources,
1476 include_directories : includes,
1477 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001478 libshared],
1479 dependencies : [threads,
1480 librt,
1481 libseccomp,
1482 libselinux,
1483 libmount,
1484 libblkid],
1485 install_rpath : rootlibexecdir,
1486 install : true)
1487public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001488
1489executable('systemd-journald',
1490 systemd_journald_sources,
1491 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001492 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001493 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001494 dependencies : [threads,
1495 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001496 liblz4,
1497 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001498 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001499 install : true,
1500 install_dir : rootlibexecdir)
1501
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001502exe = executable('systemd-cat',
1503 systemd_cat_sources,
1504 include_directories : includes,
1505 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001506 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001507 dependencies : [threads],
1508 install_rpath : rootlibexecdir,
1509 install : true)
1510public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001511
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001512exe = executable('journalctl',
1513 journalctl_sources,
1514 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001515 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001516 dependencies : [threads,
1517 libqrencode,
1518 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001519 liblz4,
1520 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001521 install_rpath : rootlibexecdir,
1522 install : true,
1523 install_dir : rootbindir)
1524public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001525
1526executable('systemd-getty-generator',
1527 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001528 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001529 link_with : [libshared],
1530 install_rpath : rootlibexecdir,
1531 install : true,
1532 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001533
1534executable('systemd-debug-generator',
1535 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001536 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001537 link_with : [libshared],
1538 install_rpath : rootlibexecdir,
1539 install : true,
1540 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001541
1542executable('systemd-fstab-generator',
1543 'src/fstab-generator/fstab-generator.c',
1544 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001545 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001546 link_with : [libshared],
1547 install_rpath : rootlibexecdir,
1548 install : true,
1549 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001550
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001551if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001552 executable('30-systemd-environment-d-generator',
1553 'src/environment-d-generator/environment-d-generator.c',
1554 include_directories : includes,
1555 link_with : [libshared],
1556 install_rpath : rootlibexecdir,
1557 install : true,
1558 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001559
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001560 meson.add_install_script(meson_make_symlink,
1561 join_paths(sysconfdir, 'environment'),
1562 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001563endif
1564
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001565if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001566 executable('systemd-hibernate-resume-generator',
1567 'src/hibernate-resume/hibernate-resume-generator.c',
1568 include_directories : includes,
1569 link_with : [libshared],
1570 install_rpath : rootlibexecdir,
1571 install : true,
1572 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001573
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001574 executable('systemd-hibernate-resume',
1575 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001576 include_directories : includes,
1577 link_with : [libshared],
1578 install_rpath : rootlibexecdir,
1579 install : true,
1580 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001581endif
1582
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001583if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001584 executable('systemd-gpt-auto-generator',
1585 'src/gpt-auto-generator/gpt-auto-generator.c',
1586 'src/basic/blkid-util.h',
1587 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001588 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001589 dependencies : libblkid,
1590 install_rpath : rootlibexecdir,
1591 install : true,
1592 install_dir : systemgeneratordir)
1593
1594 exe = executable('systemd-dissect',
1595 'src/dissect/dissect.c',
1596 include_directories : includes,
1597 link_with : [libshared],
1598 install_rpath : rootlibexecdir,
1599 install : true,
1600 install_dir : rootlibexecdir)
1601 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001602endif
1603
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001604if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001605 executable('systemd-resolved',
1606 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001607 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001608 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001609 libbasic_gcrypt,
1610 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001611 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001612 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001613 libm,
1614 libidn],
1615 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001616 install : true,
1617 install_dir : rootlibexecdir)
1618
1619 exe = executable('systemd-resolve',
1620 systemd_resolve_sources,
1621 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001622 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001623 libbasic_gcrypt,
1624 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001625 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001626 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001627 libm,
1628 libidn],
1629 install_rpath : rootlibexecdir,
1630 install : true)
1631 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001632endif
1633
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001634if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001635 executable('systemd-logind',
1636 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001637 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001638 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001639 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001640 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001641 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001642 install_rpath : rootlibexecdir,
1643 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001644 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001645
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001646 exe = executable('loginctl',
1647 loginctl_sources,
1648 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001649 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001650 dependencies : [threads,
1651 liblz4,
1652 libxz],
1653 install_rpath : rootlibexecdir,
1654 install : true,
1655 install_dir : rootbindir)
1656 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001657
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001658 exe = executable('systemd-inhibit',
1659 'src/login/inhibit.c',
1660 include_directories : includes,
1661 link_with : [libshared],
1662 install_rpath : rootlibexecdir,
1663 install : true,
1664 install_dir : rootbindir)
1665 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001666
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001667 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001668 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1669 pam_systemd = shared_library(
1670 'pam_systemd',
1671 pam_systemd_c,
1672 name_prefix : '',
1673 include_directories : includes,
1674 link_args : ['-shared',
1675 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001676 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001677 libshared_static],
1678 dependencies : [threads,
1679 libpam,
1680 libpam_misc],
1681 link_depends : pam_systemd_sym,
1682 install : true,
1683 install_dir : pamlibdir)
1684
1685 test('dlopen-pam_systemd',
1686 test_dlopen,
1687 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1688 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001689endif
1690
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001691if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001692 executable('systemd-user-sessions',
1693 'src/user-sessions/user-sessions.c',
1694 include_directories : includes,
1695 link_with : [libshared],
1696 install_rpath : rootlibexecdir,
1697 install : true,
1698 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001699endif
1700
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001701if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001702 exe = executable('bootctl',
1703 'src/boot/bootctl.c',
1704 include_directories : includes,
1705 link_with : [libshared],
1706 dependencies : [libblkid],
1707 install_rpath : rootlibexecdir,
1708 install : true)
1709 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001710endif
1711
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001712exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1713 include_directories : includes,
1714 link_with : [libshared],
1715 dependencies : [threads],
1716 install_rpath : rootlibexecdir,
1717 install : true)
1718public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001719
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001720exe = executable('systemctl', 'src/systemctl/systemctl.c',
1721 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001722 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001723 dependencies : [threads,
1724 libcap,
1725 libselinux,
1726 libxz,
1727 liblz4],
1728 install_rpath : rootlibexecdir,
1729 install : true,
1730 install_dir : rootbindir)
1731public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001732
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001733foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1734 meson.add_install_script(meson_make_symlink,
1735 join_paths(rootbindir, 'systemctl'),
1736 join_paths(rootsbindir, alias))
1737endforeach
1738
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001739if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001740 executable('systemd-backlight',
1741 'src/backlight/backlight.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
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001749if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001750 executable('systemd-rfkill',
1751 'src/rfkill/rfkill.c',
1752 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001753 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001754 install_rpath : rootlibexecdir,
1755 install : true,
1756 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001757endif
1758
1759executable('systemd-system-update-generator',
1760 'src/system-update-generator/system-update-generator.c',
1761 include_directories : includes,
1762 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001763 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001764 install : true,
1765 install_dir : systemgeneratordir)
1766
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001767if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001768 executable('systemd-cryptsetup',
1769 'src/cryptsetup/cryptsetup.c',
1770 include_directories : includes,
1771 link_with : [libshared],
1772 dependencies : [libcryptsetup],
1773 install_rpath : rootlibexecdir,
1774 install : true,
1775 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001776
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001777 executable('systemd-cryptsetup-generator',
1778 'src/cryptsetup/cryptsetup-generator.c',
1779 include_directories : includes,
1780 link_with : [libshared],
1781 dependencies : [libcryptsetup],
1782 install_rpath : rootlibexecdir,
1783 install : true,
1784 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001785
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001786 executable('systemd-veritysetup',
1787 'src/veritysetup/veritysetup.c',
1788 include_directories : includes,
1789 link_with : [libshared],
1790 dependencies : [libcryptsetup],
1791 install_rpath : rootlibexecdir,
1792 install : true,
1793 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001794
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001795 executable('systemd-veritysetup-generator',
1796 'src/veritysetup/veritysetup-generator.c',
1797 include_directories : includes,
1798 link_with : [libshared],
1799 dependencies : [libcryptsetup],
1800 install_rpath : rootlibexecdir,
1801 install : true,
1802 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001803endif
1804
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001805if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001806 executable('systemd-sysv-generator',
1807 'src/sysv-generator/sysv-generator.c',
1808 include_directories : includes,
1809 link_with : [libshared],
1810 install_rpath : rootlibexecdir,
1811 install : true,
1812 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001813
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001814 executable('systemd-rc-local-generator',
1815 'src/rc-local-generator/rc-local-generator.c',
1816 include_directories : includes,
1817 link_with : [libshared],
1818 install_rpath : rootlibexecdir,
1819 install : true,
1820 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001821endif
1822
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001823if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001824 executable('systemd-hostnamed',
1825 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001826 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001827 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001828 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001829 install : true,
1830 install_dir : rootlibexecdir)
1831
1832 exe = executable('hostnamectl',
1833 'src/hostname/hostnamectl.c',
1834 include_directories : includes,
1835 link_with : [libshared],
1836 install_rpath : rootlibexecdir,
1837 install : true)
1838 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001839endif
1840
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001841if conf.get('ENABLE_LOCALED') == 1
1842 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001843 # logind will load libxkbcommon.so dynamically on its own
1844 deps = [libdl]
1845 else
1846 deps = []
1847 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001848
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001849 executable('systemd-localed',
1850 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001851 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001852 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001853 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001854 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001855 install : true,
1856 install_dir : rootlibexecdir)
1857
1858 exe = executable('localectl',
1859 localectl_sources,
1860 include_directories : includes,
1861 link_with : [libshared],
1862 install_rpath : rootlibexecdir,
1863 install : true)
1864 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001865endif
1866
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001867if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001868 executable('systemd-timedated',
1869 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001870 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001871 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001872 install_rpath : rootlibexecdir,
1873 install : true,
1874 install_dir : rootlibexecdir)
1875
1876 exe = executable('timedatectl',
1877 'src/timedate/timedatectl.c',
1878 include_directories : includes,
1879 install_rpath : rootlibexecdir,
1880 link_with : [libshared],
1881 install : true)
1882 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001883endif
1884
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001885if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001886 executable('systemd-timesyncd',
1887 systemd_timesyncd_sources,
1888 include_directories : includes,
1889 link_with : [libshared],
1890 dependencies : [threads,
1891 libm],
1892 install_rpath : rootlibexecdir,
1893 install : true,
1894 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001895endif
1896
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001897if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001898 executable('systemd-machined',
1899 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001900 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001901 link_with : [libmachine_core,
1902 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001903 install_rpath : rootlibexecdir,
1904 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001905 install_dir : rootlibexecdir)
1906
1907 exe = executable('machinectl',
1908 'src/machine/machinectl.c',
1909 include_directories : includes,
1910 link_with : [libshared],
1911 dependencies : [threads,
1912 libxz,
1913 liblz4],
1914 install_rpath : rootlibexecdir,
1915 install : true,
1916 install_dir : rootbindir)
1917 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001918endif
1919
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001920if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001921 executable('systemd-importd',
1922 systemd_importd_sources,
1923 include_directories : includes,
1924 link_with : [libshared],
1925 dependencies : [threads],
1926 install_rpath : rootlibexecdir,
1927 install : true,
1928 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001929
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001930 systemd_pull = executable('systemd-pull',
1931 systemd_pull_sources,
1932 include_directories : includes,
1933 link_with : [libshared],
1934 dependencies : [libcurl,
1935 libz,
1936 libbzip2,
1937 libxz,
1938 libgcrypt],
1939 install_rpath : rootlibexecdir,
1940 install : true,
1941 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001942
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001943 systemd_import = executable('systemd-import',
1944 systemd_import_sources,
1945 include_directories : includes,
1946 link_with : [libshared],
1947 dependencies : [libcurl,
1948 libz,
1949 libbzip2,
1950 libxz],
1951 install_rpath : rootlibexecdir,
1952 install : true,
1953 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001954
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001955 systemd_export = executable('systemd-export',
1956 systemd_export_sources,
1957 include_directories : includes,
1958 link_with : [libshared],
1959 dependencies : [libcurl,
1960 libz,
1961 libbzip2,
1962 libxz],
1963 install_rpath : rootlibexecdir,
1964 install : true,
1965 install_dir : rootlibexecdir)
1966 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001967endif
1968
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001969if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001970 exe = executable('systemd-journal-upload',
1971 systemd_journal_upload_sources,
1972 include_directories : includes,
1973 link_with : [libshared],
1974 dependencies : [threads,
1975 libcurl,
1976 libgnutls,
1977 libxz,
1978 liblz4],
1979 install_rpath : rootlibexecdir,
1980 install : true,
1981 install_dir : rootlibexecdir)
1982 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001983endif
1984
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001985if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001986 s_j_remote = executable('systemd-journal-remote',
1987 systemd_journal_remote_sources,
1988 include_directories : includes,
1989 link_with : [libshared],
1990 dependencies : [threads,
1991 libmicrohttpd,
1992 libgnutls,
1993 libxz,
1994 liblz4],
1995 install_rpath : rootlibexecdir,
1996 install : true,
1997 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001998
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001999 s_j_gatewayd = executable('systemd-journal-gatewayd',
2000 systemd_journal_gatewayd_sources,
2001 include_directories : includes,
2002 link_with : [libshared],
2003 dependencies : [threads,
2004 libmicrohttpd,
2005 libgnutls,
2006 libxz,
2007 liblz4],
2008 install_rpath : rootlibexecdir,
2009 install : true,
2010 install_dir : rootlibexecdir)
2011 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002012endif
2013
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002014if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002015 executable('systemd-coredump',
2016 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002017 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002018 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002019 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002020 libacl,
2021 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002022 libxz,
2023 liblz4],
2024 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002025 install : true,
2026 install_dir : rootlibexecdir)
2027
2028 exe = executable('coredumpctl',
2029 coredumpctl_sources,
2030 include_directories : includes,
2031 link_with : [libshared],
2032 dependencies : [threads,
2033 libxz,
2034 liblz4],
2035 install_rpath : rootlibexecdir,
2036 install : true)
2037 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002038endif
2039
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002040if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002041 exe = executable('systemd-binfmt',
2042 'src/binfmt/binfmt.c',
2043 include_directories : includes,
2044 link_with : [libshared],
2045 install_rpath : rootlibexecdir,
2046 install : true,
2047 install_dir : rootlibexecdir)
2048 public_programs += [exe]
2049
2050 meson.add_install_script('sh', '-c',
2051 mkdir_p.format(binfmtdir))
2052 meson.add_install_script('sh', '-c',
2053 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2054endif
2055
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002056if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002057 executable('systemd-vconsole-setup',
2058 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002059 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_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002067 executable('systemd-random-seed',
2068 'src/random-seed/random-seed.c',
2069 include_directories : includes,
2070 link_with : [libshared],
2071 install_rpath : rootlibexecdir,
2072 install : true,
2073 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002074endif
2075
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002076if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002077 executable('systemd-firstboot',
2078 'src/firstboot/firstboot.c',
2079 include_directories : includes,
2080 link_with : [libshared],
2081 dependencies : [libcrypt],
2082 install_rpath : rootlibexecdir,
2083 install : true,
2084 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002085endif
2086
2087executable('systemd-remount-fs',
2088 'src/remount-fs/remount-fs.c',
2089 'src/core/mount-setup.c',
2090 'src/core/mount-setup.h',
2091 include_directories : includes,
2092 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 : rootlibexecdir)
2096
2097executable('systemd-machine-id-setup',
2098 'src/machine-id-setup/machine-id-setup-main.c',
2099 'src/core/machine-id-setup.c',
2100 'src/core/machine-id-setup.h',
2101 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002102 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002103 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002104 install : true,
2105 install_dir : rootbindir)
2106
2107executable('systemd-fsck',
2108 'src/fsck/fsck.c',
2109 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002110 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002111 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002112 install : true,
2113 install_dir : rootlibexecdir)
2114
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002115executable('systemd-growfs',
2116 'src/partition/growfs.c',
2117 include_directories : includes,
2118 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002119 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002120 install_rpath : rootlibexecdir,
2121 install : true,
2122 install_dir : rootlibexecdir)
2123
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002124executable('systemd-makefs',
2125 'src/partition/makefs.c',
2126 include_directories : includes,
2127 link_with : [libshared],
2128 install_rpath : rootlibexecdir,
2129 install : true,
2130 install_dir : rootlibexecdir)
2131
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002132executable('systemd-sleep',
2133 'src/sleep/sleep.c',
2134 include_directories : includes,
2135 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002136 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002137 install : true,
2138 install_dir : rootlibexecdir)
2139
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002140exe = executable('systemd-sysctl',
2141 'src/sysctl/sysctl.c',
2142 include_directories : includes,
2143 link_with : [libshared],
2144 install_rpath : rootlibexecdir,
2145 install : true,
2146 install_dir : rootlibexecdir)
2147public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002148
2149executable('systemd-ac-power',
2150 'src/ac-power/ac-power.c',
2151 include_directories : includes,
2152 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002153 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002154 install : true,
2155 install_dir : rootlibexecdir)
2156
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002157exe = executable('systemd-detect-virt',
2158 'src/detect-virt/detect-virt.c',
2159 include_directories : includes,
2160 link_with : [libshared],
2161 install_rpath : rootlibexecdir,
2162 install : true)
2163public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002164
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002165exe = executable('systemd-delta',
2166 'src/delta/delta.c',
2167 include_directories : includes,
2168 link_with : [libshared],
2169 install_rpath : rootlibexecdir,
2170 install : true)
2171public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002172
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002173exe = executable('systemd-escape',
2174 'src/escape/escape.c',
2175 include_directories : includes,
2176 link_with : [libshared],
2177 install_rpath : rootlibexecdir,
2178 install : true,
2179 install_dir : rootbindir)
2180public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002181
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002182exe = executable('systemd-notify',
2183 'src/notify/notify.c',
2184 include_directories : includes,
2185 link_with : [libshared],
2186 install_rpath : rootlibexecdir,
2187 install : true,
2188 install_dir : rootbindir)
2189public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002190
2191executable('systemd-volatile-root',
2192 'src/volatile-root/volatile-root.c',
2193 include_directories : includes,
2194 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002195 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002196 install : true,
2197 install_dir : rootlibexecdir)
2198
2199executable('systemd-cgroups-agent',
2200 'src/cgroups-agent/cgroups-agent.c',
2201 include_directories : includes,
2202 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002203 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002204 install : true,
2205 install_dir : rootlibexecdir)
2206
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002207exe = executable('systemd-path',
2208 'src/path/path.c',
2209 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002210 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002211 install_rpath : rootlibexecdir,
2212 install : true)
2213public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002214
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002215exe = executable('systemd-ask-password',
2216 'src/ask-password/ask-password.c',
2217 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002218 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002219 install_rpath : rootlibexecdir,
2220 install : true,
2221 install_dir : rootbindir)
2222public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002223
2224executable('systemd-reply-password',
2225 'src/reply-password/reply-password.c',
2226 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002227 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002228 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002229 install : true,
2230 install_dir : rootlibexecdir)
2231
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002232exe = executable('systemd-tty-ask-password-agent',
2233 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2234 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002235 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002236 install_rpath : rootlibexecdir,
2237 install : true,
2238 install_dir : rootbindir)
2239public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002240
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002241exe = executable('systemd-cgls',
2242 'src/cgls/cgls.c',
2243 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002244 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002245 install_rpath : rootlibexecdir,
2246 install : true)
2247public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002248
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002249exe = executable('systemd-cgtop',
2250 'src/cgtop/cgtop.c',
2251 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002252 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002253 install_rpath : rootlibexecdir,
2254 install : true)
2255public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002256
2257executable('systemd-initctl',
2258 'src/initctl/initctl.c',
2259 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002260 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002261 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002262 install : true,
2263 install_dir : rootlibexecdir)
2264
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002265exe = executable('systemd-mount',
2266 'src/mount/mount-tool.c',
2267 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002268 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002269 install_rpath : rootlibexecdir,
2270 install : true)
2271public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002272
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002273meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002274 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002275
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002276exe = executable('systemd-run',
2277 'src/run/run.c',
2278 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002279 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002280 install_rpath : rootlibexecdir,
2281 install : true)
2282public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002283
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002284exe = executable('systemd-stdio-bridge',
2285 'src/stdio-bridge/stdio-bridge.c',
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-Szmek005a29f2017-04-13 11:52:05 -04002292exe = executable('busctl',
2293 'src/busctl/busctl.c',
2294 'src/busctl/busctl-introspect.c',
2295 'src/busctl/busctl-introspect.h',
2296 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002297 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002298 install_rpath : rootlibexecdir,
2299 install : true)
2300public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002301
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002302if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002303 exe = executable('systemd-sysusers',
2304 'src/sysusers/sysusers.c',
2305 include_directories : includes,
2306 link_with : [libshared],
2307 install_rpath : rootlibexecdir,
2308 install : true,
2309 install_dir : rootbindir)
2310 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002311endif
2312
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002313if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002314 exe = executable('systemd-tmpfiles',
2315 'src/tmpfiles/tmpfiles.c',
2316 include_directories : includes,
2317 link_with : [libshared],
2318 dependencies : [libacl],
2319 install_rpath : rootlibexecdir,
2320 install : true,
2321 install_dir : rootbindir)
2322 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002323
2324 test('test-systemd-tmpfiles',
2325 test_systemd_tmpfiles_py,
2326 args : exe.full_path())
2327 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002328endif
2329
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002330if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002331 exe = executable('systemd-hwdb',
2332 'src/hwdb/hwdb.c',
2333 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2334 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002335 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002336 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002337 install : true,
2338 install_dir : rootbindir)
2339 public_programs += [exe]
2340endif
2341
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002342if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002343 executable('systemd-quotacheck',
2344 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002345 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002346 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002347 install_rpath : rootlibexecdir,
2348 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002349 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002350endif
2351
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002352exe = executable('systemd-socket-proxyd',
2353 'src/socket-proxy/socket-proxyd.c',
2354 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002355 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002356 dependencies : [threads],
2357 install_rpath : rootlibexecdir,
2358 install : true,
2359 install_dir : rootlibexecdir)
2360public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002361
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002362exe = executable('systemd-udevd',
2363 systemd_udevd_sources,
2364 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002365 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002366 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002367 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002368 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002369 dependencies : [threads,
2370 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002371 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002372 libacl,
2373 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002374 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002375 install : true,
2376 install_dir : rootlibexecdir)
2377public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002378
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002379exe = executable('udevadm',
2380 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002381 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002382 include_directories : includes,
2383 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002384 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002385 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002386 dependencies : [threads,
2387 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002388 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002389 libacl,
2390 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002391 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002392 install : true,
2393 install_dir : rootbindir)
2394public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002395
2396executable('systemd-shutdown',
2397 systemd_shutdown_sources,
2398 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002399 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002400 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002401 install : true,
2402 install_dir : rootlibexecdir)
2403
2404executable('systemd-update-done',
2405 'src/update-done/update-done.c',
2406 include_directories : includes,
2407 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002408 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002409 install : true,
2410 install_dir : rootlibexecdir)
2411
2412executable('systemd-update-utmp',
2413 'src/update-utmp/update-utmp.c',
2414 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002415 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002416 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002417 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002418 install : true,
2419 install_dir : rootlibexecdir)
2420
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002421if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002422 executable('systemd-modules-load',
2423 'src/modules-load/modules-load.c',
2424 include_directories : includes,
2425 link_with : [libshared],
2426 dependencies : [libkmod],
2427 install_rpath : rootlibexecdir,
2428 install : true,
2429 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002430
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002431 meson.add_install_script('sh', '-c',
2432 mkdir_p.format(modulesloaddir))
2433 meson.add_install_script('sh', '-c',
2434 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002435endif
2436
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002437exe = executable('systemd-nspawn',
2438 systemd_nspawn_sources,
2439 'src/core/mount-setup.c', # FIXME: use a variable?
2440 'src/core/mount-setup.h',
2441 'src/core/loopback-setup.c',
2442 'src/core/loopback-setup.h',
2443 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002444 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002445 dependencies : [libacl,
2446 libblkid,
2447 libseccomp,
2448 libselinux],
2449 install_rpath : rootlibexecdir,
2450 install : true)
2451public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002452
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002453if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002454 executable('systemd-networkd',
2455 systemd_networkd_sources,
2456 include_directories : includes,
2457 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002458 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002459 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002460 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002461 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002462 install_rpath : rootlibexecdir,
2463 install : true,
2464 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002465
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002466 executable('systemd-networkd-wait-online',
2467 systemd_networkd_wait_online_sources,
2468 include_directories : includes,
2469 link_with : [libnetworkd_core,
2470 libshared],
2471 install_rpath : rootlibexecdir,
2472 install : true,
2473 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002474
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002475 exe = executable('networkctl',
2476 networkctl_sources,
2477 include_directories : includes,
2478 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002479 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002480 install_rpath : rootlibexecdir,
2481 install : true,
2482 install_dir : rootbindir)
2483 public_programs += [exe]
2484endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002485
2486executable('systemd-sulogin-shell',
2487 ['src/sulogin-shell/sulogin-shell.c'],
2488 include_directories : includes,
2489 link_with : [libshared],
2490 install_rpath : rootlibexecdir,
2491 install : true,
2492 install_dir : rootlibexecdir)
2493
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002494############################################################
2495
2496foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002497 sources = tuple[0]
2498 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2499 dependencies = tuple[2]
2500 condition = tuple.length() >= 4 ? tuple[3] : ''
2501 type = tuple.length() >= 5 ? tuple[4] : ''
2502 defs = tuple.length() >= 6 ? tuple[5] : []
2503 incs = tuple.length() >= 7 ? tuple[6] : includes
2504 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002505
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002506 name = sources[0].split('/')[-1].split('.')[0]
2507 if type.startswith('timeout=')
2508 timeout = type.split('=')[1].to_int()
2509 type = ''
2510 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002511 if want_tests == 'false'
2512 message('Not compiling @0@ because tests is set to false'.format(name))
2513 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002514 exe = executable(
2515 name,
2516 sources,
2517 include_directories : incs,
2518 link_with : link_with,
2519 dependencies : dependencies,
2520 c_args : defs,
2521 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002522 install : install_tests,
2523 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002524
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002525 if type == 'manual'
2526 message('@0@ is a manual test'.format(name))
2527 elif type == 'unsafe' and want_tests != 'unsafe'
2528 message('@0@ is an unsafe test'.format(name))
2529 else
2530 test(name, exe,
2531 env : test_env,
2532 timeout : timeout)
2533 endif
2534 else
2535 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2536 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002537endforeach
2538
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002539test_libsystemd_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002540 'test-libsystemd-sym',
2541 test_libsystemd_sym_c,
2542 include_directories : includes,
2543 link_with : [libsystemd],
2544 install : install_tests,
2545 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002546test('test-libsystemd-sym',
2547 test_libsystemd_sym)
2548
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002549test_libudev_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002550 'test-libudev-sym',
2551 test_libudev_sym_c,
2552 include_directories : includes,
2553 c_args : ['-Wno-deprecated-declarations'],
2554 link_with : [libudev],
2555 install : install_tests,
2556 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002557test('test-libudev-sym',
2558 test_libudev_sym)
2559
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002560############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002561
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002562fuzzer_exes = []
2563
2564foreach tuple : fuzzers
2565 sources = tuple[0]
2566 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2567 dependencies = tuple[2]
2568 defs = tuple.length() >= 4 ? tuple[3] : []
2569 incs = tuple.length() >= 5 ? tuple[4] : includes
2570
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002571 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002572 dependencies += fuzzing_engine
2573 else
2574 sources += 'src/fuzz/fuzz-main.c'
2575 endif
2576
2577 name = sources[0].split('/')[-1].split('.')[0]
2578
2579 fuzzer_exes += executable(
2580 name,
2581 sources,
2582 include_directories : [incs, include_directories('src/fuzz')],
2583 link_with : link_with,
2584 dependencies : dependencies,
2585 c_args : defs,
2586 install : false)
2587endforeach
2588
2589run_target('fuzzers',
2590 depends : fuzzer_exes,
2591 command : ['true'])
2592
2593############################################################
2594
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002595make_directive_index_py = find_program('tools/make-directive-index.py')
2596make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002597xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002598hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002599
2600subdir('units')
2601subdir('sysctl.d')
2602subdir('sysusers.d')
2603subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002604subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002605subdir('hwdb')
2606subdir('network')
2607subdir('man')
2608subdir('shell-completion/bash')
2609subdir('shell-completion/zsh')
2610subdir('docs/sysvinit')
2611subdir('docs/var-log')
2612
2613# FIXME: figure out if the warning is true:
2614# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2615install_subdir('factory/etc',
2616 install_dir : factorydir)
2617
2618
2619install_data('xorg/50-systemd-user.sh',
2620 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002621install_data('modprobe.d/systemd.conf',
2622 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002623install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002624 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002625 'NEWS',
2626 'README',
2627 'doc/CODING_STYLE',
2628 'doc/DISTRO_PORTING',
2629 'doc/ENVIRONMENT.md',
2630 'doc/HACKING',
2631 'doc/TRANSIENT-SETTINGS.md',
2632 'doc/TRANSLATORS',
2633 'doc/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002634 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2635 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002636
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002637meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2638meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2639
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002640############################################################
2641
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002642meson_check_help = find_program('tools/meson-check-help.sh')
2643
2644foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002645 name = exec.full_path().split('/')[-1]
2646 test('check-help-' + name,
2647 meson_check_help,
2648 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002649endforeach
2650
2651############################################################
2652
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002653prev = ''
2654foreach p : fuzz_regression_tests
2655 a = p.split('/')[-3]
2656 b = p.split('/')[-2]
2657 c = p.split('/')[-1]
2658
2659 if a == 'address'
2660 build = sanitize_address
2661 else
2662 error('unknown sanitizer @0@'.format(a))
2663 endif
2664
2665 name = '@1@:@0@'.format(a, b)
2666
2667 if name != prev
2668 if want_tests == 'false'
2669 message('Not compiling @0@ because tests is set to false'.format(name))
2670 elif not sanitizers.contains(a)
2671 message('Not compiling @0@ because @1@ sanitizer is not available'.format(name, a))
2672 elif slow_tests
2673 exe = custom_target(
2674 name,
2675 output : name,
2676 depends : build,
2677 command : [env, 'ln', '-fs',
2678 join_paths(build.full_path(), b),
2679 '@OUTPUT@'],
2680 build_by_default : true)
2681 else
2682 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2683 endif
2684 endif
2685 prev = name
2686
2687 if want_tests != 'false' and slow_tests
2688 test(c, env, args : [exe.full_path(),
2689 join_paths(meson.source_root(),
2690 'test/fuzz-regressions',
2691 p)])
2692 endif
2693endforeach
2694
2695############################################################
2696
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002697if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002698 all_files = run_command(
2699 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002700 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002701 'ls-files',
2702 ':/*.[ch]'])
2703 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002704
userwithuide85a6902017-08-09 13:41:44 +00002705 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002706 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002707 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002708 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002709 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002710 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002711 output : 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002712 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002713endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002714
2715if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002716 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002717 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002718 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002719 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002720endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002721
2722if git.found()
2723 git_head = run_command(
2724 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002725 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002726 'rev-parse', 'HEAD']).stdout().strip()
2727 git_head_short = run_command(
2728 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002729 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002730 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2731
2732 run_target(
2733 'git-snapshot',
2734 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002735 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002736 git_head_short),
2737 '--prefix', 'systemd-@0@/'.format(git_head),
2738 'HEAD'])
2739endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002740
2741############################################################
2742
Lennart Poettering51b13862017-12-20 12:51:14 +01002743meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2744run_target(
2745 'check-api-docs',
2746 depends : [man, libsystemd, libudev],
2747 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2748
2749############################################################
2750
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002751status = [
2752 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2753
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002754 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002755 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002756 'prefix directory: @0@'.format(prefixdir),
2757 'rootprefix directory: @0@'.format(rootprefixdir),
2758 'sysconf directory: @0@'.format(sysconfdir),
2759 'include directory: @0@'.format(includedir),
2760 'lib directory: @0@'.format(libdir),
2761 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002762 'SysV init scripts: @0@'.format(sysvinit_path),
2763 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002764 'PAM modules directory: @0@'.format(pamlibdir),
2765 'PAM configuration directory: @0@'.format(pamconfdir),
2766 'RPM macros directory: @0@'.format(rpmmacrosdir),
2767 'modprobe.d directory: @0@'.format(modprobedir),
2768 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2769 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2770 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2771 'bash completions directory: @0@'.format(bashcompletiondir),
2772 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002773 'extra start script: @0@'.format(get_option('rc-local')),
2774 'extra stop script: @0@'.format(get_option('halt-local')),
2775 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2776 get_option('debug-tty')),
2777 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002778 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002779 'maximum system UID: @0@'.format(system_uid_max),
2780 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002781 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2782 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2783 'minimum container UID base: @0@'.format(container_uid_base_min),
2784 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002785 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002786 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002787 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002788 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002789 'nobody user name: @0@'.format(nobody_user),
2790 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002791 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002792 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002793
2794 'default DNSSEC mode: @0@'.format(default_dnssec),
2795 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2796 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2797
2798alt_dns_servers = '\n '.join(dns_servers.split(' '))
2799alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2800status += [
2801 'default DNS servers: @0@'.format(alt_dns_servers),
2802 'default NTP servers: @0@'.format(alt_ntp_servers)]
2803
2804alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2805 '@@0@'.format(time_epoch)).stdout().strip()
2806status += [
2807 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2808
2809# TODO:
2810# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2811# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2812# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2813
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002814if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002815 status += [
2816 'efi arch: @0@'.format(efi_arch)]
2817
2818 if have_gnu_efi
2819 status += [
2820 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2821 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002822 'EFI lib directory: @0@'.format(efi_libdir),
2823 'EFI lds directory: @0@'.format(efi_ldsdir),
2824 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002825 endif
2826endif
2827
2828found = []
2829missing = []
2830
2831foreach tuple : [
2832 ['libcryptsetup'],
2833 ['PAM'],
2834 ['AUDIT'],
2835 ['IMA'],
2836 ['AppArmor'],
2837 ['SELinux'],
2838 ['SECCOMP'],
2839 ['SMACK'],
2840 ['zlib'],
2841 ['xz'],
2842 ['lz4'],
2843 ['bzip2'],
2844 ['ACL'],
2845 ['gcrypt'],
2846 ['qrencode'],
2847 ['microhttpd'],
2848 ['gnutls'],
2849 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002850 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002851 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002852 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002853 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002854 ['libiptc'],
2855 ['elfutils'],
2856 ['binfmt'],
2857 ['vconsole'],
2858 ['quotacheck'],
2859 ['tmpfiles'],
2860 ['environment.d'],
2861 ['sysusers'],
2862 ['firstboot'],
2863 ['randomseed'],
2864 ['backlight'],
2865 ['rfkill'],
2866 ['logind'],
2867 ['machined'],
2868 ['importd'],
2869 ['hostnamed'],
2870 ['timedated'],
2871 ['timesyncd'],
2872 ['localed'],
2873 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002874 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002875 ['coredump'],
2876 ['polkit'],
2877 ['legacy pkla', install_polkit_pkla],
2878 ['efi'],
2879 ['gnu-efi', have_gnu_efi],
2880 ['kmod'],
2881 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01002882 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002883 ['blkid'],
2884 ['dbus'],
2885 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002886 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002887 ['hwdb'],
2888 ['tpm'],
2889 ['man pages', want_man],
2890 ['html pages', want_html],
2891 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002892 ['SysV compat'],
2893 ['utmp'],
2894 ['ldconfig'],
2895 ['hibernate'],
2896 ['adm group', get_option('adm-group')],
2897 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002898 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002899 ['debug hashmap'],
2900 ['debug mmap cache'],
2901]
2902
2903 cond = tuple.get(1, '')
2904 if cond == ''
2905 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2906 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002907 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002908 endif
2909 if cond
2910 found += [tuple[0]]
2911 else
2912 missing += [tuple[0]]
2913 endif
2914endforeach
2915
2916status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002917 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002918 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002919 '',
2920 'disabled features: @0@'.format(', '.join(missing)),
2921 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002922message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002923
2924if rootprefixdir != rootprefix_default
2925 message('WARNING:\n' +
2926 ' Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2927 ' systemd used fixed names for unit file directories and other paths, so anything\n' +
2928 ' except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
2929endif