blob: 751ad3ded9bd75049271e44527d4ddaac0577500 [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',
Zbigniew Jędrzejewski-Szmekad6a0852018-03-05 17:12:48 +010019 version : '238',
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
Zbigniew Jędrzejewski-Szmekad6a0852018-03-05 17:12:48 +010030libsystemd_version = '0.22.0'
31libudev_version = '1.6.10'
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')
Michal Koutný7f672e82018-03-09 18:27:13 +0100240conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
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)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100799conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400800substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400801
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400802dns_servers = get_option('dns-servers')
803conf.set_quoted('DNS_SERVERS', dns_servers)
804substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400805
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400806ntp_servers = get_option('ntp-servers')
807conf.set_quoted('NTP_SERVERS', ntp_servers)
808substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400809
810conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
811
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400812substs.set('SUSHELL', get_option('debug-shell'))
813substs.set('DEBUGTTY', get_option('debug-tty'))
814
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400815debug = get_option('debug')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200816enable_debug_hashmap = false
817enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400818if debug != ''
819 foreach name : debug.split(',')
820 if name == 'hashmap'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200821 enable_debug_hashmap = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400822 elif name == 'mmap-cache'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200823 enable_debug_mmap_cache = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400824 else
825 message('unknown debug option "@0@", ignoring'.format(name))
826 endif
827 endforeach
828endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200829conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
830conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400831
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400832#####################################################################
833
834threads = dependency('threads')
835librt = cc.find_library('rt')
836libm = cc.find_library('m')
837libdl = cc.find_library('dl')
838libcrypt = cc.find_library('crypt')
839
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400840libcap = dependency('libcap', required : false)
841if not libcap.found()
842 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
843 libcap = cc.find_library('cap')
844endif
845
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400846libmount = dependency('mount',
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -0500847 version : '>= 2.30',
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500848 required : not fuzzer_build)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400849
850want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500851if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400852 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400853 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400854 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200855 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400856else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200857 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400858 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400859endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200860conf.set10('HAVE_SECCOMP', have)
861m4_defines += have ? ['-DHAVE_SECCOMP'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400862
863want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500864if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400865 libselinux = dependency('libselinux',
866 version : '>= 2.1.9',
867 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200868 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400869else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200870 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400871 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400872endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200873conf.set10('HAVE_SELINUX', have)
874m4_defines += have ? ['-DHAVE_SELINUX'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400875
876want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500877if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400878 libapparmor = dependency('libapparmor',
879 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200880 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400881else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200882 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400883 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400884endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200885conf.set10('HAVE_APPARMOR', have)
886m4_defines += have ? ['-DHAVE_APPARMOR'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400887
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400888smack_run_label = get_option('smack-run-label')
889if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400890 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
891 m4_defines += ['-DHAVE_SMACK_RUN_LABEL']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400892endif
893
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400894want_polkit = get_option('polkit')
895install_polkit = false
896install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500897if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400898 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400899
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400900 libpolkit = dependency('polkit-gobject-1',
901 required : false)
902 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
903 message('Old polkit detected, will install pkla files')
904 install_polkit_pkla = true
905 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400906endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200907conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400908
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400909want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500910if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400911 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200912 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400913else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200914 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400915 libacl = []
916endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200917conf.set10('HAVE_ACL', have)
918m4_defines += have ? ['-DHAVE_ACL'] : []
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400919
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400920want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500921if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400922 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200923 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400924else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200925 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400926 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400927endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200928conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400929
930want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500931if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400932 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200933 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400934else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200935 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400936 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400937endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200938conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400939
940want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500941if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400942 libkmod = dependency('libkmod',
943 version : '>= 15',
944 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200945 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400946else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200947 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400948 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400949endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200950conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400951
952want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500953if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400954 libpam = cc.find_library('pam', required : want_pam == 'true')
955 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200956 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400957else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200958 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400959 libpam = []
960 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400961endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200962conf.set10('HAVE_PAM', have)
963m4_defines += have ? ['-DHAVE_PAM'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400964
965want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500966if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400967 libmicrohttpd = dependency('libmicrohttpd',
968 version : '>= 0.9.33',
969 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200970 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400971else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200972 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400973 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400974endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200975conf.set10('HAVE_MICROHTTPD', have)
976m4_defines += have ? ['-DHAVE_MICROHTTPD'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400977
978want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500979if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400980 libcryptsetup = dependency('libcryptsetup',
981 version : '>= 1.6.0',
982 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200983 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400984else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200985 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400986 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400987endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200988conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400989
990want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500991if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400992 libcurl = dependency('libcurl',
993 version : '>= 7.32.0',
994 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200995 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400996else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200997 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400998 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400999endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001000conf.set10('HAVE_LIBCURL', have)
1001m4_defines += have ? ['-DHAVE_LIBCURL'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001002
1003want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001004want_libidn2 = get_option('libidn2')
1005if want_libidn == 'true' and want_libidn2 == 'true'
1006 error('libidn and libidn2 cannot be requested simultaneously')
1007endif
1008
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001009if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001010 libidn = dependency('libidn',
1011 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001012 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001013else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001014 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001015 libidn = []
1016endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001017conf.set10('HAVE_LIBIDN', have)
1018m4_defines += have ? ['-DHAVE_LIBIDN'] : []
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001019if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001020 # libidn is used for both libidn and libidn2 objects
1021 libidn = dependency('libidn2',
1022 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001023 have = libidn.found()
1024else
1025 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001026endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001027conf.set10('HAVE_LIBIDN2', have)
1028m4_defines += have ? ['-DHAVE_LIBIDN2'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001029
1030want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001031if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001032 libiptc = dependency('libiptc',
1033 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001034 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001035else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001036 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001037 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001038endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001039conf.set10('HAVE_LIBIPTC', have)
1040m4_defines += have ? ['-DHAVE_LIBIPTC'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001041
1042want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001043if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001044 libqrencode = dependency('libqrencode',
1045 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001046 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001047else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001048 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001049 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001050endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001051conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001052
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001053want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001054if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001055 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1056 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001057 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001058else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001059 have = false
1060endif
1061if not have
1062 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001063 libgcrypt = []
1064 libgpg_error = []
1065endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001066conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001067
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001068want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001069if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001070 libgnutls = dependency('gnutls',
1071 version : '>= 3.1.4',
1072 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001073 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001074else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001075 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001076 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001077endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001078conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001079
1080want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001081if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001082 libdw = dependency('libdw',
1083 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001084 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001085else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001086 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001087 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001088endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001089conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001090
1091want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001092if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001093 libz = dependency('zlib',
1094 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001095 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001096else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001097 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001098 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001099endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001100conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001101
1102want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001103if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001104 libbzip2 = cc.find_library('bz2',
1105 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001106 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001107else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001108 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001109 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001110endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001111conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001112
1113want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001114if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001115 libxz = dependency('liblzma',
1116 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001117 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001118else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001119 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001120 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001121endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001122conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001123
1124want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001125if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001126 liblz4 = dependency('liblz4',
1127 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001128 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001129else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001130 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001131 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001132endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001133conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001134
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001135want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001136if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001137 libxkbcommon = dependency('xkbcommon',
1138 version : '>= 0.3.0',
1139 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001140 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001141else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001142 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001143 libxkbcommon = []
1144endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001145conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001146
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001147want_pcre2 = get_option('pcre2')
1148if want_pcre2 != 'false'
1149 libpcre2 = dependency('libpcre2-8',
1150 required : want_pcre2 == 'true')
1151 have = libpcre2.found()
1152else
1153 have = false
1154 libpcre2 = []
1155endif
1156conf.set10('HAVE_PCRE2', have)
1157
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001158want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001159if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001160 libglib = dependency('glib-2.0',
1161 version : '>= 2.22.0',
1162 required : want_glib == 'true')
1163 libgobject = dependency('gobject-2.0',
1164 version : '>= 2.22.0',
1165 required : want_glib == 'true')
1166 libgio = dependency('gio-2.0',
1167 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001168 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001169else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001170 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001171 libglib = []
1172 libgobject = []
1173 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001174endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001175conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001176
1177want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001178if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001179 libdbus = dependency('dbus-1',
1180 version : '>= 1.3.2',
1181 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001182 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001183else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001184 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001185 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001186endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001187conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001188
Yu Watanabe42303dc2017-06-18 05:22:32 +09001189default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001190if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001191 default_dnssec = 'no'
1192endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001193if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001194 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1195 default_dnssec = 'no'
1196endif
1197conf.set('DEFAULT_DNSSEC_MODE',
1198 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1199substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1200
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001201want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001202if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001203 have = (conf.get('HAVE_LIBCURL') == 1 and
1204 conf.get('HAVE_ZLIB') == 1 and
1205 conf.get('HAVE_BZIP2') == 1 and
1206 conf.get('HAVE_XZ') == 1 and
1207 conf.get('HAVE_GCRYPT') == 1)
1208 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001209 error('importd support was requested, but dependencies are not available')
1210 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001211else
1212 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001213endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001214conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001215
1216want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001217if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001218 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1219 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001220 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1221 # it's possible to build one without the other. Complain only if
1222 # support was explictly requested. The auxiliary files like sysusers
1223 # config should be installed when any of the programs are built.
1224 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1225 error('remote support was requested, but dependencies are not available')
1226 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001227 have = have_deps[0] or have_deps[1]
1228else
1229 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001230endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001231conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001232
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001233foreach term : ['utmp',
1234 'hibernate',
1235 'environment-d',
1236 'binfmt',
1237 'coredump',
1238 'resolve',
1239 'logind',
1240 'hostnamed',
1241 'localed',
1242 'machined',
1243 'networkd',
1244 'timedated',
1245 'timesyncd',
1246 'myhostname',
1247 'firstboot',
1248 'randomseed',
1249 'backlight',
1250 'vconsole',
1251 'quotacheck',
1252 'sysusers',
1253 'tmpfiles',
1254 'hwdb',
1255 'rfkill',
1256 'ldconfig',
1257 'efi',
1258 'tpm',
1259 'ima',
1260 'smack',
1261 'gshadow',
1262 'idn',
1263 'nss-systemd']
1264 have = get_option(term)
1265 name = 'ENABLE_' + term.underscorify().to_upper()
1266 conf.set10(name, have)
1267 m4_defines += have ? ['-D' + name] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001268endforeach
1269
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001270want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001271install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001272slow_tests = get_option('slow-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001273tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001274fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001275
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001276conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001277
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001278#####################################################################
1279
1280if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001281 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001282
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001283 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001284 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001285 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001286 elif efi_arch == 'x86_64'
1287 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001288 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001289 elif efi_arch == 'arm'
1290 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001291 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001292 elif efi_arch == 'aarch64'
1293 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001294 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001295 else
1296 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001297 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001298 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001299
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001300 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001301 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001302
1303 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001304else
1305 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001306endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001307conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001308
1309#####################################################################
1310
1311config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001312 output : 'config.h',
1313 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001314
1315includes = include_directories('src/basic',
1316 'src/shared',
1317 'src/systemd',
1318 'src/journal',
1319 'src/resolve',
1320 'src/timesync',
1321 'src/login',
1322 'src/udev',
1323 'src/libudev',
1324 'src/core',
1325 'src/libsystemd/sd-bus',
1326 'src/libsystemd/sd-device',
1327 'src/libsystemd/sd-hwdb',
1328 'src/libsystemd/sd-id128',
1329 'src/libsystemd/sd-netlink',
1330 'src/libsystemd/sd-network',
1331 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001332 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001333
1334add_project_arguments('-include', 'config.h', language : 'c')
1335
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001336subdir('po')
1337subdir('catalog')
1338subdir('src/systemd')
1339subdir('src/basic')
1340subdir('src/libsystemd')
1341subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001342subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001343subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001344
1345libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001346 'journal-core',
1347 libjournal_core_sources,
1348 journald_gperf_c,
1349 include_directories : includes,
1350 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001351
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001352libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001353libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001354 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001355 '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 +02001356 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001357 include_directories : includes,
1358 link_args : ['-shared',
1359 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001360 link_with : [libbasic,
1361 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001362 link_whole : [libsystemd_static,
1363 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001364 dependencies : [threads,
1365 librt,
1366 libxz,
1367 liblz4],
1368 link_depends : libsystemd_sym,
1369 install : true,
1370 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001371
1372############################################################
1373
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001374# binaries that have --help and are intended for use by humans,
1375# usually, but not always, installed in /bin.
1376public_programs = []
1377
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001378subdir('src/libudev')
1379subdir('src/shared')
1380subdir('src/core')
1381subdir('src/udev')
1382subdir('src/network')
1383
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001384subdir('src/analyze')
1385subdir('src/journal-remote')
1386subdir('src/coredump')
1387subdir('src/hostname')
1388subdir('src/import')
1389subdir('src/kernel-install')
1390subdir('src/locale')
1391subdir('src/machine')
1392subdir('src/nspawn')
1393subdir('src/resolve')
1394subdir('src/timedate')
1395subdir('src/timesync')
1396subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001397subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001398
1399subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001400subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001401subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001402subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001403
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001404############################################################
1405
1406# only static linking apart from libdl, to make sure that the
1407# module is linked to all libraries that it uses.
1408test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001409 'test-dlopen',
1410 test_dlopen_c,
1411 include_directories : includes,
1412 link_with : [libbasic],
1413 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001414
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001415foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001416 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001417 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001418 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001419
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001420 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001421 if condition
1422 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001423
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001424 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1425 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001426
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001427 nss = shared_library(
1428 'nss_' + module,
1429 'src/nss-@0@/nss-@0@.c'.format(module),
1430 version : '2',
1431 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001432 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1433 link_args : ['-Wl,-z,nodelete',
1434 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001435 '-Wl,--version-script=' + version_script_arg,
1436 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001437 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001438 libbasic],
1439 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001440 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001441 link_depends : sym,
1442 install : true,
1443 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001444
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001445 # We cannot use shared_module because it does not support version suffix.
1446 # Unfortunately shared_library insists on creating the symlink…
1447 meson.add_install_script('sh', '-c',
1448 'rm $DESTDIR@0@/libnss_@1@.so'
1449 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001450
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001451 test('dlopen-nss_' + module,
1452 test_dlopen,
1453 args : [nss.full_path()]) # path to dlopen must include a slash
1454 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001455endforeach
1456
1457############################################################
1458
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001459executable('systemd',
1460 systemd_sources,
1461 include_directories : includes,
1462 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001463 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001464 dependencies : [threads,
1465 librt,
1466 libseccomp,
1467 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001468 libmount,
1469 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001470 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001471 install : true,
1472 install_dir : rootlibexecdir)
1473
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001474meson.add_install_script(meson_make_symlink,
1475 join_paths(rootlibexecdir, 'systemd'),
1476 join_paths(rootsbindir, 'init'))
1477
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001478exe = executable('systemd-analyze',
1479 systemd_analyze_sources,
1480 include_directories : includes,
1481 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001482 libshared],
1483 dependencies : [threads,
1484 librt,
1485 libseccomp,
1486 libselinux,
1487 libmount,
1488 libblkid],
1489 install_rpath : rootlibexecdir,
1490 install : true)
1491public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001492
1493executable('systemd-journald',
1494 systemd_journald_sources,
1495 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001496 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001497 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001498 dependencies : [threads,
1499 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001500 liblz4,
1501 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001502 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001503 install : true,
1504 install_dir : rootlibexecdir)
1505
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001506exe = executable('systemd-cat',
1507 systemd_cat_sources,
1508 include_directories : includes,
1509 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001510 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001511 dependencies : [threads],
1512 install_rpath : rootlibexecdir,
1513 install : true)
1514public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001515
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001516exe = executable('journalctl',
1517 journalctl_sources,
1518 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001519 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001520 dependencies : [threads,
1521 libqrencode,
1522 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001523 liblz4,
1524 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001525 install_rpath : rootlibexecdir,
1526 install : true,
1527 install_dir : rootbindir)
1528public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001529
1530executable('systemd-getty-generator',
1531 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001532 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001533 link_with : [libshared],
1534 install_rpath : rootlibexecdir,
1535 install : true,
1536 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001537
1538executable('systemd-debug-generator',
1539 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001540 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001541 link_with : [libshared],
1542 install_rpath : rootlibexecdir,
1543 install : true,
1544 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001545
1546executable('systemd-fstab-generator',
1547 'src/fstab-generator/fstab-generator.c',
1548 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001549 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001550 link_with : [libshared],
1551 install_rpath : rootlibexecdir,
1552 install : true,
1553 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001554
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001555if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001556 executable('30-systemd-environment-d-generator',
1557 'src/environment-d-generator/environment-d-generator.c',
1558 include_directories : includes,
1559 link_with : [libshared],
1560 install_rpath : rootlibexecdir,
1561 install : true,
1562 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001563
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001564 meson.add_install_script(meson_make_symlink,
1565 join_paths(sysconfdir, 'environment'),
1566 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001567endif
1568
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001569if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001570 executable('systemd-hibernate-resume-generator',
1571 'src/hibernate-resume/hibernate-resume-generator.c',
1572 include_directories : includes,
1573 link_with : [libshared],
1574 install_rpath : rootlibexecdir,
1575 install : true,
1576 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001577
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001578 executable('systemd-hibernate-resume',
1579 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001580 include_directories : includes,
1581 link_with : [libshared],
1582 install_rpath : rootlibexecdir,
1583 install : true,
1584 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001585endif
1586
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001587if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001588 executable('systemd-gpt-auto-generator',
1589 'src/gpt-auto-generator/gpt-auto-generator.c',
1590 'src/basic/blkid-util.h',
1591 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001592 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001593 dependencies : libblkid,
1594 install_rpath : rootlibexecdir,
1595 install : true,
1596 install_dir : systemgeneratordir)
1597
1598 exe = executable('systemd-dissect',
1599 'src/dissect/dissect.c',
1600 include_directories : includes,
1601 link_with : [libshared],
1602 install_rpath : rootlibexecdir,
1603 install : true,
1604 install_dir : rootlibexecdir)
1605 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001606endif
1607
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001608if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001609 executable('systemd-resolved',
1610 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001611 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001612 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001613 libbasic_gcrypt,
1614 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001615 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001616 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001617 libm,
1618 libidn],
1619 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001620 install : true,
1621 install_dir : rootlibexecdir)
1622
1623 exe = executable('systemd-resolve',
1624 systemd_resolve_sources,
1625 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001626 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001627 libbasic_gcrypt,
1628 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001629 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001630 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001631 libm,
1632 libidn],
1633 install_rpath : rootlibexecdir,
1634 install : true)
1635 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001636endif
1637
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001638if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001639 executable('systemd-logind',
1640 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001641 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001642 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001643 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001644 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001645 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001646 install_rpath : rootlibexecdir,
1647 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001648 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001649
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001650 exe = executable('loginctl',
1651 loginctl_sources,
1652 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001653 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001654 dependencies : [threads,
1655 liblz4,
1656 libxz],
1657 install_rpath : rootlibexecdir,
1658 install : true,
1659 install_dir : rootbindir)
1660 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001661
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001662 exe = executable('systemd-inhibit',
1663 'src/login/inhibit.c',
1664 include_directories : includes,
1665 link_with : [libshared],
1666 install_rpath : rootlibexecdir,
1667 install : true,
1668 install_dir : rootbindir)
1669 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001670
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001671 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001672 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1673 pam_systemd = shared_library(
1674 'pam_systemd',
1675 pam_systemd_c,
1676 name_prefix : '',
1677 include_directories : includes,
1678 link_args : ['-shared',
1679 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001680 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001681 libshared_static],
1682 dependencies : [threads,
1683 libpam,
1684 libpam_misc],
1685 link_depends : pam_systemd_sym,
1686 install : true,
1687 install_dir : pamlibdir)
1688
1689 test('dlopen-pam_systemd',
1690 test_dlopen,
1691 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1692 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001693endif
1694
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001695if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001696 executable('systemd-user-sessions',
1697 'src/user-sessions/user-sessions.c',
1698 include_directories : includes,
1699 link_with : [libshared],
1700 install_rpath : rootlibexecdir,
1701 install : true,
1702 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001703endif
1704
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001705if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001706 exe = executable('bootctl',
1707 'src/boot/bootctl.c',
1708 include_directories : includes,
1709 link_with : [libshared],
1710 dependencies : [libblkid],
1711 install_rpath : rootlibexecdir,
1712 install : true)
1713 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001714endif
1715
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001716exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1717 include_directories : includes,
1718 link_with : [libshared],
1719 dependencies : [threads],
1720 install_rpath : rootlibexecdir,
1721 install : true)
1722public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001723
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001724exe = executable('systemctl', 'src/systemctl/systemctl.c',
1725 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001726 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001727 dependencies : [threads,
1728 libcap,
1729 libselinux,
1730 libxz,
1731 liblz4],
1732 install_rpath : rootlibexecdir,
1733 install : true,
1734 install_dir : rootbindir)
1735public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001736
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001737foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1738 meson.add_install_script(meson_make_symlink,
1739 join_paths(rootbindir, 'systemctl'),
1740 join_paths(rootsbindir, alias))
1741endforeach
1742
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001743if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001744 executable('systemd-backlight',
1745 'src/backlight/backlight.c',
1746 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001747 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001748 install_rpath : rootlibexecdir,
1749 install : true,
1750 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001751endif
1752
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001753if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001754 executable('systemd-rfkill',
1755 'src/rfkill/rfkill.c',
1756 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001757 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001758 install_rpath : rootlibexecdir,
1759 install : true,
1760 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001761endif
1762
1763executable('systemd-system-update-generator',
1764 'src/system-update-generator/system-update-generator.c',
1765 include_directories : includes,
1766 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001767 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001768 install : true,
1769 install_dir : systemgeneratordir)
1770
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001771if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001772 executable('systemd-cryptsetup',
1773 'src/cryptsetup/cryptsetup.c',
1774 include_directories : includes,
1775 link_with : [libshared],
1776 dependencies : [libcryptsetup],
1777 install_rpath : rootlibexecdir,
1778 install : true,
1779 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001780
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001781 executable('systemd-cryptsetup-generator',
1782 'src/cryptsetup/cryptsetup-generator.c',
1783 include_directories : includes,
1784 link_with : [libshared],
1785 dependencies : [libcryptsetup],
1786 install_rpath : rootlibexecdir,
1787 install : true,
1788 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001789
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001790 executable('systemd-veritysetup',
1791 'src/veritysetup/veritysetup.c',
1792 include_directories : includes,
1793 link_with : [libshared],
1794 dependencies : [libcryptsetup],
1795 install_rpath : rootlibexecdir,
1796 install : true,
1797 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001798
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001799 executable('systemd-veritysetup-generator',
1800 'src/veritysetup/veritysetup-generator.c',
1801 include_directories : includes,
1802 link_with : [libshared],
1803 dependencies : [libcryptsetup],
1804 install_rpath : rootlibexecdir,
1805 install : true,
1806 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001807endif
1808
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001809if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001810 executable('systemd-sysv-generator',
1811 'src/sysv-generator/sysv-generator.c',
1812 include_directories : includes,
1813 link_with : [libshared],
1814 install_rpath : rootlibexecdir,
1815 install : true,
1816 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001817
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001818 executable('systemd-rc-local-generator',
1819 'src/rc-local-generator/rc-local-generator.c',
1820 include_directories : includes,
1821 link_with : [libshared],
1822 install_rpath : rootlibexecdir,
1823 install : true,
1824 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001825endif
1826
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001827if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001828 executable('systemd-hostnamed',
1829 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001830 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001831 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001832 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001833 install : true,
1834 install_dir : rootlibexecdir)
1835
1836 exe = executable('hostnamectl',
1837 'src/hostname/hostnamectl.c',
1838 include_directories : includes,
1839 link_with : [libshared],
1840 install_rpath : rootlibexecdir,
1841 install : true)
1842 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001843endif
1844
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001845if conf.get('ENABLE_LOCALED') == 1
1846 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001847 # logind will load libxkbcommon.so dynamically on its own
1848 deps = [libdl]
1849 else
1850 deps = []
1851 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001852
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001853 executable('systemd-localed',
1854 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001855 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001856 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001857 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001858 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001859 install : true,
1860 install_dir : rootlibexecdir)
1861
1862 exe = executable('localectl',
1863 localectl_sources,
1864 include_directories : includes,
1865 link_with : [libshared],
1866 install_rpath : rootlibexecdir,
1867 install : true)
1868 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001869endif
1870
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001871if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001872 executable('systemd-timedated',
1873 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001874 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001875 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001876 install_rpath : rootlibexecdir,
1877 install : true,
1878 install_dir : rootlibexecdir)
1879
1880 exe = executable('timedatectl',
1881 'src/timedate/timedatectl.c',
1882 include_directories : includes,
1883 install_rpath : rootlibexecdir,
1884 link_with : [libshared],
1885 install : true)
1886 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001887endif
1888
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001889if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001890 executable('systemd-timesyncd',
1891 systemd_timesyncd_sources,
1892 include_directories : includes,
1893 link_with : [libshared],
1894 dependencies : [threads,
1895 libm],
1896 install_rpath : rootlibexecdir,
1897 install : true,
1898 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001899endif
1900
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001901if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001902 executable('systemd-machined',
1903 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001904 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001905 link_with : [libmachine_core,
1906 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001907 install_rpath : rootlibexecdir,
1908 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001909 install_dir : rootlibexecdir)
1910
1911 exe = executable('machinectl',
1912 'src/machine/machinectl.c',
1913 include_directories : includes,
1914 link_with : [libshared],
1915 dependencies : [threads,
1916 libxz,
1917 liblz4],
1918 install_rpath : rootlibexecdir,
1919 install : true,
1920 install_dir : rootbindir)
1921 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001922endif
1923
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001924if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001925 executable('systemd-importd',
1926 systemd_importd_sources,
1927 include_directories : includes,
1928 link_with : [libshared],
1929 dependencies : [threads],
1930 install_rpath : rootlibexecdir,
1931 install : true,
1932 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001933
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001934 systemd_pull = executable('systemd-pull',
1935 systemd_pull_sources,
1936 include_directories : includes,
1937 link_with : [libshared],
1938 dependencies : [libcurl,
1939 libz,
1940 libbzip2,
1941 libxz,
1942 libgcrypt],
1943 install_rpath : rootlibexecdir,
1944 install : true,
1945 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001946
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001947 systemd_import = executable('systemd-import',
1948 systemd_import_sources,
1949 include_directories : includes,
1950 link_with : [libshared],
1951 dependencies : [libcurl,
1952 libz,
1953 libbzip2,
1954 libxz],
1955 install_rpath : rootlibexecdir,
1956 install : true,
1957 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001958
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001959 systemd_export = executable('systemd-export',
1960 systemd_export_sources,
1961 include_directories : includes,
1962 link_with : [libshared],
1963 dependencies : [libcurl,
1964 libz,
1965 libbzip2,
1966 libxz],
1967 install_rpath : rootlibexecdir,
1968 install : true,
1969 install_dir : rootlibexecdir)
1970 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001971endif
1972
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001973if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001974 exe = executable('systemd-journal-upload',
1975 systemd_journal_upload_sources,
1976 include_directories : includes,
1977 link_with : [libshared],
1978 dependencies : [threads,
1979 libcurl,
1980 libgnutls,
1981 libxz,
1982 liblz4],
1983 install_rpath : rootlibexecdir,
1984 install : true,
1985 install_dir : rootlibexecdir)
1986 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001987endif
1988
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001989if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001990 s_j_remote = executable('systemd-journal-remote',
1991 systemd_journal_remote_sources,
1992 include_directories : includes,
1993 link_with : [libshared],
1994 dependencies : [threads,
1995 libmicrohttpd,
1996 libgnutls,
1997 libxz,
1998 liblz4],
1999 install_rpath : rootlibexecdir,
2000 install : true,
2001 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002002
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002003 s_j_gatewayd = executable('systemd-journal-gatewayd',
2004 systemd_journal_gatewayd_sources,
2005 include_directories : includes,
2006 link_with : [libshared],
2007 dependencies : [threads,
2008 libmicrohttpd,
2009 libgnutls,
2010 libxz,
2011 liblz4],
2012 install_rpath : rootlibexecdir,
2013 install : true,
2014 install_dir : rootlibexecdir)
2015 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002016endif
2017
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002018if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002019 executable('systemd-coredump',
2020 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002021 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002022 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002023 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002024 libacl,
2025 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002026 libxz,
2027 liblz4],
2028 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002029 install : true,
2030 install_dir : rootlibexecdir)
2031
2032 exe = executable('coredumpctl',
2033 coredumpctl_sources,
2034 include_directories : includes,
2035 link_with : [libshared],
2036 dependencies : [threads,
2037 libxz,
2038 liblz4],
2039 install_rpath : rootlibexecdir,
2040 install : true)
2041 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002042endif
2043
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002044if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002045 exe = executable('systemd-binfmt',
2046 'src/binfmt/binfmt.c',
2047 include_directories : includes,
2048 link_with : [libshared],
2049 install_rpath : rootlibexecdir,
2050 install : true,
2051 install_dir : rootlibexecdir)
2052 public_programs += [exe]
2053
2054 meson.add_install_script('sh', '-c',
2055 mkdir_p.format(binfmtdir))
2056 meson.add_install_script('sh', '-c',
2057 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2058endif
2059
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002060if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002061 executable('systemd-vconsole-setup',
2062 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002063 include_directories : includes,
2064 link_with : [libshared],
2065 install_rpath : rootlibexecdir,
2066 install : true,
2067 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002068endif
2069
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002070if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002071 executable('systemd-random-seed',
2072 'src/random-seed/random-seed.c',
2073 include_directories : includes,
2074 link_with : [libshared],
2075 install_rpath : rootlibexecdir,
2076 install : true,
2077 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002078endif
2079
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002080if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002081 executable('systemd-firstboot',
2082 'src/firstboot/firstboot.c',
2083 include_directories : includes,
2084 link_with : [libshared],
2085 dependencies : [libcrypt],
2086 install_rpath : rootlibexecdir,
2087 install : true,
2088 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002089endif
2090
2091executable('systemd-remount-fs',
2092 'src/remount-fs/remount-fs.c',
2093 'src/core/mount-setup.c',
2094 'src/core/mount-setup.h',
2095 include_directories : includes,
2096 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002097 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002098 install : true,
2099 install_dir : rootlibexecdir)
2100
2101executable('systemd-machine-id-setup',
2102 'src/machine-id-setup/machine-id-setup-main.c',
2103 'src/core/machine-id-setup.c',
2104 'src/core/machine-id-setup.h',
2105 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002106 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002107 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002108 install : true,
2109 install_dir : rootbindir)
2110
2111executable('systemd-fsck',
2112 'src/fsck/fsck.c',
2113 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002114 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002115 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002116 install : true,
2117 install_dir : rootlibexecdir)
2118
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002119executable('systemd-growfs',
2120 'src/partition/growfs.c',
2121 include_directories : includes,
2122 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002123 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002124 install_rpath : rootlibexecdir,
2125 install : true,
2126 install_dir : rootlibexecdir)
2127
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002128executable('systemd-makefs',
2129 'src/partition/makefs.c',
2130 include_directories : includes,
2131 link_with : [libshared],
2132 install_rpath : rootlibexecdir,
2133 install : true,
2134 install_dir : rootlibexecdir)
2135
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002136executable('systemd-sleep',
2137 'src/sleep/sleep.c',
2138 include_directories : includes,
2139 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002140 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002141 install : true,
2142 install_dir : rootlibexecdir)
2143
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002144exe = executable('systemd-sysctl',
2145 'src/sysctl/sysctl.c',
2146 include_directories : includes,
2147 link_with : [libshared],
2148 install_rpath : rootlibexecdir,
2149 install : true,
2150 install_dir : rootlibexecdir)
2151public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002152
2153executable('systemd-ac-power',
2154 'src/ac-power/ac-power.c',
2155 include_directories : includes,
2156 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002157 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002158 install : true,
2159 install_dir : rootlibexecdir)
2160
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002161exe = executable('systemd-detect-virt',
2162 'src/detect-virt/detect-virt.c',
2163 include_directories : includes,
2164 link_with : [libshared],
2165 install_rpath : rootlibexecdir,
2166 install : true)
2167public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002168
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002169exe = executable('systemd-delta',
2170 'src/delta/delta.c',
2171 include_directories : includes,
2172 link_with : [libshared],
2173 install_rpath : rootlibexecdir,
2174 install : true)
2175public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002176
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002177exe = executable('systemd-escape',
2178 'src/escape/escape.c',
2179 include_directories : includes,
2180 link_with : [libshared],
2181 install_rpath : rootlibexecdir,
2182 install : true,
2183 install_dir : rootbindir)
2184public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002185
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002186exe = executable('systemd-notify',
2187 'src/notify/notify.c',
2188 include_directories : includes,
2189 link_with : [libshared],
2190 install_rpath : rootlibexecdir,
2191 install : true,
2192 install_dir : rootbindir)
2193public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002194
2195executable('systemd-volatile-root',
2196 'src/volatile-root/volatile-root.c',
2197 include_directories : includes,
2198 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002199 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002200 install : true,
2201 install_dir : rootlibexecdir)
2202
2203executable('systemd-cgroups-agent',
2204 'src/cgroups-agent/cgroups-agent.c',
2205 include_directories : includes,
2206 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002207 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002208 install : true,
2209 install_dir : rootlibexecdir)
2210
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002211exe = executable('systemd-path',
2212 'src/path/path.c',
2213 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002214 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002215 install_rpath : rootlibexecdir,
2216 install : true)
2217public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002218
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002219exe = executable('systemd-ask-password',
2220 'src/ask-password/ask-password.c',
2221 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002222 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002223 install_rpath : rootlibexecdir,
2224 install : true,
2225 install_dir : rootbindir)
2226public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002227
2228executable('systemd-reply-password',
2229 'src/reply-password/reply-password.c',
2230 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002231 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002232 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002233 install : true,
2234 install_dir : rootlibexecdir)
2235
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002236exe = executable('systemd-tty-ask-password-agent',
2237 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2238 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002239 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002240 install_rpath : rootlibexecdir,
2241 install : true,
2242 install_dir : rootbindir)
2243public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002244
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002245exe = executable('systemd-cgls',
2246 'src/cgls/cgls.c',
2247 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002248 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002249 install_rpath : rootlibexecdir,
2250 install : true)
2251public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002252
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002253exe = executable('systemd-cgtop',
2254 'src/cgtop/cgtop.c',
2255 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002256 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002257 install_rpath : rootlibexecdir,
2258 install : true)
2259public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002260
2261executable('systemd-initctl',
2262 'src/initctl/initctl.c',
2263 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002264 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002265 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002266 install : true,
2267 install_dir : rootlibexecdir)
2268
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002269exe = executable('systemd-mount',
2270 'src/mount/mount-tool.c',
2271 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002272 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002273 install_rpath : rootlibexecdir,
2274 install : true)
2275public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002276
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002277meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002278 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002279
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002280exe = executable('systemd-run',
2281 'src/run/run.c',
2282 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002283 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002284 install_rpath : rootlibexecdir,
2285 install : true)
2286public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002287
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002288exe = executable('systemd-stdio-bridge',
2289 'src/stdio-bridge/stdio-bridge.c',
2290 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002291 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002292 install_rpath : rootlibexecdir,
2293 install : true)
2294public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002295
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002296exe = executable('busctl',
2297 'src/busctl/busctl.c',
2298 'src/busctl/busctl-introspect.c',
2299 'src/busctl/busctl-introspect.h',
2300 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002301 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002302 install_rpath : rootlibexecdir,
2303 install : true)
2304public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002305
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002306if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002307 exe = executable('systemd-sysusers',
2308 'src/sysusers/sysusers.c',
2309 include_directories : includes,
2310 link_with : [libshared],
2311 install_rpath : rootlibexecdir,
2312 install : true,
2313 install_dir : rootbindir)
2314 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002315endif
2316
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002317if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002318 exe = executable('systemd-tmpfiles',
2319 'src/tmpfiles/tmpfiles.c',
2320 include_directories : includes,
2321 link_with : [libshared],
2322 dependencies : [libacl],
2323 install_rpath : rootlibexecdir,
2324 install : true,
2325 install_dir : rootbindir)
2326 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002327
2328 test('test-systemd-tmpfiles',
2329 test_systemd_tmpfiles_py,
2330 args : exe.full_path())
2331 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002332endif
2333
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002334if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002335 exe = executable('systemd-hwdb',
2336 'src/hwdb/hwdb.c',
2337 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2338 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002339 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002340 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002341 install : true,
2342 install_dir : rootbindir)
2343 public_programs += [exe]
2344endif
2345
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002346if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002347 executable('systemd-quotacheck',
2348 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002349 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002350 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002351 install_rpath : rootlibexecdir,
2352 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002353 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002354endif
2355
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002356exe = executable('systemd-socket-proxyd',
2357 'src/socket-proxy/socket-proxyd.c',
2358 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002359 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002360 dependencies : [threads],
2361 install_rpath : rootlibexecdir,
2362 install : true,
2363 install_dir : rootlibexecdir)
2364public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002365
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002366exe = executable('systemd-udevd',
2367 systemd_udevd_sources,
2368 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002369 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002370 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002371 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002372 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002373 dependencies : [threads,
2374 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002375 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002376 libacl,
2377 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002378 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002379 install : true,
2380 install_dir : rootlibexecdir)
2381public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002382
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002383exe = executable('udevadm',
2384 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002385 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002386 include_directories : includes,
2387 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002388 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002389 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002390 dependencies : [threads,
2391 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002392 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002393 libacl,
2394 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002395 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002396 install : true,
2397 install_dir : rootbindir)
2398public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002399
2400executable('systemd-shutdown',
2401 systemd_shutdown_sources,
2402 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002403 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002404 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002405 install : true,
2406 install_dir : rootlibexecdir)
2407
2408executable('systemd-update-done',
2409 'src/update-done/update-done.c',
2410 include_directories : includes,
2411 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002412 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002413 install : true,
2414 install_dir : rootlibexecdir)
2415
2416executable('systemd-update-utmp',
2417 'src/update-utmp/update-utmp.c',
2418 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002419 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002420 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002421 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002422 install : true,
2423 install_dir : rootlibexecdir)
2424
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002425if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002426 executable('systemd-modules-load',
2427 'src/modules-load/modules-load.c',
2428 include_directories : includes,
2429 link_with : [libshared],
2430 dependencies : [libkmod],
2431 install_rpath : rootlibexecdir,
2432 install : true,
2433 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002434
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002435 meson.add_install_script('sh', '-c',
2436 mkdir_p.format(modulesloaddir))
2437 meson.add_install_script('sh', '-c',
2438 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002439endif
2440
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002441exe = executable('systemd-nspawn',
2442 systemd_nspawn_sources,
2443 'src/core/mount-setup.c', # FIXME: use a variable?
2444 'src/core/mount-setup.h',
2445 'src/core/loopback-setup.c',
2446 'src/core/loopback-setup.h',
2447 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002448 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002449 dependencies : [libacl,
2450 libblkid,
2451 libseccomp,
2452 libselinux],
2453 install_rpath : rootlibexecdir,
2454 install : true)
2455public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002456
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002457if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002458 executable('systemd-networkd',
2459 systemd_networkd_sources,
2460 include_directories : includes,
2461 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002462 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002463 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002464 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002465 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002466 install_rpath : rootlibexecdir,
2467 install : true,
2468 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002469
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002470 executable('systemd-networkd-wait-online',
2471 systemd_networkd_wait_online_sources,
2472 include_directories : includes,
2473 link_with : [libnetworkd_core,
2474 libshared],
2475 install_rpath : rootlibexecdir,
2476 install : true,
2477 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002478
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002479 exe = executable('networkctl',
2480 networkctl_sources,
2481 include_directories : includes,
2482 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002483 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002484 install_rpath : rootlibexecdir,
2485 install : true,
2486 install_dir : rootbindir)
2487 public_programs += [exe]
2488endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002489
2490executable('systemd-sulogin-shell',
2491 ['src/sulogin-shell/sulogin-shell.c'],
2492 include_directories : includes,
2493 link_with : [libshared],
2494 install_rpath : rootlibexecdir,
2495 install : true,
2496 install_dir : rootlibexecdir)
2497
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002498############################################################
2499
2500foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002501 sources = tuple[0]
2502 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2503 dependencies = tuple[2]
2504 condition = tuple.length() >= 4 ? tuple[3] : ''
2505 type = tuple.length() >= 5 ? tuple[4] : ''
2506 defs = tuple.length() >= 6 ? tuple[5] : []
2507 incs = tuple.length() >= 7 ? tuple[6] : includes
2508 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002509
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002510 name = sources[0].split('/')[-1].split('.')[0]
2511 if type.startswith('timeout=')
2512 timeout = type.split('=')[1].to_int()
2513 type = ''
2514 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002515 if want_tests == 'false'
2516 message('Not compiling @0@ because tests is set to false'.format(name))
2517 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002518 exe = executable(
2519 name,
2520 sources,
2521 include_directories : incs,
2522 link_with : link_with,
2523 dependencies : dependencies,
2524 c_args : defs,
2525 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002526 install : install_tests,
2527 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002528
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002529 if type == 'manual'
2530 message('@0@ is a manual test'.format(name))
2531 elif type == 'unsafe' and want_tests != 'unsafe'
2532 message('@0@ is an unsafe test'.format(name))
2533 else
2534 test(name, exe,
2535 env : test_env,
2536 timeout : timeout)
2537 endif
2538 else
2539 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2540 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002541endforeach
2542
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002543test_libsystemd_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002544 'test-libsystemd-sym',
2545 test_libsystemd_sym_c,
2546 include_directories : includes,
2547 link_with : [libsystemd],
2548 install : install_tests,
2549 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002550test('test-libsystemd-sym',
2551 test_libsystemd_sym)
2552
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002553test_libudev_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002554 'test-libudev-sym',
2555 test_libudev_sym_c,
2556 include_directories : includes,
2557 c_args : ['-Wno-deprecated-declarations'],
2558 link_with : [libudev],
2559 install : install_tests,
2560 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002561test('test-libudev-sym',
2562 test_libudev_sym)
2563
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002564############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002565
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002566fuzzer_exes = []
2567
2568foreach tuple : fuzzers
2569 sources = tuple[0]
2570 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2571 dependencies = tuple[2]
2572 defs = tuple.length() >= 4 ? tuple[3] : []
2573 incs = tuple.length() >= 5 ? tuple[4] : includes
2574
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002575 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002576 dependencies += fuzzing_engine
2577 else
2578 sources += 'src/fuzz/fuzz-main.c'
2579 endif
2580
2581 name = sources[0].split('/')[-1].split('.')[0]
2582
2583 fuzzer_exes += executable(
2584 name,
2585 sources,
2586 include_directories : [incs, include_directories('src/fuzz')],
2587 link_with : link_with,
2588 dependencies : dependencies,
2589 c_args : defs,
2590 install : false)
2591endforeach
2592
2593run_target('fuzzers',
2594 depends : fuzzer_exes,
2595 command : ['true'])
2596
2597############################################################
2598
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002599make_directive_index_py = find_program('tools/make-directive-index.py')
2600make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002601xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002602hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002603
2604subdir('units')
2605subdir('sysctl.d')
2606subdir('sysusers.d')
2607subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002608subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002609subdir('hwdb')
2610subdir('network')
2611subdir('man')
2612subdir('shell-completion/bash')
2613subdir('shell-completion/zsh')
2614subdir('docs/sysvinit')
2615subdir('docs/var-log')
2616
2617# FIXME: figure out if the warning is true:
2618# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2619install_subdir('factory/etc',
2620 install_dir : factorydir)
2621
2622
2623install_data('xorg/50-systemd-user.sh',
2624 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002625install_data('modprobe.d/systemd.conf',
2626 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002627install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002628 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002629 'NEWS',
2630 'README',
2631 'doc/CODING_STYLE',
2632 'doc/DISTRO_PORTING',
2633 'doc/ENVIRONMENT.md',
2634 'doc/HACKING',
2635 'doc/TRANSIENT-SETTINGS.md',
2636 'doc/TRANSLATORS',
2637 'doc/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002638 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2639 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002640
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002641meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2642meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2643
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002644############################################################
2645
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002646meson_check_help = find_program('tools/meson-check-help.sh')
2647
2648foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002649 name = exec.full_path().split('/')[-1]
2650 test('check-help-' + name,
2651 meson_check_help,
2652 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002653endforeach
2654
2655############################################################
2656
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002657prev = ''
2658foreach p : fuzz_regression_tests
2659 a = p.split('/')[-3]
2660 b = p.split('/')[-2]
2661 c = p.split('/')[-1]
2662
2663 if a == 'address'
2664 build = sanitize_address
2665 else
2666 error('unknown sanitizer @0@'.format(a))
2667 endif
2668
2669 name = '@1@:@0@'.format(a, b)
2670
2671 if name != prev
2672 if want_tests == 'false'
2673 message('Not compiling @0@ because tests is set to false'.format(name))
2674 elif not sanitizers.contains(a)
2675 message('Not compiling @0@ because @1@ sanitizer is not available'.format(name, a))
2676 elif slow_tests
2677 exe = custom_target(
2678 name,
2679 output : name,
2680 depends : build,
2681 command : [env, 'ln', '-fs',
2682 join_paths(build.full_path(), b),
2683 '@OUTPUT@'],
2684 build_by_default : true)
2685 else
2686 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2687 endif
2688 endif
2689 prev = name
2690
2691 if want_tests != 'false' and slow_tests
2692 test(c, env, args : [exe.full_path(),
2693 join_paths(meson.source_root(),
2694 'test/fuzz-regressions',
2695 p)])
2696 endif
2697endforeach
2698
2699############################################################
2700
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002701if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002702 all_files = run_command(
2703 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002704 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002705 'ls-files',
2706 ':/*.[ch]'])
2707 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002708
userwithuide85a6902017-08-09 13:41:44 +00002709 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002710 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002711 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002712 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002713 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002714 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002715 output : 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002716 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002717endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002718
2719if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002720 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002721 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002722 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002723 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002724endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002725
2726if git.found()
2727 git_head = run_command(
2728 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002729 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002730 'rev-parse', 'HEAD']).stdout().strip()
2731 git_head_short = run_command(
2732 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002733 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002734 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2735
2736 run_target(
2737 'git-snapshot',
2738 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002739 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002740 git_head_short),
2741 '--prefix', 'systemd-@0@/'.format(git_head),
2742 'HEAD'])
2743endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002744
2745############################################################
2746
Lennart Poettering51b13862017-12-20 12:51:14 +01002747meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2748run_target(
2749 'check-api-docs',
2750 depends : [man, libsystemd, libudev],
2751 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2752
2753############################################################
2754
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002755status = [
2756 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2757
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002758 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002759 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002760 'prefix directory: @0@'.format(prefixdir),
2761 'rootprefix directory: @0@'.format(rootprefixdir),
2762 'sysconf directory: @0@'.format(sysconfdir),
2763 'include directory: @0@'.format(includedir),
2764 'lib directory: @0@'.format(libdir),
2765 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002766 'SysV init scripts: @0@'.format(sysvinit_path),
2767 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002768 'PAM modules directory: @0@'.format(pamlibdir),
2769 'PAM configuration directory: @0@'.format(pamconfdir),
2770 'RPM macros directory: @0@'.format(rpmmacrosdir),
2771 'modprobe.d directory: @0@'.format(modprobedir),
2772 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2773 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2774 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2775 'bash completions directory: @0@'.format(bashcompletiondir),
2776 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002777 'extra start script: @0@'.format(get_option('rc-local')),
2778 'extra stop script: @0@'.format(get_option('halt-local')),
2779 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2780 get_option('debug-tty')),
2781 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002782 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002783 'maximum system UID: @0@'.format(system_uid_max),
2784 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002785 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2786 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2787 'minimum container UID base: @0@'.format(container_uid_base_min),
2788 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002789 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002790 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002791 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002792 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002793 'nobody user name: @0@'.format(nobody_user),
2794 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002795 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002796 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002797
2798 'default DNSSEC mode: @0@'.format(default_dnssec),
2799 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2800 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2801
2802alt_dns_servers = '\n '.join(dns_servers.split(' '))
2803alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2804status += [
2805 'default DNS servers: @0@'.format(alt_dns_servers),
2806 'default NTP servers: @0@'.format(alt_ntp_servers)]
2807
2808alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2809 '@@0@'.format(time_epoch)).stdout().strip()
2810status += [
2811 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2812
2813# TODO:
2814# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2815# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2816# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2817
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002818if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002819 status += [
2820 'efi arch: @0@'.format(efi_arch)]
2821
2822 if have_gnu_efi
2823 status += [
2824 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2825 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002826 'EFI lib directory: @0@'.format(efi_libdir),
2827 'EFI lds directory: @0@'.format(efi_ldsdir),
2828 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002829 endif
2830endif
2831
2832found = []
2833missing = []
2834
2835foreach tuple : [
2836 ['libcryptsetup'],
2837 ['PAM'],
2838 ['AUDIT'],
2839 ['IMA'],
2840 ['AppArmor'],
2841 ['SELinux'],
2842 ['SECCOMP'],
2843 ['SMACK'],
2844 ['zlib'],
2845 ['xz'],
2846 ['lz4'],
2847 ['bzip2'],
2848 ['ACL'],
2849 ['gcrypt'],
2850 ['qrencode'],
2851 ['microhttpd'],
2852 ['gnutls'],
2853 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002854 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002855 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002856 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002857 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002858 ['libiptc'],
2859 ['elfutils'],
2860 ['binfmt'],
2861 ['vconsole'],
2862 ['quotacheck'],
2863 ['tmpfiles'],
2864 ['environment.d'],
2865 ['sysusers'],
2866 ['firstboot'],
2867 ['randomseed'],
2868 ['backlight'],
2869 ['rfkill'],
2870 ['logind'],
2871 ['machined'],
2872 ['importd'],
2873 ['hostnamed'],
2874 ['timedated'],
2875 ['timesyncd'],
2876 ['localed'],
2877 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002878 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002879 ['coredump'],
2880 ['polkit'],
2881 ['legacy pkla', install_polkit_pkla],
2882 ['efi'],
2883 ['gnu-efi', have_gnu_efi],
2884 ['kmod'],
2885 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01002886 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002887 ['blkid'],
2888 ['dbus'],
2889 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002890 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002891 ['hwdb'],
2892 ['tpm'],
2893 ['man pages', want_man],
2894 ['html pages', want_html],
2895 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002896 ['SysV compat'],
2897 ['utmp'],
2898 ['ldconfig'],
2899 ['hibernate'],
2900 ['adm group', get_option('adm-group')],
2901 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002902 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002903 ['debug hashmap'],
2904 ['debug mmap cache'],
2905]
2906
2907 cond = tuple.get(1, '')
2908 if cond == ''
2909 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2910 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002911 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002912 endif
2913 if cond
2914 found += [tuple[0]]
2915 else
2916 missing += [tuple[0]]
2917 endif
2918endforeach
2919
2920status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002921 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002922 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002923 '',
2924 'disabled features: @0@'.format(', '.join(missing)),
2925 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002926message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002927
2928if rootprefixdir != rootprefix_default
2929 message('WARNING:\n' +
2930 ' Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2931 ' systemd used fixed names for unit file directories and other paths, so anything\n' +
2932 ' except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
2933endif