blob: b096d981ecfbd51b1d82c3e4c4710af3e2cf98e7 [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'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100198
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100199conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100200
Michael Bieble17e5ba2017-04-13 10:30:56 -0400201conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400202conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
203conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400204conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
205conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
206conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
207conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100208conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100209conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400210conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
211conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
212conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
213conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
214conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100215conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400216conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400217conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
218conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400219conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
220conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
221conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
222conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
223conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
224conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400225conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
226conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400227conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400228conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400229conf.set_quoted('LIBDIR', libdir)
230conf.set_quoted('ROOTLIBDIR', rootlibdir)
231conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
232conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400233conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
234conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
235conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
236conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
237conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
238conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100239conf.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'true' : 'false')
240conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_ON_OFF', memory_accounting_default ? 'on' : 'off')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400241
242conf.set_quoted('ABS_BUILD_DIR', meson.build_root())
243conf.set_quoted('ABS_SRC_DIR', meson.source_root())
244
245substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400246substs.set('exec_prefix', prefixdir)
247substs.set('libdir', libdir)
248substs.set('rootlibdir', rootlibdir)
249substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400250substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400251substs.set('bindir', bindir)
252substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400253substs.set('rootlibexecdir', rootlibexecdir)
254substs.set('systemunitdir', systemunitdir)
255substs.set('userunitdir', userunitdir)
256substs.set('systempresetdir', systempresetdir)
257substs.set('userpresetdir', userpresetdir)
258substs.set('udevhwdbdir', udevhwdbdir)
259substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400260substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400261substs.set('catalogdir', catalogdir)
262substs.set('tmpfilesdir', tmpfilesdir)
263substs.set('sysusersdir', sysusersdir)
264substs.set('sysctldir', sysctldir)
265substs.set('binfmtdir', binfmtdir)
266substs.set('modulesloaddir', modulesloaddir)
267substs.set('systemgeneratordir', systemgeneratordir)
268substs.set('usergeneratordir', usergeneratordir)
269substs.set('systemenvgeneratordir', systemenvgeneratordir)
270substs.set('userenvgeneratordir', userenvgeneratordir)
271substs.set('systemshutdowndir', systemshutdowndir)
272substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400273substs.set('VARLOGDIR', varlogdir)
274substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400275substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
276substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400277substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
278substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
279substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
280substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100281substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400282
283#####################################################################
284
285cc = meson.get_compiler('c')
286pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400287check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100288meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400289
Adam Duskett08318a22018-01-15 06:25:46 -0500290if get_option('tests') != 'false'
291 cxx = find_program('c++', required : false)
292 if cxx.found()
293 # Used only for tests
294 add_languages('cpp')
295 endif
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400296endif
297
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500298want_ossfuzz = get_option('oss-fuzz')
299want_libfuzzer = get_option('llvm-fuzz')
300fuzzer_build = want_ossfuzz or want_libfuzzer
301if want_ossfuzz and want_libfuzzer
302 error('only one of oss-fuzz and llvm-fuzz can be specified')
303endif
304if want_libfuzzer
305 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
306endif
307if want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500308 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
309endif
310
Zbigniew Jędrzejewski-Szmek75cf1d62017-07-04 17:59:15 -0400311foreach arg : ['-Wextra',
Zbigniew Jędrzejewski-Szmek70160ce2017-10-03 12:11:49 +0200312 '-Werror=undef',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400313 '-Wlogical-op',
314 '-Wmissing-include-dirs',
315 '-Wold-style-definition',
316 '-Wpointer-arith',
317 '-Winit-self',
318 '-Wdeclaration-after-statement',
319 '-Wfloat-equal',
320 '-Wsuggest-attribute=noreturn',
321 '-Werror=missing-prototypes',
322 '-Werror=implicit-function-declaration',
323 '-Werror=missing-declarations',
324 '-Werror=return-type',
325 '-Werror=incompatible-pointer-types',
326 '-Werror=format=2',
327 '-Wstrict-prototypes',
328 '-Wredundant-decls',
329 '-Wmissing-noreturn',
Zbigniew Jędrzejewski-Szmek97279d82017-11-20 14:23:40 +0100330 '-Wimplicit-fallthrough=5',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400331 '-Wshadow',
332 '-Wendif-labels',
333 '-Wstrict-aliasing=2',
334 '-Wwrite-strings',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400335 '-Werror=overflow',
336 '-Wdate-time',
337 '-Wnested-externs',
338 '-ffast-math',
339 '-fno-common',
340 '-fdiagnostics-show-option',
341 '-fno-strict-aliasing',
342 '-fvisibility=hidden',
343 '-fstack-protector',
344 '-fstack-protector-strong',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400345 '--param=ssp-buffer-size=4',
346 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400347 if cc.has_argument(arg)
348 add_project_arguments(arg, language : 'c')
349 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400350endforeach
351
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500352# the oss-fuzz fuzzers are not built with -fPIE, so don't
353# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500354if not fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500355 if cc.has_argument('-fPIE')
356 add_project_arguments('-fPIE', language : 'c')
357 endif
358endif
359
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400360# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
361# arguments, just emits a warnings. So test for the "positive" version instead.
362foreach arg : ['unused-parameter',
363 'missing-field-initializers',
364 'unused-result',
Zbigniew Jędrzejewski-Szmekfb1b5882017-09-04 19:49:12 +0300365 'format-signedness',
366 'error=nonnull', # work-around for gcc 7.1 turning this on on its own
367 ]
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400368 if cc.has_argument('-W' + arg)
369 add_project_arguments('-Wno-' + arg, language : 'c')
370 endif
371endforeach
372
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800373if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400374 #include <time.h>
375 #include <inttypes.h>
376 typedef uint64_t usec_t;
377 usec_t now(clockid_t clock);
378 int main(void) {
379 struct timespec now;
380 return 0;
381 }
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800382''', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400383 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400384endif
385
386if cc.get_id() == 'clang'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400387 foreach arg : ['-Wno-typedef-redefinition',
388 '-Wno-gnu-variable-sized-type-not-at-end',
389 ]
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400390 if cc.has_argument(arg,
391 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400392 add_project_arguments(arg, language : 'c')
393 endif
394 endforeach
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400395endif
396
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400397link_test_c = files('tools/meson-link-test.c')
398
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400399# --as-needed and --no-undefined are provided by meson by default,
400# run mesonconf to see what is enabled
401foreach arg : ['-Wl,-z,relro',
402 '-Wl,-z,now',
403 '-pie',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400404 ]
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400405
406 have = run_command(check_compilation_sh,
407 cc.cmd_array(), '-x', 'c', arg,
408 '-include', link_test_c).returncode() == 0
409 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500410 if have and (arg != '-pie' or not fuzzer_build)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400411 add_project_link_arguments(arg, language : 'c')
412 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400413endforeach
414
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100415# Check if various sanitizers are supported
416sanitizers = []
417foreach arg : ['address']
418
419 have = run_command(check_compilation_sh,
420 cc.cmd_array(), '-x', 'c',
421 '-fsanitize=@0@'.format(arg),
422 '-include', link_test_c).returncode() == 0
423 message('@0@ sanitizer supported: @1@'.format(arg, have ? 'yes' : 'no'))
424 if have
425 sanitizers += arg
426 endif
427endforeach
428
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400429if get_option('buildtype') != 'debug'
430 foreach arg : ['-ffunction-sections',
431 '-fdata-sections']
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400432 if cc.has_argument(arg,
433 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400434 add_project_arguments(arg, language : 'c')
435 endif
436 endforeach
437
438 foreach arg : ['-Wl,--gc-sections']
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400439 have = run_command(check_compilation_sh,
440 cc.cmd_array(), '-x', 'c', arg,
441 '-include', link_test_c).returncode() == 0
442 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
443 if have
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400444 add_project_link_arguments(arg, language : 'c')
445 endif
446 endforeach
447endif
448
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400449cpp = ' '.join(cc.cmd_array()) + ' -E'
450
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400451#####################################################################
452# compilation result tests
453
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400454conf.set('_GNU_SOURCE', true)
455conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400456
457conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
458conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
459conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
460conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
461conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
462conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
463conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
464
465decl_headers = '''
466#include <uchar.h>
467#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000468#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100469#include <linux/stat.h>
470#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400471'''
472# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
473
474foreach decl : ['char16_t',
475 'char32_t',
476 'key_serial_t',
477 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000478 'struct fib_rule_uid_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100479 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400480 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400481
482 # We get -1 if the size cannot be determined
483 have = cc.sizeof(decl, prefix : decl_headers) > 0
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200484 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400485endforeach
486
487foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
488 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
489 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
490 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530491 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400492 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
493 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
494 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
495 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
496 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530497 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400498 # if_tunnel.h is buggy and cannot be included on its own
499 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
500 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
501 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
502 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
503 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
504 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
505 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530506 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400507 ['NDA_IFINDEX', 'linux/neighbour.h'],
508 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000509 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400510 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530511 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400512 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400513 prefix = decl.length() > 2 ? decl[2] : ''
514 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200515 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400516endforeach
517
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400518foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200519 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400520endforeach
521
522foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100523 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100524 ['gettid', '''#include <sys/types.h>
525 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100526 ['pivot_root', '''#include <stdlib.h>
527 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100528 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400529 #include <sys/stat.h>
530 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100531 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100532 ['renameat2', '''#include <stdio.h>
533 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400534 ['kcmp', '''#include <linux/kcmp.h>'''],
535 ['keyctl', '''#include <sys/types.h>
536 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100537 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400538 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200539 ['bpf', '''#include <sys/syscall.h>
540 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100541 ['statx', '''#include <sys/types.h>
542 #include <sys/stat.h>
543 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100544 ['explicit_bzero' , '''#include <string.h>'''],
545 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400546]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400547
Lennart Poettering85db59b2017-12-25 12:01:14 +0100548 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200549 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400550endforeach
551
Lennart Poettering85db59b2017-12-25 12:01:14 +0100552if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200553 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200554 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400555else
556 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200557 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200558 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400559endif
560
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400561#####################################################################
562
563sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400564awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400565m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400566stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400567git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100568env = find_program('env')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400569
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400570meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400571mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400572test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
573splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400574
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400575# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
576# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500577progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400578 ['quotacheck', '/usr/sbin/quotacheck' ],
579 ['kill', '/usr/bin/kill' ],
580 ['kmod', '/usr/bin/kmod' ],
581 ['kexec', '/usr/sbin/kexec' ],
582 ['sulogin', '/usr/sbin/sulogin' ],
583 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
584 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
585 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
586 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
587 ]
588foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400589 path = get_option(prog[0] + '-path')
590 if path != ''
591 message('Using @1@ for @0@'.format(prog[0], path))
592 else
593 exe = find_program(prog[0],
594 '/usr/sbin/' + prog[0],
595 '/sbin/' + prog[0],
596 required: false)
597 path = exe.found() ? exe.path() : prog[1]
598 endif
599 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
600 conf.set_quoted(name, path)
601 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400602endforeach
603
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500604conf.set_quoted('TELINIT', get_option('telinit-path'))
605
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400606if run_command('ln', '--relative', '--help').returncode() != 0
607 error('ln does not support --relative')
608endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400609
610############################################################
611
612gperf = find_program('gperf')
613
614gperf_test_format = '''
615#include <string.h>
616const char * in_word_set(const char *, @0@);
617@1@
618'''
619gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
620gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
621gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
622if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400623 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400624else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400625 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
626 if cc.compiles(gperf_test)
627 gperf_len_type = 'unsigned'
628 else
629 error('unable to determine gperf len type')
630 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400631endif
632message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400633conf.set('GPERF_LEN_TYPE', gperf_len_type,
634 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400635
636############################################################
637
638if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400639 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400640endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100641foreach header : ['crypt.h',
642 'linux/btrfs.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400643 'linux/memfd.h',
644 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200645 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400646 'valgrind/memcheck.h',
647 'valgrind/valgrind.h',
648 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400649
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200650 conf.set10('HAVE_' + header.underscorify().to_upper(),
651 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400652endforeach
653
654############################################################
655
656conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400657conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
658gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400659
660default_hierarchy = get_option('default-hierarchy')
661conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
662 description : 'default cgroup hierarchy as string')
663if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400664 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400665elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400666 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400667else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400668 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400669endif
670
671time_epoch = get_option('time-epoch')
672if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400673 NEWS = files('NEWS')
674 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400675endif
676time_epoch = time_epoch.to_int()
677conf.set('TIME_EPOCH', time_epoch)
678
679system_uid_max = get_option('system-uid-max')
680if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400681 system_uid_max = run_command(
682 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800683 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
684 '/etc/login.defs').stdout().strip()
685 if system_uid_max == ''
686 system_uid_max = '999'
687 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400688endif
689system_uid_max = system_uid_max.to_int()
690conf.set('SYSTEM_UID_MAX', system_uid_max)
691substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400692message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400693
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400694system_gid_max = get_option('system-gid-max')
695if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400696 system_gid_max = run_command(
697 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800698 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
699 '/etc/login.defs').stdout().strip()
700 if system_gid_max == ''
701 system_gid_max = '999'
702 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400703endif
704system_gid_max = system_gid_max.to_int()
705conf.set('SYSTEM_GID_MAX', system_gid_max)
706substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400707message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400708
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100709dynamic_uid_min = get_option('dynamic-uid-min').to_int()
710dynamic_uid_max = get_option('dynamic-uid-max').to_int()
711conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
712conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
713substs.set('dynamicuidmin', dynamic_uid_min)
714substs.set('dynamicuidmax', dynamic_uid_max)
715
716container_uid_base_min = get_option('container-uid-base-min').to_int()
717container_uid_base_max = get_option('container-uid-base-max').to_int()
718conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
719conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
720substs.set('containeruidbasemin', container_uid_base_min)
721substs.set('containeruidbasemax', container_uid_base_max)
722
Lennart Poetteringafde4572017-12-05 11:00:24 +0100723nobody_user = get_option('nobody-user')
724nobody_group = get_option('nobody-group')
725
726getent_result = run_command('getent', 'passwd', '65534')
727if getent_result.returncode() == 0
728 name = getent_result.stdout().split(':')[0]
729 if name != nobody_user
730 message('WARNING:\n' +
731 ' 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) +
732 ' Your build will result in an user table setup that is incompatible with the local system.')
733 endif
734endif
735id_result = run_command('id', '-u', nobody_user)
736if id_result.returncode() == 0
737 id = id_result.stdout().to_int()
738 if id != 65534
739 message('WARNING:\n' +
740 ' 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) +
741 ' Your build will result in an user table setup that is incompatible with the local system.')
742 endif
743endif
744
745getent_result = run_command('getent', 'group', '65534')
746if getent_result.returncode() == 0
747 name = getent_result.stdout().split(':')[0]
748 if name != nobody_group
749 message('WARNING:\n' +
750 ' 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) +
751 ' Your build will result in an group table setup that is incompatible with the local system.')
752 endif
753endif
754id_result = run_command('id', '-g', nobody_group)
755if id_result.returncode() == 0
756 id = id_result.stdout().to_int()
757 if id != 65534
758 message('WARNING:\n' +
759 ' 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) +
760 ' Your build will result in an group table setup that is incompatible with the local system.')
761 endif
762endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900763if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
764 message('WARNING:\n' +
765 ' The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
766 ' Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
767endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100768
769conf.set_quoted('NOBODY_USER_NAME', nobody_user)
770conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900771substs.set('NOBODY_USER_NAME', nobody_user)
772substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100773
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400774tty_gid = get_option('tty-gid')
775conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400776substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400777
Ikey Doherty84786b82017-12-03 12:28:23 +0000778# Ensure provided GID argument is numeric, otherwise fallback to default assignment
779if get_option('users-gid') != ''
Yu Watanabed6806872017-12-05 14:01:39 +0900780 users_gid = get_option('users-gid').to_int()
Ikey Doherty84786b82017-12-03 12:28:23 +0000781else
Yu Watanabed6806872017-12-05 14:01:39 +0900782 users_gid = '-'
Ikey Doherty84786b82017-12-03 12:28:23 +0000783endif
784substs.set('USERS_GID', users_gid)
785
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400786if get_option('adm-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400787 m4_defines += ['-DENABLE_ADM_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400788endif
789
790if get_option('wheel-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400791 m4_defines += ['-DENABLE_WHEEL_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400792endif
793
794substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700795substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400796
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400797kill_user_processes = get_option('default-kill-user-processes')
798conf.set10('KILL_USER_PROCESSES', kill_user_processes)
799substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400800
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400801dns_servers = get_option('dns-servers')
802conf.set_quoted('DNS_SERVERS', dns_servers)
803substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400804
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400805ntp_servers = get_option('ntp-servers')
806conf.set_quoted('NTP_SERVERS', ntp_servers)
807substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400808
809conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
810
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400811substs.set('SUSHELL', get_option('debug-shell'))
812substs.set('DEBUGTTY', get_option('debug-tty'))
813
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400814debug = get_option('debug')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200815enable_debug_hashmap = false
816enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400817if debug != ''
818 foreach name : debug.split(',')
819 if name == 'hashmap'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200820 enable_debug_hashmap = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400821 elif name == 'mmap-cache'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200822 enable_debug_mmap_cache = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400823 else
824 message('unknown debug option "@0@", ignoring'.format(name))
825 endif
826 endforeach
827endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200828conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
829conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400830
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400831#####################################################################
832
833threads = dependency('threads')
834librt = cc.find_library('rt')
835libm = cc.find_library('m')
836libdl = cc.find_library('dl')
837libcrypt = cc.find_library('crypt')
838
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400839libcap = dependency('libcap', required : false)
840if not libcap.found()
841 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
842 libcap = cc.find_library('cap')
843endif
844
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400845libmount = dependency('mount',
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -0500846 version : '>= 2.30',
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500847 required : not fuzzer_build)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400848
849want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500850if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400851 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400852 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400853 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200854 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400855else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200856 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400857 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400858endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200859conf.set10('HAVE_SECCOMP', have)
860m4_defines += have ? ['-DHAVE_SECCOMP'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400861
862want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500863if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400864 libselinux = dependency('libselinux',
865 version : '>= 2.1.9',
866 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200867 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400868else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200869 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400870 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400871endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200872conf.set10('HAVE_SELINUX', have)
873m4_defines += have ? ['-DHAVE_SELINUX'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400874
875want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500876if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400877 libapparmor = dependency('libapparmor',
878 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200879 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400880else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200881 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400882 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400883endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200884conf.set10('HAVE_APPARMOR', have)
885m4_defines += have ? ['-DHAVE_APPARMOR'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400886
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400887smack_run_label = get_option('smack-run-label')
888if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400889 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
890 m4_defines += ['-DHAVE_SMACK_RUN_LABEL']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400891endif
892
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400893want_polkit = get_option('polkit')
894install_polkit = false
895install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500896if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400897 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400898
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400899 libpolkit = dependency('polkit-gobject-1',
900 required : false)
901 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
902 message('Old polkit detected, will install pkla files')
903 install_polkit_pkla = true
904 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400905endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200906conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400907
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400908want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500909if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400910 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200911 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400912else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200913 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400914 libacl = []
915endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200916conf.set10('HAVE_ACL', have)
917m4_defines += have ? ['-DHAVE_ACL'] : []
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400918
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400919want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500920if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400921 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200922 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400923else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200924 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400925 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400926endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200927conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400928
929want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500930if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400931 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200932 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400933else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200934 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400935 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400936endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200937conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400938
939want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500940if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400941 libkmod = dependency('libkmod',
942 version : '>= 15',
943 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200944 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400945else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200946 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400947 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400948endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200949conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400950
951want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500952if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400953 libpam = cc.find_library('pam', required : want_pam == 'true')
954 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200955 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400956else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200957 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400958 libpam = []
959 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400960endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200961conf.set10('HAVE_PAM', have)
962m4_defines += have ? ['-DHAVE_PAM'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400963
964want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500965if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400966 libmicrohttpd = dependency('libmicrohttpd',
967 version : '>= 0.9.33',
968 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200969 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400970else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200971 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400972 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400973endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200974conf.set10('HAVE_MICROHTTPD', have)
975m4_defines += have ? ['-DHAVE_MICROHTTPD'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400976
977want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500978if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400979 libcryptsetup = dependency('libcryptsetup',
980 version : '>= 1.6.0',
981 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200982 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400983else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200984 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400985 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400986endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200987conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400988
989want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500990if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400991 libcurl = dependency('libcurl',
992 version : '>= 7.32.0',
993 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200994 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400995else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200996 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400997 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400998endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200999conf.set10('HAVE_LIBCURL', have)
1000m4_defines += have ? ['-DHAVE_LIBCURL'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001001
1002want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001003want_libidn2 = get_option('libidn2')
1004if want_libidn == 'true' and want_libidn2 == 'true'
1005 error('libidn and libidn2 cannot be requested simultaneously')
1006endif
1007
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001008if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001009 libidn = dependency('libidn',
1010 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001011 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001012else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001013 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001014 libidn = []
1015endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001016conf.set10('HAVE_LIBIDN', have)
1017m4_defines += have ? ['-DHAVE_LIBIDN'] : []
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001018if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001019 # libidn is used for both libidn and libidn2 objects
1020 libidn = dependency('libidn2',
1021 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001022 have = libidn.found()
1023else
1024 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001025endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001026conf.set10('HAVE_LIBIDN2', have)
1027m4_defines += have ? ['-DHAVE_LIBIDN2'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001028
1029want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001030if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001031 libiptc = dependency('libiptc',
1032 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001033 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001034else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001035 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001036 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001037endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001038conf.set10('HAVE_LIBIPTC', have)
1039m4_defines += have ? ['-DHAVE_LIBIPTC'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001040
1041want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001042if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001043 libqrencode = dependency('libqrencode',
1044 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001045 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001046else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001047 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001048 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001049endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001050conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001051
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001052want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001053if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001054 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1055 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001056 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001057else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001058 have = false
1059endif
1060if not have
1061 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001062 libgcrypt = []
1063 libgpg_error = []
1064endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001065conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001066
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001067want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001068if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001069 libgnutls = dependency('gnutls',
1070 version : '>= 3.1.4',
1071 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001072 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001073else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001074 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001075 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001076endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001077conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001078
1079want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001080if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001081 libdw = dependency('libdw',
1082 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001083 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001084else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001085 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001086 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001087endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001088conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001089
1090want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001091if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001092 libz = dependency('zlib',
1093 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001094 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001095else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001096 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001097 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001098endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001099conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001100
1101want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001102if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001103 libbzip2 = cc.find_library('bz2',
1104 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001105 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001106else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001107 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001108 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001109endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001110conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001111
1112want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001113if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001114 libxz = dependency('liblzma',
1115 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001116 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001117else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001118 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001119 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001120endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001121conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001122
1123want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001124if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001125 liblz4 = dependency('liblz4',
1126 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001127 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001128else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001129 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001130 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001131endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001132conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001133
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001134want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001135if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001136 libxkbcommon = dependency('xkbcommon',
1137 version : '>= 0.3.0',
1138 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001139 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001140else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001141 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001142 libxkbcommon = []
1143endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001144conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001145
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001146want_pcre2 = get_option('pcre2')
1147if want_pcre2 != 'false'
1148 libpcre2 = dependency('libpcre2-8',
1149 required : want_pcre2 == 'true')
1150 have = libpcre2.found()
1151else
1152 have = false
1153 libpcre2 = []
1154endif
1155conf.set10('HAVE_PCRE2', have)
1156
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001157want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001158if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001159 libglib = dependency('glib-2.0',
1160 version : '>= 2.22.0',
1161 required : want_glib == 'true')
1162 libgobject = dependency('gobject-2.0',
1163 version : '>= 2.22.0',
1164 required : want_glib == 'true')
1165 libgio = dependency('gio-2.0',
1166 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001167 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001168else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001169 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001170 libglib = []
1171 libgobject = []
1172 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001173endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001174conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001175
1176want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001177if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001178 libdbus = dependency('dbus-1',
1179 version : '>= 1.3.2',
1180 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001181 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001182else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001183 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001184 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001185endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001186conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001187
Yu Watanabe42303dc2017-06-18 05:22:32 +09001188default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001189if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001190 default_dnssec = 'no'
1191endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001192if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001193 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1194 default_dnssec = 'no'
1195endif
1196conf.set('DEFAULT_DNSSEC_MODE',
1197 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1198substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1199
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001200want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001201if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001202 have = (conf.get('HAVE_LIBCURL') == 1 and
1203 conf.get('HAVE_ZLIB') == 1 and
1204 conf.get('HAVE_BZIP2') == 1 and
1205 conf.get('HAVE_XZ') == 1 and
1206 conf.get('HAVE_GCRYPT') == 1)
1207 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001208 error('importd support was requested, but dependencies are not available')
1209 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001210else
1211 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001212endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001213conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001214
1215want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001216if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001217 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1218 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001219 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1220 # it's possible to build one without the other. Complain only if
1221 # support was explictly requested. The auxiliary files like sysusers
1222 # config should be installed when any of the programs are built.
1223 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1224 error('remote support was requested, but dependencies are not available')
1225 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001226 have = have_deps[0] or have_deps[1]
1227else
1228 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001229endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001230conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001231
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001232foreach term : ['utmp',
1233 'hibernate',
1234 'environment-d',
1235 'binfmt',
1236 'coredump',
1237 'resolve',
1238 'logind',
1239 'hostnamed',
1240 'localed',
1241 'machined',
1242 'networkd',
1243 'timedated',
1244 'timesyncd',
1245 'myhostname',
1246 'firstboot',
1247 'randomseed',
1248 'backlight',
1249 'vconsole',
1250 'quotacheck',
1251 'sysusers',
1252 'tmpfiles',
1253 'hwdb',
1254 'rfkill',
1255 'ldconfig',
1256 'efi',
1257 'tpm',
1258 'ima',
1259 'smack',
1260 'gshadow',
1261 'idn',
1262 'nss-systemd']
1263 have = get_option(term)
1264 name = 'ENABLE_' + term.underscorify().to_upper()
1265 conf.set10(name, have)
1266 m4_defines += have ? ['-D' + name] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001267endforeach
1268
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001269want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001270install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001271slow_tests = get_option('slow-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001272tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001273fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001274
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001275conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001276
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001277#####################################################################
1278
1279if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001280 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001281
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001282 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001283 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001284 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001285 elif efi_arch == 'x86_64'
1286 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001287 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001288 elif efi_arch == 'arm'
1289 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001290 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001291 elif efi_arch == 'aarch64'
1292 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001293 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001294 else
1295 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001296 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001297 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001298
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001299 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001300 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001301
1302 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001303else
1304 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001305endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001306conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001307
1308#####################################################################
1309
1310config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001311 output : 'config.h',
1312 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001313
1314includes = include_directories('src/basic',
1315 'src/shared',
1316 'src/systemd',
1317 'src/journal',
1318 'src/resolve',
1319 'src/timesync',
1320 'src/login',
1321 'src/udev',
1322 'src/libudev',
1323 'src/core',
1324 'src/libsystemd/sd-bus',
1325 'src/libsystemd/sd-device',
1326 'src/libsystemd/sd-hwdb',
1327 'src/libsystemd/sd-id128',
1328 'src/libsystemd/sd-netlink',
1329 'src/libsystemd/sd-network',
1330 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001331 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001332
1333add_project_arguments('-include', 'config.h', language : 'c')
1334
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001335subdir('po')
1336subdir('catalog')
1337subdir('src/systemd')
1338subdir('src/basic')
1339subdir('src/libsystemd')
1340subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001341subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001342subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001343
1344libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001345 'journal-core',
1346 libjournal_core_sources,
1347 journald_gperf_c,
1348 include_directories : includes,
1349 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001350
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001351libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001352libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001353 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001354 '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 +02001355 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001356 include_directories : includes,
1357 link_args : ['-shared',
1358 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001359 link_with : [libbasic,
1360 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001361 link_whole : [libsystemd_static,
1362 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001363 dependencies : [threads,
1364 librt,
1365 libxz,
1366 liblz4],
1367 link_depends : libsystemd_sym,
1368 install : true,
1369 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001370
1371############################################################
1372
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001373# binaries that have --help and are intended for use by humans,
1374# usually, but not always, installed in /bin.
1375public_programs = []
1376
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001377subdir('src/libudev')
1378subdir('src/shared')
1379subdir('src/core')
1380subdir('src/udev')
1381subdir('src/network')
1382
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001383subdir('src/analyze')
1384subdir('src/journal-remote')
1385subdir('src/coredump')
1386subdir('src/hostname')
1387subdir('src/import')
1388subdir('src/kernel-install')
1389subdir('src/locale')
1390subdir('src/machine')
1391subdir('src/nspawn')
1392subdir('src/resolve')
1393subdir('src/timedate')
1394subdir('src/timesync')
1395subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001396subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001397
1398subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001399subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001400subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001401subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001402
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001403############################################################
1404
1405# only static linking apart from libdl, to make sure that the
1406# module is linked to all libraries that it uses.
1407test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001408 'test-dlopen',
1409 test_dlopen_c,
1410 include_directories : includes,
1411 link_with : [libbasic],
1412 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001413
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001414foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001415 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001416 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001417 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001418
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001419 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001420 if condition
1421 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001422
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001423 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1424 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001425
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001426 nss = shared_library(
1427 'nss_' + module,
1428 'src/nss-@0@/nss-@0@.c'.format(module),
1429 version : '2',
1430 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001431 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1432 link_args : ['-Wl,-z,nodelete',
1433 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001434 '-Wl,--version-script=' + version_script_arg,
1435 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001436 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001437 libbasic],
1438 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001439 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001440 link_depends : sym,
1441 install : true,
1442 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001443
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001444 # We cannot use shared_module because it does not support version suffix.
1445 # Unfortunately shared_library insists on creating the symlink…
1446 meson.add_install_script('sh', '-c',
1447 'rm $DESTDIR@0@/libnss_@1@.so'
1448 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001449
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001450 test('dlopen-nss_' + module,
1451 test_dlopen,
1452 args : [nss.full_path()]) # path to dlopen must include a slash
1453 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001454endforeach
1455
1456############################################################
1457
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001458executable('systemd',
1459 systemd_sources,
1460 include_directories : includes,
1461 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001462 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001463 dependencies : [threads,
1464 librt,
1465 libseccomp,
1466 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001467 libmount,
1468 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001469 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001470 install : true,
1471 install_dir : rootlibexecdir)
1472
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001473meson.add_install_script(meson_make_symlink,
1474 join_paths(rootlibexecdir, 'systemd'),
1475 join_paths(rootsbindir, 'init'))
1476
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001477exe = executable('systemd-analyze',
1478 systemd_analyze_sources,
1479 include_directories : includes,
1480 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001481 libshared],
1482 dependencies : [threads,
1483 librt,
1484 libseccomp,
1485 libselinux,
1486 libmount,
1487 libblkid],
1488 install_rpath : rootlibexecdir,
1489 install : true)
1490public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001491
1492executable('systemd-journald',
1493 systemd_journald_sources,
1494 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001495 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001496 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001497 dependencies : [threads,
1498 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001499 liblz4,
1500 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001501 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001502 install : true,
1503 install_dir : rootlibexecdir)
1504
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001505exe = executable('systemd-cat',
1506 systemd_cat_sources,
1507 include_directories : includes,
1508 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001509 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001510 dependencies : [threads],
1511 install_rpath : rootlibexecdir,
1512 install : true)
1513public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001514
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001515exe = executable('journalctl',
1516 journalctl_sources,
1517 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001518 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001519 dependencies : [threads,
1520 libqrencode,
1521 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001522 liblz4,
1523 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001524 install_rpath : rootlibexecdir,
1525 install : true,
1526 install_dir : rootbindir)
1527public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001528
1529executable('systemd-getty-generator',
1530 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001531 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001532 link_with : [libshared],
1533 install_rpath : rootlibexecdir,
1534 install : true,
1535 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001536
1537executable('systemd-debug-generator',
1538 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001539 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001540 link_with : [libshared],
1541 install_rpath : rootlibexecdir,
1542 install : true,
1543 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001544
1545executable('systemd-fstab-generator',
1546 'src/fstab-generator/fstab-generator.c',
1547 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001548 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001549 link_with : [libshared],
1550 install_rpath : rootlibexecdir,
1551 install : true,
1552 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001553
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001554if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001555 executable('30-systemd-environment-d-generator',
1556 'src/environment-d-generator/environment-d-generator.c',
1557 include_directories : includes,
1558 link_with : [libshared],
1559 install_rpath : rootlibexecdir,
1560 install : true,
1561 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001562
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001563 meson.add_install_script(meson_make_symlink,
1564 join_paths(sysconfdir, 'environment'),
1565 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001566endif
1567
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001568if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001569 executable('systemd-hibernate-resume-generator',
1570 'src/hibernate-resume/hibernate-resume-generator.c',
1571 include_directories : includes,
1572 link_with : [libshared],
1573 install_rpath : rootlibexecdir,
1574 install : true,
1575 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001576
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001577 executable('systemd-hibernate-resume',
1578 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001579 include_directories : includes,
1580 link_with : [libshared],
1581 install_rpath : rootlibexecdir,
1582 install : true,
1583 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001584endif
1585
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001586if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001587 executable('systemd-gpt-auto-generator',
1588 'src/gpt-auto-generator/gpt-auto-generator.c',
1589 'src/basic/blkid-util.h',
1590 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001591 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001592 dependencies : libblkid,
1593 install_rpath : rootlibexecdir,
1594 install : true,
1595 install_dir : systemgeneratordir)
1596
1597 exe = executable('systemd-dissect',
1598 'src/dissect/dissect.c',
1599 include_directories : includes,
1600 link_with : [libshared],
1601 install_rpath : rootlibexecdir,
1602 install : true,
1603 install_dir : rootlibexecdir)
1604 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001605endif
1606
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001607if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001608 executable('systemd-resolved',
1609 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001610 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001611 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001612 libbasic_gcrypt,
1613 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001614 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001615 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001616 libm,
1617 libidn],
1618 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001619 install : true,
1620 install_dir : rootlibexecdir)
1621
1622 exe = executable('systemd-resolve',
1623 systemd_resolve_sources,
1624 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001625 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001626 libbasic_gcrypt,
1627 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001628 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001629 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001630 libm,
1631 libidn],
1632 install_rpath : rootlibexecdir,
1633 install : true)
1634 public_programs += [exe]
Lennart Poettering088c1362018-02-27 17:48:54 +01001635
1636 meson.add_install_script(meson_make_symlink,
1637 join_paths(bindir, 'systemd-resolve'),
1638 join_paths(rootsbindir, 'resolvconf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001639endif
1640
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001641if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001642 executable('systemd-logind',
1643 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001644 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001645 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001646 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001647 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001648 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001649 install_rpath : rootlibexecdir,
1650 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001651 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001652
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001653 exe = executable('loginctl',
1654 loginctl_sources,
1655 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001656 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001657 dependencies : [threads,
1658 liblz4,
1659 libxz],
1660 install_rpath : rootlibexecdir,
1661 install : true,
1662 install_dir : rootbindir)
1663 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001664
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001665 exe = executable('systemd-inhibit',
1666 'src/login/inhibit.c',
1667 include_directories : includes,
1668 link_with : [libshared],
1669 install_rpath : rootlibexecdir,
1670 install : true,
1671 install_dir : rootbindir)
1672 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001673
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001674 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001675 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1676 pam_systemd = shared_library(
1677 'pam_systemd',
1678 pam_systemd_c,
1679 name_prefix : '',
1680 include_directories : includes,
1681 link_args : ['-shared',
1682 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001683 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001684 libshared_static],
1685 dependencies : [threads,
1686 libpam,
1687 libpam_misc],
1688 link_depends : pam_systemd_sym,
1689 install : true,
1690 install_dir : pamlibdir)
1691
1692 test('dlopen-pam_systemd',
1693 test_dlopen,
1694 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1695 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001696endif
1697
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001698if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001699 executable('systemd-user-sessions',
1700 'src/user-sessions/user-sessions.c',
1701 include_directories : includes,
1702 link_with : [libshared],
1703 install_rpath : rootlibexecdir,
1704 install : true,
1705 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001706endif
1707
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001708if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001709 exe = executable('bootctl',
1710 'src/boot/bootctl.c',
1711 include_directories : includes,
1712 link_with : [libshared],
1713 dependencies : [libblkid],
1714 install_rpath : rootlibexecdir,
1715 install : true)
1716 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001717endif
1718
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001719exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1720 include_directories : includes,
1721 link_with : [libshared],
1722 dependencies : [threads],
1723 install_rpath : rootlibexecdir,
1724 install : true)
1725public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001726
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001727exe = executable('systemctl', 'src/systemctl/systemctl.c',
1728 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001729 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001730 dependencies : [threads,
1731 libcap,
1732 libselinux,
1733 libxz,
1734 liblz4],
1735 install_rpath : rootlibexecdir,
1736 install : true,
1737 install_dir : rootbindir)
1738public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001739
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001740foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1741 meson.add_install_script(meson_make_symlink,
1742 join_paths(rootbindir, 'systemctl'),
1743 join_paths(rootsbindir, alias))
1744endforeach
1745
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001746if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001747 executable('systemd-backlight',
1748 'src/backlight/backlight.c',
1749 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001750 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001751 install_rpath : rootlibexecdir,
1752 install : true,
1753 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001754endif
1755
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001756if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001757 executable('systemd-rfkill',
1758 'src/rfkill/rfkill.c',
1759 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001760 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001761 install_rpath : rootlibexecdir,
1762 install : true,
1763 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001764endif
1765
1766executable('systemd-system-update-generator',
1767 'src/system-update-generator/system-update-generator.c',
1768 include_directories : includes,
1769 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001770 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001771 install : true,
1772 install_dir : systemgeneratordir)
1773
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001774if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001775 executable('systemd-cryptsetup',
1776 'src/cryptsetup/cryptsetup.c',
1777 include_directories : includes,
1778 link_with : [libshared],
1779 dependencies : [libcryptsetup],
1780 install_rpath : rootlibexecdir,
1781 install : true,
1782 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001783
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001784 executable('systemd-cryptsetup-generator',
1785 'src/cryptsetup/cryptsetup-generator.c',
1786 include_directories : includes,
1787 link_with : [libshared],
1788 dependencies : [libcryptsetup],
1789 install_rpath : rootlibexecdir,
1790 install : true,
1791 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001792
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001793 executable('systemd-veritysetup',
1794 'src/veritysetup/veritysetup.c',
1795 include_directories : includes,
1796 link_with : [libshared],
1797 dependencies : [libcryptsetup],
1798 install_rpath : rootlibexecdir,
1799 install : true,
1800 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001801
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001802 executable('systemd-veritysetup-generator',
1803 'src/veritysetup/veritysetup-generator.c',
1804 include_directories : includes,
1805 link_with : [libshared],
1806 dependencies : [libcryptsetup],
1807 install_rpath : rootlibexecdir,
1808 install : true,
1809 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001810endif
1811
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001812if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001813 executable('systemd-sysv-generator',
1814 'src/sysv-generator/sysv-generator.c',
1815 include_directories : includes,
1816 link_with : [libshared],
1817 install_rpath : rootlibexecdir,
1818 install : true,
1819 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001820
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001821 executable('systemd-rc-local-generator',
1822 'src/rc-local-generator/rc-local-generator.c',
1823 include_directories : includes,
1824 link_with : [libshared],
1825 install_rpath : rootlibexecdir,
1826 install : true,
1827 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001828endif
1829
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001830if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001831 executable('systemd-hostnamed',
1832 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001833 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001834 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001835 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001836 install : true,
1837 install_dir : rootlibexecdir)
1838
1839 exe = executable('hostnamectl',
1840 'src/hostname/hostnamectl.c',
1841 include_directories : includes,
1842 link_with : [libshared],
1843 install_rpath : rootlibexecdir,
1844 install : true)
1845 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001846endif
1847
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001848if conf.get('ENABLE_LOCALED') == 1
1849 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001850 # logind will load libxkbcommon.so dynamically on its own
1851 deps = [libdl]
1852 else
1853 deps = []
1854 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001855
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001856 executable('systemd-localed',
1857 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001858 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001859 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001860 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001861 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001862 install : true,
1863 install_dir : rootlibexecdir)
1864
1865 exe = executable('localectl',
1866 localectl_sources,
1867 include_directories : includes,
1868 link_with : [libshared],
1869 install_rpath : rootlibexecdir,
1870 install : true)
1871 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001872endif
1873
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001874if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001875 executable('systemd-timedated',
1876 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001877 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001878 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001879 install_rpath : rootlibexecdir,
1880 install : true,
1881 install_dir : rootlibexecdir)
1882
1883 exe = executable('timedatectl',
1884 'src/timedate/timedatectl.c',
1885 include_directories : includes,
1886 install_rpath : rootlibexecdir,
1887 link_with : [libshared],
1888 install : true)
1889 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001890endif
1891
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001892if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001893 executable('systemd-timesyncd',
1894 systemd_timesyncd_sources,
1895 include_directories : includes,
1896 link_with : [libshared],
1897 dependencies : [threads,
1898 libm],
1899 install_rpath : rootlibexecdir,
1900 install : true,
1901 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001902endif
1903
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001904if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001905 executable('systemd-machined',
1906 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001907 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001908 link_with : [libmachine_core,
1909 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001910 install_rpath : rootlibexecdir,
1911 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001912 install_dir : rootlibexecdir)
1913
1914 exe = executable('machinectl',
1915 'src/machine/machinectl.c',
1916 include_directories : includes,
1917 link_with : [libshared],
1918 dependencies : [threads,
1919 libxz,
1920 liblz4],
1921 install_rpath : rootlibexecdir,
1922 install : true,
1923 install_dir : rootbindir)
1924 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001925endif
1926
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001927if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001928 executable('systemd-importd',
1929 systemd_importd_sources,
1930 include_directories : includes,
1931 link_with : [libshared],
1932 dependencies : [threads],
1933 install_rpath : rootlibexecdir,
1934 install : true,
1935 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001936
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001937 systemd_pull = executable('systemd-pull',
1938 systemd_pull_sources,
1939 include_directories : includes,
1940 link_with : [libshared],
1941 dependencies : [libcurl,
1942 libz,
1943 libbzip2,
1944 libxz,
1945 libgcrypt],
1946 install_rpath : rootlibexecdir,
1947 install : true,
1948 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001949
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001950 systemd_import = executable('systemd-import',
1951 systemd_import_sources,
1952 include_directories : includes,
1953 link_with : [libshared],
1954 dependencies : [libcurl,
1955 libz,
1956 libbzip2,
1957 libxz],
1958 install_rpath : rootlibexecdir,
1959 install : true,
1960 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001961
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001962 systemd_export = executable('systemd-export',
1963 systemd_export_sources,
1964 include_directories : includes,
1965 link_with : [libshared],
1966 dependencies : [libcurl,
1967 libz,
1968 libbzip2,
1969 libxz],
1970 install_rpath : rootlibexecdir,
1971 install : true,
1972 install_dir : rootlibexecdir)
1973 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001974endif
1975
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001976if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001977 exe = executable('systemd-journal-upload',
1978 systemd_journal_upload_sources,
1979 include_directories : includes,
1980 link_with : [libshared],
1981 dependencies : [threads,
1982 libcurl,
1983 libgnutls,
1984 libxz,
1985 liblz4],
1986 install_rpath : rootlibexecdir,
1987 install : true,
1988 install_dir : rootlibexecdir)
1989 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001990endif
1991
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001992if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001993 s_j_remote = executable('systemd-journal-remote',
1994 systemd_journal_remote_sources,
1995 include_directories : includes,
1996 link_with : [libshared],
1997 dependencies : [threads,
1998 libmicrohttpd,
1999 libgnutls,
2000 libxz,
2001 liblz4],
2002 install_rpath : rootlibexecdir,
2003 install : true,
2004 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002005
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002006 s_j_gatewayd = executable('systemd-journal-gatewayd',
2007 systemd_journal_gatewayd_sources,
2008 include_directories : includes,
2009 link_with : [libshared],
2010 dependencies : [threads,
2011 libmicrohttpd,
2012 libgnutls,
2013 libxz,
2014 liblz4],
2015 install_rpath : rootlibexecdir,
2016 install : true,
2017 install_dir : rootlibexecdir)
2018 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002019endif
2020
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002021if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002022 executable('systemd-coredump',
2023 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002024 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002025 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002026 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002027 libacl,
2028 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002029 libxz,
2030 liblz4],
2031 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002032 install : true,
2033 install_dir : rootlibexecdir)
2034
2035 exe = executable('coredumpctl',
2036 coredumpctl_sources,
2037 include_directories : includes,
2038 link_with : [libshared],
2039 dependencies : [threads,
2040 libxz,
2041 liblz4],
2042 install_rpath : rootlibexecdir,
2043 install : true)
2044 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002045endif
2046
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002047if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002048 exe = executable('systemd-binfmt',
2049 'src/binfmt/binfmt.c',
2050 include_directories : includes,
2051 link_with : [libshared],
2052 install_rpath : rootlibexecdir,
2053 install : true,
2054 install_dir : rootlibexecdir)
2055 public_programs += [exe]
2056
2057 meson.add_install_script('sh', '-c',
2058 mkdir_p.format(binfmtdir))
2059 meson.add_install_script('sh', '-c',
2060 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2061endif
2062
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002063if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002064 executable('systemd-vconsole-setup',
2065 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002066 include_directories : includes,
2067 link_with : [libshared],
2068 install_rpath : rootlibexecdir,
2069 install : true,
2070 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002071endif
2072
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002073if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002074 executable('systemd-random-seed',
2075 'src/random-seed/random-seed.c',
2076 include_directories : includes,
2077 link_with : [libshared],
2078 install_rpath : rootlibexecdir,
2079 install : true,
2080 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002081endif
2082
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002083if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002084 executable('systemd-firstboot',
2085 'src/firstboot/firstboot.c',
2086 include_directories : includes,
2087 link_with : [libshared],
2088 dependencies : [libcrypt],
2089 install_rpath : rootlibexecdir,
2090 install : true,
2091 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002092endif
2093
2094executable('systemd-remount-fs',
2095 'src/remount-fs/remount-fs.c',
2096 'src/core/mount-setup.c',
2097 'src/core/mount-setup.h',
2098 include_directories : includes,
2099 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002100 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002101 install : true,
2102 install_dir : rootlibexecdir)
2103
2104executable('systemd-machine-id-setup',
2105 'src/machine-id-setup/machine-id-setup-main.c',
2106 'src/core/machine-id-setup.c',
2107 'src/core/machine-id-setup.h',
2108 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002109 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002110 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002111 install : true,
2112 install_dir : rootbindir)
2113
2114executable('systemd-fsck',
2115 'src/fsck/fsck.c',
2116 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002117 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002118 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002119 install : true,
2120 install_dir : rootlibexecdir)
2121
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002122executable('systemd-growfs',
2123 'src/partition/growfs.c',
2124 include_directories : includes,
2125 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002126 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002127 install_rpath : rootlibexecdir,
2128 install : true,
2129 install_dir : rootlibexecdir)
2130
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002131executable('systemd-makefs',
2132 'src/partition/makefs.c',
2133 include_directories : includes,
2134 link_with : [libshared],
2135 install_rpath : rootlibexecdir,
2136 install : true,
2137 install_dir : rootlibexecdir)
2138
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002139executable('systemd-sleep',
2140 'src/sleep/sleep.c',
2141 include_directories : includes,
2142 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002143 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002144 install : true,
2145 install_dir : rootlibexecdir)
2146
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002147exe = executable('systemd-sysctl',
2148 'src/sysctl/sysctl.c',
2149 include_directories : includes,
2150 link_with : [libshared],
2151 install_rpath : rootlibexecdir,
2152 install : true,
2153 install_dir : rootlibexecdir)
2154public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002155
2156executable('systemd-ac-power',
2157 'src/ac-power/ac-power.c',
2158 include_directories : includes,
2159 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002160 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002161 install : true,
2162 install_dir : rootlibexecdir)
2163
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002164exe = executable('systemd-detect-virt',
2165 'src/detect-virt/detect-virt.c',
2166 include_directories : includes,
2167 link_with : [libshared],
2168 install_rpath : rootlibexecdir,
2169 install : true)
2170public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002171
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002172exe = executable('systemd-delta',
2173 'src/delta/delta.c',
2174 include_directories : includes,
2175 link_with : [libshared],
2176 install_rpath : rootlibexecdir,
2177 install : true)
2178public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002179
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002180exe = executable('systemd-escape',
2181 'src/escape/escape.c',
2182 include_directories : includes,
2183 link_with : [libshared],
2184 install_rpath : rootlibexecdir,
2185 install : true,
2186 install_dir : rootbindir)
2187public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002188
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002189exe = executable('systemd-notify',
2190 'src/notify/notify.c',
2191 include_directories : includes,
2192 link_with : [libshared],
2193 install_rpath : rootlibexecdir,
2194 install : true,
2195 install_dir : rootbindir)
2196public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002197
2198executable('systemd-volatile-root',
2199 'src/volatile-root/volatile-root.c',
2200 include_directories : includes,
2201 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002202 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002203 install : true,
2204 install_dir : rootlibexecdir)
2205
2206executable('systemd-cgroups-agent',
2207 'src/cgroups-agent/cgroups-agent.c',
2208 include_directories : includes,
2209 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002210 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002211 install : true,
2212 install_dir : rootlibexecdir)
2213
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002214exe = executable('systemd-path',
2215 'src/path/path.c',
2216 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002217 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002218 install_rpath : rootlibexecdir,
2219 install : true)
2220public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002221
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002222exe = executable('systemd-ask-password',
2223 'src/ask-password/ask-password.c',
2224 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002225 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002226 install_rpath : rootlibexecdir,
2227 install : true,
2228 install_dir : rootbindir)
2229public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002230
2231executable('systemd-reply-password',
2232 'src/reply-password/reply-password.c',
2233 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002234 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002235 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002236 install : true,
2237 install_dir : rootlibexecdir)
2238
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002239exe = executable('systemd-tty-ask-password-agent',
2240 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2241 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002242 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002243 install_rpath : rootlibexecdir,
2244 install : true,
2245 install_dir : rootbindir)
2246public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002247
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002248exe = executable('systemd-cgls',
2249 'src/cgls/cgls.c',
2250 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002251 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002252 install_rpath : rootlibexecdir,
2253 install : true)
2254public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002255
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002256exe = executable('systemd-cgtop',
2257 'src/cgtop/cgtop.c',
2258 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002259 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002260 install_rpath : rootlibexecdir,
2261 install : true)
2262public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002263
2264executable('systemd-initctl',
2265 'src/initctl/initctl.c',
2266 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002267 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002268 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002269 install : true,
2270 install_dir : rootlibexecdir)
2271
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002272exe = executable('systemd-mount',
2273 'src/mount/mount-tool.c',
2274 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002275 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002276 install_rpath : rootlibexecdir,
2277 install : true)
2278public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002279
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002280meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002281 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002282
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002283exe = executable('systemd-run',
2284 'src/run/run.c',
2285 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002286 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002287 install_rpath : rootlibexecdir,
2288 install : true)
2289public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002290
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002291exe = executable('systemd-stdio-bridge',
2292 'src/stdio-bridge/stdio-bridge.c',
2293 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002294 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002295 install_rpath : rootlibexecdir,
2296 install : true)
2297public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002298
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002299exe = executable('busctl',
2300 'src/busctl/busctl.c',
2301 'src/busctl/busctl-introspect.c',
2302 'src/busctl/busctl-introspect.h',
2303 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002304 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002305 install_rpath : rootlibexecdir,
2306 install : true)
2307public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002308
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002309if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002310 exe = executable('systemd-sysusers',
2311 'src/sysusers/sysusers.c',
2312 include_directories : includes,
2313 link_with : [libshared],
2314 install_rpath : rootlibexecdir,
2315 install : true,
2316 install_dir : rootbindir)
2317 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002318endif
2319
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002320if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002321 exe = executable('systemd-tmpfiles',
2322 'src/tmpfiles/tmpfiles.c',
2323 include_directories : includes,
2324 link_with : [libshared],
2325 dependencies : [libacl],
2326 install_rpath : rootlibexecdir,
2327 install : true,
2328 install_dir : rootbindir)
2329 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002330
2331 test('test-systemd-tmpfiles',
2332 test_systemd_tmpfiles_py,
2333 args : exe.full_path())
2334 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002335endif
2336
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002337if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002338 exe = executable('systemd-hwdb',
2339 'src/hwdb/hwdb.c',
2340 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2341 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002342 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002343 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002344 install : true,
2345 install_dir : rootbindir)
2346 public_programs += [exe]
2347endif
2348
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002349if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002350 executable('systemd-quotacheck',
2351 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002352 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002353 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002354 install_rpath : rootlibexecdir,
2355 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002356 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002357endif
2358
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002359exe = executable('systemd-socket-proxyd',
2360 'src/socket-proxy/socket-proxyd.c',
2361 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002362 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002363 dependencies : [threads],
2364 install_rpath : rootlibexecdir,
2365 install : true,
2366 install_dir : rootlibexecdir)
2367public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002368
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002369exe = executable('systemd-udevd',
2370 systemd_udevd_sources,
2371 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002372 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002373 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002374 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002375 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002376 dependencies : [threads,
2377 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002378 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002379 libacl,
2380 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002381 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002382 install : true,
2383 install_dir : rootlibexecdir)
2384public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002385
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002386exe = executable('udevadm',
2387 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002388 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002389 include_directories : includes,
2390 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002391 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002392 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002393 dependencies : [threads,
2394 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002395 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002396 libacl,
2397 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002398 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002399 install : true,
2400 install_dir : rootbindir)
2401public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002402
2403executable('systemd-shutdown',
2404 systemd_shutdown_sources,
2405 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002406 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002407 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002408 install : true,
2409 install_dir : rootlibexecdir)
2410
2411executable('systemd-update-done',
2412 'src/update-done/update-done.c',
2413 include_directories : includes,
2414 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002415 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002416 install : true,
2417 install_dir : rootlibexecdir)
2418
2419executable('systemd-update-utmp',
2420 'src/update-utmp/update-utmp.c',
2421 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002422 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002423 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002424 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002425 install : true,
2426 install_dir : rootlibexecdir)
2427
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002428if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002429 executable('systemd-modules-load',
2430 'src/modules-load/modules-load.c',
2431 include_directories : includes,
2432 link_with : [libshared],
2433 dependencies : [libkmod],
2434 install_rpath : rootlibexecdir,
2435 install : true,
2436 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002437
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002438 meson.add_install_script('sh', '-c',
2439 mkdir_p.format(modulesloaddir))
2440 meson.add_install_script('sh', '-c',
2441 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002442endif
2443
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002444exe = executable('systemd-nspawn',
2445 systemd_nspawn_sources,
2446 'src/core/mount-setup.c', # FIXME: use a variable?
2447 'src/core/mount-setup.h',
2448 'src/core/loopback-setup.c',
2449 'src/core/loopback-setup.h',
2450 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002451 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002452 dependencies : [libacl,
2453 libblkid,
2454 libseccomp,
2455 libselinux],
2456 install_rpath : rootlibexecdir,
2457 install : true)
2458public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002459
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002460if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002461 executable('systemd-networkd',
2462 systemd_networkd_sources,
2463 include_directories : includes,
2464 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002465 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002466 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002467 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002468 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002469 install_rpath : rootlibexecdir,
2470 install : true,
2471 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002472
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002473 executable('systemd-networkd-wait-online',
2474 systemd_networkd_wait_online_sources,
2475 include_directories : includes,
2476 link_with : [libnetworkd_core,
2477 libshared],
2478 install_rpath : rootlibexecdir,
2479 install : true,
2480 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002481
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002482 exe = executable('networkctl',
2483 networkctl_sources,
2484 include_directories : includes,
2485 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002486 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002487 install_rpath : rootlibexecdir,
2488 install : true,
2489 install_dir : rootbindir)
2490 public_programs += [exe]
2491endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002492
2493executable('systemd-sulogin-shell',
2494 ['src/sulogin-shell/sulogin-shell.c'],
2495 include_directories : includes,
2496 link_with : [libshared],
2497 install_rpath : rootlibexecdir,
2498 install : true,
2499 install_dir : rootlibexecdir)
2500
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002501############################################################
2502
2503foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002504 sources = tuple[0]
2505 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2506 dependencies = tuple[2]
2507 condition = tuple.length() >= 4 ? tuple[3] : ''
2508 type = tuple.length() >= 5 ? tuple[4] : ''
2509 defs = tuple.length() >= 6 ? tuple[5] : []
2510 incs = tuple.length() >= 7 ? tuple[6] : includes
2511 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002512
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002513 name = sources[0].split('/')[-1].split('.')[0]
2514 if type.startswith('timeout=')
2515 timeout = type.split('=')[1].to_int()
2516 type = ''
2517 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002518 if want_tests == 'false'
2519 message('Not compiling @0@ because tests is set to false'.format(name))
2520 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002521 exe = executable(
2522 name,
2523 sources,
2524 include_directories : incs,
2525 link_with : link_with,
2526 dependencies : dependencies,
2527 c_args : defs,
2528 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002529 install : install_tests,
2530 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002531
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002532 if type == 'manual'
2533 message('@0@ is a manual test'.format(name))
2534 elif type == 'unsafe' and want_tests != 'unsafe'
2535 message('@0@ is an unsafe test'.format(name))
2536 else
2537 test(name, exe,
2538 env : test_env,
2539 timeout : timeout)
2540 endif
2541 else
2542 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2543 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002544endforeach
2545
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002546test_libsystemd_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002547 'test-libsystemd-sym',
2548 test_libsystemd_sym_c,
2549 include_directories : includes,
2550 link_with : [libsystemd],
2551 install : install_tests,
2552 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002553test('test-libsystemd-sym',
2554 test_libsystemd_sym)
2555
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002556test_libudev_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002557 'test-libudev-sym',
2558 test_libudev_sym_c,
2559 include_directories : includes,
2560 c_args : ['-Wno-deprecated-declarations'],
2561 link_with : [libudev],
2562 install : install_tests,
2563 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002564test('test-libudev-sym',
2565 test_libudev_sym)
2566
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002567############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002568
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002569fuzzer_exes = []
2570
2571foreach tuple : fuzzers
2572 sources = tuple[0]
2573 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2574 dependencies = tuple[2]
2575 defs = tuple.length() >= 4 ? tuple[3] : []
2576 incs = tuple.length() >= 5 ? tuple[4] : includes
2577
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002578 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002579 dependencies += fuzzing_engine
2580 else
2581 sources += 'src/fuzz/fuzz-main.c'
2582 endif
2583
2584 name = sources[0].split('/')[-1].split('.')[0]
2585
2586 fuzzer_exes += executable(
2587 name,
2588 sources,
2589 include_directories : [incs, include_directories('src/fuzz')],
2590 link_with : link_with,
2591 dependencies : dependencies,
2592 c_args : defs,
2593 install : false)
2594endforeach
2595
2596run_target('fuzzers',
2597 depends : fuzzer_exes,
2598 command : ['true'])
2599
2600############################################################
2601
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002602make_directive_index_py = find_program('tools/make-directive-index.py')
2603make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002604xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002605hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002606
2607subdir('units')
2608subdir('sysctl.d')
2609subdir('sysusers.d')
2610subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002611subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002612subdir('hwdb')
2613subdir('network')
2614subdir('man')
2615subdir('shell-completion/bash')
2616subdir('shell-completion/zsh')
2617subdir('docs/sysvinit')
2618subdir('docs/var-log')
2619
2620# FIXME: figure out if the warning is true:
2621# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2622install_subdir('factory/etc',
2623 install_dir : factorydir)
2624
2625
2626install_data('xorg/50-systemd-user.sh',
2627 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002628install_data('modprobe.d/systemd.conf',
2629 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002630install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002631 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002632 'NEWS',
2633 'README',
2634 'doc/CODING_STYLE',
2635 'doc/DISTRO_PORTING',
2636 'doc/ENVIRONMENT.md',
2637 'doc/HACKING',
2638 'doc/TRANSIENT-SETTINGS.md',
2639 'doc/TRANSLATORS',
2640 'doc/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002641 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2642 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002643
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002644meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2645meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2646
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002647############################################################
2648
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002649meson_check_help = find_program('tools/meson-check-help.sh')
2650
2651foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002652 name = exec.full_path().split('/')[-1]
2653 test('check-help-' + name,
2654 meson_check_help,
2655 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002656endforeach
2657
2658############################################################
2659
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002660prev = ''
2661foreach p : fuzz_regression_tests
2662 a = p.split('/')[-3]
2663 b = p.split('/')[-2]
2664 c = p.split('/')[-1]
2665
2666 if a == 'address'
2667 build = sanitize_address
2668 else
2669 error('unknown sanitizer @0@'.format(a))
2670 endif
2671
2672 name = '@1@:@0@'.format(a, b)
2673
2674 if name != prev
2675 if want_tests == 'false'
2676 message('Not compiling @0@ because tests is set to false'.format(name))
2677 elif not sanitizers.contains(a)
2678 message('Not compiling @0@ because @1@ sanitizer is not available'.format(name, a))
2679 elif slow_tests
2680 exe = custom_target(
2681 name,
2682 output : name,
2683 depends : build,
2684 command : [env, 'ln', '-fs',
2685 join_paths(build.full_path(), b),
2686 '@OUTPUT@'],
2687 build_by_default : true)
2688 else
2689 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2690 endif
2691 endif
2692 prev = name
2693
2694 if want_tests != 'false' and slow_tests
2695 test(c, env, args : [exe.full_path(),
2696 join_paths(meson.source_root(),
2697 'test/fuzz-regressions',
2698 p)])
2699 endif
2700endforeach
2701
2702############################################################
2703
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002704if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002705 all_files = run_command(
2706 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002707 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002708 'ls-files',
2709 ':/*.[ch]'])
2710 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002711
userwithuide85a6902017-08-09 13:41:44 +00002712 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002713 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002714 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002715 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002716 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002717 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002718 output : 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002719 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002720endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002721
2722if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002723 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002724 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002725 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002726 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002727endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002728
2729if git.found()
2730 git_head = run_command(
2731 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002732 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002733 'rev-parse', 'HEAD']).stdout().strip()
2734 git_head_short = run_command(
2735 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002736 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002737 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2738
2739 run_target(
2740 'git-snapshot',
2741 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002742 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002743 git_head_short),
2744 '--prefix', 'systemd-@0@/'.format(git_head),
2745 'HEAD'])
2746endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002747
2748############################################################
2749
Lennart Poettering51b13862017-12-20 12:51:14 +01002750meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2751run_target(
2752 'check-api-docs',
2753 depends : [man, libsystemd, libudev],
2754 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2755
2756############################################################
2757
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002758status = [
2759 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2760
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002761 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002762 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002763 'prefix directory: @0@'.format(prefixdir),
2764 'rootprefix directory: @0@'.format(rootprefixdir),
2765 'sysconf directory: @0@'.format(sysconfdir),
2766 'include directory: @0@'.format(includedir),
2767 'lib directory: @0@'.format(libdir),
2768 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002769 'SysV init scripts: @0@'.format(sysvinit_path),
2770 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002771 'PAM modules directory: @0@'.format(pamlibdir),
2772 'PAM configuration directory: @0@'.format(pamconfdir),
2773 'RPM macros directory: @0@'.format(rpmmacrosdir),
2774 'modprobe.d directory: @0@'.format(modprobedir),
2775 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2776 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2777 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2778 'bash completions directory: @0@'.format(bashcompletiondir),
2779 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002780 'extra start script: @0@'.format(get_option('rc-local')),
2781 'extra stop script: @0@'.format(get_option('halt-local')),
2782 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2783 get_option('debug-tty')),
2784 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002785 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002786 'maximum system UID: @0@'.format(system_uid_max),
2787 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002788 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2789 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2790 'minimum container UID base: @0@'.format(container_uid_base_min),
2791 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002792 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002793 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002794 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002795 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002796 'nobody user name: @0@'.format(nobody_user),
2797 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002798 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002799 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002800
2801 'default DNSSEC mode: @0@'.format(default_dnssec),
2802 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2803 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2804
2805alt_dns_servers = '\n '.join(dns_servers.split(' '))
2806alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2807status += [
2808 'default DNS servers: @0@'.format(alt_dns_servers),
2809 'default NTP servers: @0@'.format(alt_ntp_servers)]
2810
2811alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2812 '@@0@'.format(time_epoch)).stdout().strip()
2813status += [
2814 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2815
2816# TODO:
2817# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2818# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2819# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2820
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002821if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002822 status += [
2823 'efi arch: @0@'.format(efi_arch)]
2824
2825 if have_gnu_efi
2826 status += [
2827 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2828 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002829 'EFI lib directory: @0@'.format(efi_libdir),
2830 'EFI lds directory: @0@'.format(efi_ldsdir),
2831 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002832 endif
2833endif
2834
2835found = []
2836missing = []
2837
2838foreach tuple : [
2839 ['libcryptsetup'],
2840 ['PAM'],
2841 ['AUDIT'],
2842 ['IMA'],
2843 ['AppArmor'],
2844 ['SELinux'],
2845 ['SECCOMP'],
2846 ['SMACK'],
2847 ['zlib'],
2848 ['xz'],
2849 ['lz4'],
2850 ['bzip2'],
2851 ['ACL'],
2852 ['gcrypt'],
2853 ['qrencode'],
2854 ['microhttpd'],
2855 ['gnutls'],
2856 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002857 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002858 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002859 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002860 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002861 ['libiptc'],
2862 ['elfutils'],
2863 ['binfmt'],
2864 ['vconsole'],
2865 ['quotacheck'],
2866 ['tmpfiles'],
2867 ['environment.d'],
2868 ['sysusers'],
2869 ['firstboot'],
2870 ['randomseed'],
2871 ['backlight'],
2872 ['rfkill'],
2873 ['logind'],
2874 ['machined'],
2875 ['importd'],
2876 ['hostnamed'],
2877 ['timedated'],
2878 ['timesyncd'],
2879 ['localed'],
2880 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002881 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002882 ['coredump'],
2883 ['polkit'],
2884 ['legacy pkla', install_polkit_pkla],
2885 ['efi'],
2886 ['gnu-efi', have_gnu_efi],
2887 ['kmod'],
2888 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01002889 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002890 ['blkid'],
2891 ['dbus'],
2892 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002893 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002894 ['hwdb'],
2895 ['tpm'],
2896 ['man pages', want_man],
2897 ['html pages', want_html],
2898 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002899 ['SysV compat'],
2900 ['utmp'],
2901 ['ldconfig'],
2902 ['hibernate'],
2903 ['adm group', get_option('adm-group')],
2904 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002905 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002906 ['debug hashmap'],
2907 ['debug mmap cache'],
2908]
2909
2910 cond = tuple.get(1, '')
2911 if cond == ''
2912 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2913 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002914 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002915 endif
2916 if cond
2917 found += [tuple[0]]
2918 else
2919 missing += [tuple[0]]
2920 endif
2921endforeach
2922
2923status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002924 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002925 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002926 '',
2927 'disabled features: @0@'.format(', '.join(missing)),
2928 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002929message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002930
2931if rootprefixdir != rootprefix_default
2932 message('WARNING:\n' +
2933 ' Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2934 ' systemd used fixed names for unit file directories and other paths, so anything\n' +
2935 ' except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
2936endif