blob: 642ccd4491ae3d0cfc826459af98a33e9096de07 [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-Szmek41afb5e2017-04-24 19:28:04 -0400415if get_option('buildtype') != 'debug'
416 foreach arg : ['-ffunction-sections',
417 '-fdata-sections']
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400418 if cc.has_argument(arg,
419 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400420 add_project_arguments(arg, language : 'c')
421 endif
422 endforeach
423
424 foreach arg : ['-Wl,--gc-sections']
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400425 have = run_command(check_compilation_sh,
426 cc.cmd_array(), '-x', 'c', arg,
427 '-include', link_test_c).returncode() == 0
428 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
429 if have
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400430 add_project_link_arguments(arg, language : 'c')
431 endif
432 endforeach
433endif
434
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400435cpp = ' '.join(cc.cmd_array()) + ' -E'
436
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400437#####################################################################
438# compilation result tests
439
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400440conf.set('_GNU_SOURCE', true)
441conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400442
443conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
444conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
445conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
446conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
447conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
448conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
449conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
450
451decl_headers = '''
452#include <uchar.h>
453#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000454#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100455#include <linux/stat.h>
456#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400457'''
458# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
459
460foreach decl : ['char16_t',
461 'char32_t',
462 'key_serial_t',
463 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000464 'struct fib_rule_uid_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100465 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400466 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400467
468 # We get -1 if the size cannot be determined
469 have = cc.sizeof(decl, prefix : decl_headers) > 0
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200470 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400471endforeach
472
473foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
474 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
475 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
476 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530477 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400478 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
479 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
480 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
481 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
482 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530483 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400484 # if_tunnel.h is buggy and cannot be included on its own
485 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
486 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
487 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
488 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
489 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
490 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
491 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530492 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400493 ['NDA_IFINDEX', 'linux/neighbour.h'],
494 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000495 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400496 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530497 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400498 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400499 prefix = decl.length() > 2 ? decl[2] : ''
500 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200501 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400502endforeach
503
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400504foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200505 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400506endforeach
507
508foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100509 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100510 ['gettid', '''#include <sys/types.h>
511 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100512 ['pivot_root', '''#include <stdlib.h>
513 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100514 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400515 #include <sys/stat.h>
516 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100517 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100518 ['renameat2', '''#include <stdio.h>
519 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400520 ['kcmp', '''#include <linux/kcmp.h>'''],
521 ['keyctl', '''#include <sys/types.h>
522 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100523 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400524 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200525 ['bpf', '''#include <sys/syscall.h>
526 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100527 ['statx', '''#include <sys/types.h>
528 #include <sys/stat.h>
529 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100530 ['explicit_bzero' , '''#include <string.h>'''],
531 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400532]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400533
Lennart Poettering85db59b2017-12-25 12:01:14 +0100534 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200535 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400536endforeach
537
Lennart Poettering85db59b2017-12-25 12:01:14 +0100538if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200539 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200540 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400541else
542 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200543 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200544 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400545endif
546
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400547#####################################################################
548
549sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400550awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400551m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400552stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400553git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100554env = find_program('env')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400555
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400556meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400557mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400558test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
559splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400560
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400561# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
562# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500563progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400564 ['quotacheck', '/usr/sbin/quotacheck' ],
565 ['kill', '/usr/bin/kill' ],
566 ['kmod', '/usr/bin/kmod' ],
567 ['kexec', '/usr/sbin/kexec' ],
568 ['sulogin', '/usr/sbin/sulogin' ],
569 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
570 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
571 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
572 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
573 ]
574foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400575 path = get_option(prog[0] + '-path')
576 if path != ''
577 message('Using @1@ for @0@'.format(prog[0], path))
578 else
579 exe = find_program(prog[0],
580 '/usr/sbin/' + prog[0],
581 '/sbin/' + prog[0],
582 required: false)
583 path = exe.found() ? exe.path() : prog[1]
584 endif
585 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
586 conf.set_quoted(name, path)
587 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400588endforeach
589
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500590conf.set_quoted('TELINIT', get_option('telinit-path'))
591
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400592if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100593 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400594endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400595
596############################################################
597
598gperf = find_program('gperf')
599
600gperf_test_format = '''
601#include <string.h>
602const char * in_word_set(const char *, @0@);
603@1@
604'''
605gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
606gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
607gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
608if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400609 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400610else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400611 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
612 if cc.compiles(gperf_test)
613 gperf_len_type = 'unsigned'
614 else
615 error('unable to determine gperf len type')
616 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400617endif
618message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400619conf.set('GPERF_LEN_TYPE', gperf_len_type,
620 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400621
622############################################################
623
624if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400625 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400626endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100627foreach header : ['crypt.h',
628 'linux/btrfs.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400629 'linux/memfd.h',
630 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200631 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400632 'valgrind/memcheck.h',
633 'valgrind/valgrind.h',
634 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400635
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200636 conf.set10('HAVE_' + header.underscorify().to_upper(),
637 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400638endforeach
639
640############################################################
641
642conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400643conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
644gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400645
646default_hierarchy = get_option('default-hierarchy')
647conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
648 description : 'default cgroup hierarchy as string')
649if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400650 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400651elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400652 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400653else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400654 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400655endif
656
657time_epoch = get_option('time-epoch')
658if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400659 NEWS = files('NEWS')
660 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400661endif
662time_epoch = time_epoch.to_int()
663conf.set('TIME_EPOCH', time_epoch)
664
665system_uid_max = get_option('system-uid-max')
666if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400667 system_uid_max = run_command(
668 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800669 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
670 '/etc/login.defs').stdout().strip()
671 if system_uid_max == ''
672 system_uid_max = '999'
673 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400674endif
675system_uid_max = system_uid_max.to_int()
676conf.set('SYSTEM_UID_MAX', system_uid_max)
677substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400678message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400679
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400680system_gid_max = get_option('system-gid-max')
681if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400682 system_gid_max = run_command(
683 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800684 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
685 '/etc/login.defs').stdout().strip()
686 if system_gid_max == ''
687 system_gid_max = '999'
688 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400689endif
690system_gid_max = system_gid_max.to_int()
691conf.set('SYSTEM_GID_MAX', system_gid_max)
692substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400693message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400694
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100695dynamic_uid_min = get_option('dynamic-uid-min').to_int()
696dynamic_uid_max = get_option('dynamic-uid-max').to_int()
697conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
698conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
699substs.set('dynamicuidmin', dynamic_uid_min)
700substs.set('dynamicuidmax', dynamic_uid_max)
701
702container_uid_base_min = get_option('container-uid-base-min').to_int()
703container_uid_base_max = get_option('container-uid-base-max').to_int()
704conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
705conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
706substs.set('containeruidbasemin', container_uid_base_min)
707substs.set('containeruidbasemax', container_uid_base_max)
708
Lennart Poetteringafde4572017-12-05 11:00:24 +0100709nobody_user = get_option('nobody-user')
710nobody_group = get_option('nobody-group')
711
712getent_result = run_command('getent', 'passwd', '65534')
713if getent_result.returncode() == 0
714 name = getent_result.stdout().split(':')[0]
715 if name != nobody_user
716 message('WARNING:\n' +
717 ' 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) +
718 ' Your build will result in an user table setup that is incompatible with the local system.')
719 endif
720endif
721id_result = run_command('id', '-u', nobody_user)
722if id_result.returncode() == 0
723 id = id_result.stdout().to_int()
724 if id != 65534
725 message('WARNING:\n' +
726 ' 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) +
727 ' Your build will result in an user table setup that is incompatible with the local system.')
728 endif
729endif
730
731getent_result = run_command('getent', 'group', '65534')
732if getent_result.returncode() == 0
733 name = getent_result.stdout().split(':')[0]
734 if name != nobody_group
735 message('WARNING:\n' +
736 ' 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) +
737 ' Your build will result in an group table setup that is incompatible with the local system.')
738 endif
739endif
740id_result = run_command('id', '-g', nobody_group)
741if id_result.returncode() == 0
742 id = id_result.stdout().to_int()
743 if id != 65534
744 message('WARNING:\n' +
745 ' 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) +
746 ' Your build will result in an group table setup that is incompatible with the local system.')
747 endif
748endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900749if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
750 message('WARNING:\n' +
751 ' The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
752 ' Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
753endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100754
755conf.set_quoted('NOBODY_USER_NAME', nobody_user)
756conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900757substs.set('NOBODY_USER_NAME', nobody_user)
758substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100759
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400760tty_gid = get_option('tty-gid')
761conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400762substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400763
Ikey Doherty84786b82017-12-03 12:28:23 +0000764# Ensure provided GID argument is numeric, otherwise fallback to default assignment
765if get_option('users-gid') != ''
Yu Watanabed6806872017-12-05 14:01:39 +0900766 users_gid = get_option('users-gid').to_int()
Ikey Doherty84786b82017-12-03 12:28:23 +0000767else
Yu Watanabed6806872017-12-05 14:01:39 +0900768 users_gid = '-'
Ikey Doherty84786b82017-12-03 12:28:23 +0000769endif
770substs.set('USERS_GID', users_gid)
771
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400772if get_option('adm-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400773 m4_defines += ['-DENABLE_ADM_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400774endif
775
776if get_option('wheel-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400777 m4_defines += ['-DENABLE_WHEEL_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400778endif
779
780substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700781substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400782
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400783kill_user_processes = get_option('default-kill-user-processes')
784conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100785conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400786substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400787
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400788dns_servers = get_option('dns-servers')
789conf.set_quoted('DNS_SERVERS', dns_servers)
790substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400791
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400792ntp_servers = get_option('ntp-servers')
793conf.set_quoted('NTP_SERVERS', ntp_servers)
794substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400795
796conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
797
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400798substs.set('SUSHELL', get_option('debug-shell'))
799substs.set('DEBUGTTY', get_option('debug-tty'))
800
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400801debug = get_option('debug')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200802enable_debug_hashmap = false
803enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400804if debug != ''
805 foreach name : debug.split(',')
806 if name == 'hashmap'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200807 enable_debug_hashmap = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400808 elif name == 'mmap-cache'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200809 enable_debug_mmap_cache = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400810 else
811 message('unknown debug option "@0@", ignoring'.format(name))
812 endif
813 endforeach
814endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200815conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
816conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400817
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400818#####################################################################
819
820threads = dependency('threads')
821librt = cc.find_library('rt')
822libm = cc.find_library('m')
823libdl = cc.find_library('dl')
824libcrypt = cc.find_library('crypt')
825
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400826libcap = dependency('libcap', required : false)
827if not libcap.found()
828 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
829 libcap = cc.find_library('cap')
830endif
831
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400832libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100833 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400834
835want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500836if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400837 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400838 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400839 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200840 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400841else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200842 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400843 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400844endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200845conf.set10('HAVE_SECCOMP', have)
846m4_defines += have ? ['-DHAVE_SECCOMP'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400847
848want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500849if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400850 libselinux = dependency('libselinux',
851 version : '>= 2.1.9',
852 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200853 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400854else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200855 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400856 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400857endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200858conf.set10('HAVE_SELINUX', have)
859m4_defines += have ? ['-DHAVE_SELINUX'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400860
861want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500862if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400863 libapparmor = dependency('libapparmor',
864 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200865 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400866else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200867 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400868 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400869endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200870conf.set10('HAVE_APPARMOR', have)
871m4_defines += have ? ['-DHAVE_APPARMOR'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400872
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400873smack_run_label = get_option('smack-run-label')
874if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400875 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
876 m4_defines += ['-DHAVE_SMACK_RUN_LABEL']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400877endif
878
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400879want_polkit = get_option('polkit')
880install_polkit = false
881install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500882if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400883 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400884
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400885 libpolkit = dependency('polkit-gobject-1',
886 required : false)
887 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
888 message('Old polkit detected, will install pkla files')
889 install_polkit_pkla = true
890 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400891endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200892conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400893
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400894want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500895if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400896 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200897 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400898else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200899 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400900 libacl = []
901endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200902conf.set10('HAVE_ACL', have)
903m4_defines += have ? ['-DHAVE_ACL'] : []
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400904
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400905want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500906if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400907 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200908 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400909else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200910 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400911 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400912endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200913conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400914
915want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500916if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400917 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200918 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400919else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200920 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400921 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400922endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200923conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400924
925want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500926if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400927 libkmod = dependency('libkmod',
928 version : '>= 15',
929 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200930 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400931else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200932 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400933 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400934endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200935conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400936
937want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500938if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400939 libpam = cc.find_library('pam', required : want_pam == 'true')
940 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200941 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400942else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200943 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400944 libpam = []
945 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400946endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200947conf.set10('HAVE_PAM', have)
948m4_defines += have ? ['-DHAVE_PAM'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400949
950want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500951if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400952 libmicrohttpd = dependency('libmicrohttpd',
953 version : '>= 0.9.33',
954 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200955 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400956else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200957 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400958 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400959endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200960conf.set10('HAVE_MICROHTTPD', have)
961m4_defines += have ? ['-DHAVE_MICROHTTPD'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400962
963want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500964if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400965 libcryptsetup = dependency('libcryptsetup',
966 version : '>= 1.6.0',
967 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200968 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400969else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200970 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400971 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400972endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200973conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400974
975want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500976if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400977 libcurl = dependency('libcurl',
978 version : '>= 7.32.0',
979 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200980 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400981else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200982 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400983 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400984endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200985conf.set10('HAVE_LIBCURL', have)
986m4_defines += have ? ['-DHAVE_LIBCURL'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400987
988want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400989want_libidn2 = get_option('libidn2')
990if want_libidn == 'true' and want_libidn2 == 'true'
991 error('libidn and libidn2 cannot be requested simultaneously')
992endif
993
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500994if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400995 libidn = dependency('libidn',
996 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200997 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400998else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200999 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001000 libidn = []
1001endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001002conf.set10('HAVE_LIBIDN', have)
1003m4_defines += have ? ['-DHAVE_LIBIDN'] : []
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001004if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001005 # libidn is used for both libidn and libidn2 objects
1006 libidn = dependency('libidn2',
1007 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001008 have = libidn.found()
1009else
1010 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001011endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001012conf.set10('HAVE_LIBIDN2', have)
1013m4_defines += have ? ['-DHAVE_LIBIDN2'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001014
1015want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001016if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001017 libiptc = dependency('libiptc',
1018 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001019 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001020else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001021 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001022 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001023endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001024conf.set10('HAVE_LIBIPTC', have)
1025m4_defines += have ? ['-DHAVE_LIBIPTC'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001026
1027want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001028if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001029 libqrencode = dependency('libqrencode',
1030 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001031 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001032else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001033 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001034 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001035endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001036conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001037
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001038want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001039if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001040 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1041 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001042 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001043else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001044 have = false
1045endif
1046if not have
1047 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001048 libgcrypt = []
1049 libgpg_error = []
1050endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001051conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001052
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001053want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001054if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001055 libgnutls = dependency('gnutls',
1056 version : '>= 3.1.4',
1057 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001058 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001059else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001060 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001061 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001062endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001063conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001064
1065want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001066if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001067 libdw = dependency('libdw',
1068 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001069 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001070else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001071 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001072 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001073endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001074conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001075
1076want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001077if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001078 libz = dependency('zlib',
1079 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001080 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001081else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001082 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001083 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001084endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001085conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001086
1087want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001088if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001089 libbzip2 = cc.find_library('bz2',
1090 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001091 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001092else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001093 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001094 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001095endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001096conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001097
1098want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001099if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001100 libxz = dependency('liblzma',
1101 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001102 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001103else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001104 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001105 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001106endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001107conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001108
1109want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001110if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001111 liblz4 = dependency('liblz4',
1112 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001113 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001114else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001115 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001116 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001117endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001118conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001119
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001120want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001121if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001122 libxkbcommon = dependency('xkbcommon',
1123 version : '>= 0.3.0',
1124 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001125 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001126else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001127 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001128 libxkbcommon = []
1129endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001130conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001131
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001132want_pcre2 = get_option('pcre2')
1133if want_pcre2 != 'false'
1134 libpcre2 = dependency('libpcre2-8',
1135 required : want_pcre2 == 'true')
1136 have = libpcre2.found()
1137else
1138 have = false
1139 libpcre2 = []
1140endif
1141conf.set10('HAVE_PCRE2', have)
1142
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001143want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001144if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001145 libglib = dependency('glib-2.0',
1146 version : '>= 2.22.0',
1147 required : want_glib == 'true')
1148 libgobject = dependency('gobject-2.0',
1149 version : '>= 2.22.0',
1150 required : want_glib == 'true')
1151 libgio = dependency('gio-2.0',
1152 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001153 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001154else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001155 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001156 libglib = []
1157 libgobject = []
1158 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001159endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001160conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001161
1162want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001163if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001164 libdbus = dependency('dbus-1',
1165 version : '>= 1.3.2',
1166 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001167 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001168else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001169 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001170 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001171endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001172conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001173
Yu Watanabe42303dc2017-06-18 05:22:32 +09001174default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001175if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001176 default_dnssec = 'no'
1177endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001178if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001179 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1180 default_dnssec = 'no'
1181endif
1182conf.set('DEFAULT_DNSSEC_MODE',
1183 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1184substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1185
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001186want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001187if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001188 have = (conf.get('HAVE_LIBCURL') == 1 and
1189 conf.get('HAVE_ZLIB') == 1 and
1190 conf.get('HAVE_BZIP2') == 1 and
1191 conf.get('HAVE_XZ') == 1 and
1192 conf.get('HAVE_GCRYPT') == 1)
1193 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001194 error('importd support was requested, but dependencies are not available')
1195 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001196else
1197 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001198endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001199conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001200
1201want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001202if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001203 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1204 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001205 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1206 # it's possible to build one without the other. Complain only if
1207 # support was explictly requested. The auxiliary files like sysusers
1208 # config should be installed when any of the programs are built.
1209 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1210 error('remote support was requested, but dependencies are not available')
1211 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001212 have = have_deps[0] or have_deps[1]
1213else
1214 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001215endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001216conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001217
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001218foreach term : ['utmp',
1219 'hibernate',
1220 'environment-d',
1221 'binfmt',
1222 'coredump',
1223 'resolve',
1224 'logind',
1225 'hostnamed',
1226 'localed',
1227 'machined',
1228 'networkd',
1229 'timedated',
1230 'timesyncd',
1231 'myhostname',
1232 'firstboot',
1233 'randomseed',
1234 'backlight',
1235 'vconsole',
1236 'quotacheck',
1237 'sysusers',
1238 'tmpfiles',
1239 'hwdb',
1240 'rfkill',
1241 'ldconfig',
1242 'efi',
1243 'tpm',
1244 'ima',
1245 'smack',
1246 'gshadow',
1247 'idn',
1248 'nss-systemd']
1249 have = get_option(term)
1250 name = 'ENABLE_' + term.underscorify().to_upper()
1251 conf.set10(name, have)
1252 m4_defines += have ? ['-D' + name] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001253endforeach
1254
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001255want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001256install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001257slow_tests = get_option('slow-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001258tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001259fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001260
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001261conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001262
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001263#####################################################################
1264
1265if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001266 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001267
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001268 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001269 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001270 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001271 elif efi_arch == 'x86_64'
1272 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001273 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001274 elif efi_arch == 'arm'
1275 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001276 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001277 elif efi_arch == 'aarch64'
1278 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001279 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001280 else
1281 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001282 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001283 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001284
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001285 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001286 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001287
1288 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001289else
1290 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001291endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001292conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001293
1294#####################################################################
1295
1296config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001297 output : 'config.h',
1298 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001299
1300includes = include_directories('src/basic',
1301 'src/shared',
1302 'src/systemd',
1303 'src/journal',
1304 'src/resolve',
1305 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001306 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001307 'src/login',
1308 'src/udev',
1309 'src/libudev',
1310 'src/core',
1311 'src/libsystemd/sd-bus',
1312 'src/libsystemd/sd-device',
1313 'src/libsystemd/sd-hwdb',
1314 'src/libsystemd/sd-id128',
1315 'src/libsystemd/sd-netlink',
1316 'src/libsystemd/sd-network',
1317 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001318 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001319
1320add_project_arguments('-include', 'config.h', language : 'c')
1321
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001322subdir('po')
1323subdir('catalog')
1324subdir('src/systemd')
1325subdir('src/basic')
1326subdir('src/libsystemd')
1327subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001328subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001329subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001330
1331libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001332 'journal-core',
1333 libjournal_core_sources,
1334 journald_gperf_c,
1335 include_directories : includes,
1336 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001337
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001338libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001339libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001340 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001341 'src/systemd/sd-id128.h', # pick a header file at random to work around old meson bug
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001342 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001343 include_directories : includes,
1344 link_args : ['-shared',
1345 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001346 link_with : [libbasic,
1347 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001348 link_whole : [libsystemd_static,
1349 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001350 dependencies : [threads,
1351 librt,
1352 libxz,
1353 liblz4],
1354 link_depends : libsystemd_sym,
1355 install : true,
1356 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001357
1358############################################################
1359
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001360# binaries that have --help and are intended for use by humans,
1361# usually, but not always, installed in /bin.
1362public_programs = []
1363
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001364subdir('src/libudev')
1365subdir('src/shared')
1366subdir('src/core')
1367subdir('src/udev')
1368subdir('src/network')
1369
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001370subdir('src/analyze')
1371subdir('src/journal-remote')
1372subdir('src/coredump')
1373subdir('src/hostname')
1374subdir('src/import')
1375subdir('src/kernel-install')
1376subdir('src/locale')
1377subdir('src/machine')
1378subdir('src/nspawn')
1379subdir('src/resolve')
1380subdir('src/timedate')
1381subdir('src/timesync')
1382subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001383subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001384
1385subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001386subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001387subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001388subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001389
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001390############################################################
1391
1392# only static linking apart from libdl, to make sure that the
1393# module is linked to all libraries that it uses.
1394test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001395 'test-dlopen',
1396 test_dlopen_c,
1397 include_directories : includes,
1398 link_with : [libbasic],
1399 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001400
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001401foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001402 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001403 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001404 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001405
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001406 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001407 if condition
1408 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001409
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001410 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1411 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001412
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001413 nss = shared_library(
1414 'nss_' + module,
1415 'src/nss-@0@/nss-@0@.c'.format(module),
1416 version : '2',
1417 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001418 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1419 link_args : ['-Wl,-z,nodelete',
1420 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001421 '-Wl,--version-script=' + version_script_arg,
1422 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001423 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001424 libbasic],
1425 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001426 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001427 link_depends : sym,
1428 install : true,
1429 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001430
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001431 # We cannot use shared_module because it does not support version suffix.
1432 # Unfortunately shared_library insists on creating the symlink…
1433 meson.add_install_script('sh', '-c',
1434 'rm $DESTDIR@0@/libnss_@1@.so'
1435 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001436
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001437 test('dlopen-nss_' + module,
1438 test_dlopen,
1439 args : [nss.full_path()]) # path to dlopen must include a slash
1440 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001441endforeach
1442
1443############################################################
1444
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001445executable('systemd',
1446 systemd_sources,
1447 include_directories : includes,
1448 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001449 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001450 dependencies : [threads,
1451 librt,
1452 libseccomp,
1453 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001454 libmount,
1455 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001456 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001457 install : true,
1458 install_dir : rootlibexecdir)
1459
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001460meson.add_install_script(meson_make_symlink,
1461 join_paths(rootlibexecdir, 'systemd'),
1462 join_paths(rootsbindir, 'init'))
1463
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001464exe = executable('systemd-analyze',
1465 systemd_analyze_sources,
1466 include_directories : includes,
1467 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001468 libshared],
1469 dependencies : [threads,
1470 librt,
1471 libseccomp,
1472 libselinux,
1473 libmount,
1474 libblkid],
1475 install_rpath : rootlibexecdir,
1476 install : true)
1477public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001478
1479executable('systemd-journald',
1480 systemd_journald_sources,
1481 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001482 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001483 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001484 dependencies : [threads,
1485 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001486 liblz4,
1487 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001488 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001489 install : true,
1490 install_dir : rootlibexecdir)
1491
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001492exe = executable('systemd-cat',
1493 systemd_cat_sources,
1494 include_directories : includes,
1495 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001496 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001497 dependencies : [threads],
1498 install_rpath : rootlibexecdir,
1499 install : true)
1500public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001501
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001502exe = executable('journalctl',
1503 journalctl_sources,
1504 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001505 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001506 dependencies : [threads,
1507 libqrencode,
1508 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001509 liblz4,
1510 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001511 install_rpath : rootlibexecdir,
1512 install : true,
1513 install_dir : rootbindir)
1514public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001515
1516executable('systemd-getty-generator',
1517 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001518 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001519 link_with : [libshared],
1520 install_rpath : rootlibexecdir,
1521 install : true,
1522 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001523
1524executable('systemd-debug-generator',
1525 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001526 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001527 link_with : [libshared],
1528 install_rpath : rootlibexecdir,
1529 install : true,
1530 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001531
1532executable('systemd-fstab-generator',
1533 'src/fstab-generator/fstab-generator.c',
1534 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001535 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001536 link_with : [libshared],
1537 install_rpath : rootlibexecdir,
1538 install : true,
1539 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001540
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001541if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001542 executable('30-systemd-environment-d-generator',
1543 'src/environment-d-generator/environment-d-generator.c',
1544 include_directories : includes,
1545 link_with : [libshared],
1546 install_rpath : rootlibexecdir,
1547 install : true,
1548 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001549
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001550 meson.add_install_script(meson_make_symlink,
1551 join_paths(sysconfdir, 'environment'),
1552 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001553endif
1554
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001555if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001556 executable('systemd-hibernate-resume-generator',
1557 'src/hibernate-resume/hibernate-resume-generator.c',
1558 include_directories : includes,
1559 link_with : [libshared],
1560 install_rpath : rootlibexecdir,
1561 install : true,
1562 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001563
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001564 executable('systemd-hibernate-resume',
1565 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001566 include_directories : includes,
1567 link_with : [libshared],
1568 install_rpath : rootlibexecdir,
1569 install : true,
1570 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001571endif
1572
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001573if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001574 executable('systemd-gpt-auto-generator',
1575 'src/gpt-auto-generator/gpt-auto-generator.c',
1576 'src/basic/blkid-util.h',
1577 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001578 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001579 dependencies : libblkid,
1580 install_rpath : rootlibexecdir,
1581 install : true,
1582 install_dir : systemgeneratordir)
1583
1584 exe = executable('systemd-dissect',
1585 'src/dissect/dissect.c',
1586 include_directories : includes,
1587 link_with : [libshared],
1588 install_rpath : rootlibexecdir,
1589 install : true,
1590 install_dir : rootlibexecdir)
1591 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001592endif
1593
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001594if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001595 executable('systemd-resolved',
1596 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001597 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001598 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001599 libbasic_gcrypt,
1600 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001601 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001602 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001603 libm,
1604 libidn],
1605 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001606 install : true,
1607 install_dir : rootlibexecdir)
1608
1609 exe = executable('systemd-resolve',
1610 systemd_resolve_sources,
1611 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001612 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001613 libbasic_gcrypt,
1614 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001615 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001616 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001617 libm,
1618 libidn],
1619 install_rpath : rootlibexecdir,
1620 install : true)
1621 public_programs += [exe]
Lennart Poettering088c1362018-02-27 17:48:54 +01001622
1623 meson.add_install_script(meson_make_symlink,
1624 join_paths(bindir, 'systemd-resolve'),
1625 join_paths(rootsbindir, 'resolvconf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001626endif
1627
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001628if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001629 executable('systemd-logind',
1630 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001631 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001632 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001633 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001634 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001635 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001636 install_rpath : rootlibexecdir,
1637 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001638 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001639
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001640 exe = executable('loginctl',
1641 loginctl_sources,
1642 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001643 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001644 dependencies : [threads,
1645 liblz4,
1646 libxz],
1647 install_rpath : rootlibexecdir,
1648 install : true,
1649 install_dir : rootbindir)
1650 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001651
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001652 exe = executable('systemd-inhibit',
1653 'src/login/inhibit.c',
1654 include_directories : includes,
1655 link_with : [libshared],
1656 install_rpath : rootlibexecdir,
1657 install : true,
1658 install_dir : rootbindir)
1659 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001660
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001661 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001662 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1663 pam_systemd = shared_library(
1664 'pam_systemd',
1665 pam_systemd_c,
1666 name_prefix : '',
1667 include_directories : includes,
1668 link_args : ['-shared',
1669 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001670 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001671 libshared_static],
1672 dependencies : [threads,
1673 libpam,
1674 libpam_misc],
1675 link_depends : pam_systemd_sym,
1676 install : true,
1677 install_dir : pamlibdir)
1678
1679 test('dlopen-pam_systemd',
1680 test_dlopen,
1681 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1682 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001683endif
1684
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001685if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001686 executable('systemd-user-sessions',
1687 'src/user-sessions/user-sessions.c',
1688 include_directories : includes,
1689 link_with : [libshared],
1690 install_rpath : rootlibexecdir,
1691 install : true,
1692 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001693endif
1694
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001695if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001696 exe = executable('bootctl',
1697 'src/boot/bootctl.c',
1698 include_directories : includes,
1699 link_with : [libshared],
1700 dependencies : [libblkid],
1701 install_rpath : rootlibexecdir,
1702 install : true)
1703 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001704endif
1705
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001706exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1707 include_directories : includes,
1708 link_with : [libshared],
1709 dependencies : [threads],
1710 install_rpath : rootlibexecdir,
1711 install : true)
1712public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001713
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001714exe = executable('systemctl', 'src/systemctl/systemctl.c',
1715 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001716 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001717 dependencies : [threads,
1718 libcap,
1719 libselinux,
1720 libxz,
1721 liblz4],
1722 install_rpath : rootlibexecdir,
1723 install : true,
1724 install_dir : rootbindir)
1725public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001726
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001727foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1728 meson.add_install_script(meson_make_symlink,
1729 join_paths(rootbindir, 'systemctl'),
1730 join_paths(rootsbindir, alias))
1731endforeach
1732
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001733if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001734 executable('systemd-backlight',
1735 'src/backlight/backlight.c',
1736 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001737 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001738 install_rpath : rootlibexecdir,
1739 install : true,
1740 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001741endif
1742
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001743if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001744 executable('systemd-rfkill',
1745 'src/rfkill/rfkill.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
1753executable('systemd-system-update-generator',
1754 'src/system-update-generator/system-update-generator.c',
1755 include_directories : includes,
1756 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001757 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001758 install : true,
1759 install_dir : systemgeneratordir)
1760
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001761if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001762 executable('systemd-cryptsetup',
1763 'src/cryptsetup/cryptsetup.c',
1764 include_directories : includes,
1765 link_with : [libshared],
1766 dependencies : [libcryptsetup],
1767 install_rpath : rootlibexecdir,
1768 install : true,
1769 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001770
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001771 executable('systemd-cryptsetup-generator',
1772 'src/cryptsetup/cryptsetup-generator.c',
1773 include_directories : includes,
1774 link_with : [libshared],
1775 dependencies : [libcryptsetup],
1776 install_rpath : rootlibexecdir,
1777 install : true,
1778 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001779
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001780 executable('systemd-veritysetup',
1781 'src/veritysetup/veritysetup.c',
1782 include_directories : includes,
1783 link_with : [libshared],
1784 dependencies : [libcryptsetup],
1785 install_rpath : rootlibexecdir,
1786 install : true,
1787 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001788
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001789 executable('systemd-veritysetup-generator',
1790 'src/veritysetup/veritysetup-generator.c',
1791 include_directories : includes,
1792 link_with : [libshared],
1793 dependencies : [libcryptsetup],
1794 install_rpath : rootlibexecdir,
1795 install : true,
1796 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001797endif
1798
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001799if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001800 executable('systemd-sysv-generator',
1801 'src/sysv-generator/sysv-generator.c',
1802 include_directories : includes,
1803 link_with : [libshared],
1804 install_rpath : rootlibexecdir,
1805 install : true,
1806 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001807
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001808 executable('systemd-rc-local-generator',
1809 'src/rc-local-generator/rc-local-generator.c',
1810 include_directories : includes,
1811 link_with : [libshared],
1812 install_rpath : rootlibexecdir,
1813 install : true,
1814 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001815endif
1816
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001817if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001818 executable('systemd-hostnamed',
1819 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001820 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001821 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001822 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001823 install : true,
1824 install_dir : rootlibexecdir)
1825
1826 exe = executable('hostnamectl',
1827 'src/hostname/hostnamectl.c',
1828 include_directories : includes,
1829 link_with : [libshared],
1830 install_rpath : rootlibexecdir,
1831 install : true)
1832 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001833endif
1834
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001835if conf.get('ENABLE_LOCALED') == 1
1836 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001837 # logind will load libxkbcommon.so dynamically on its own
1838 deps = [libdl]
1839 else
1840 deps = []
1841 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001842
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001843 executable('systemd-localed',
1844 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001845 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001846 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001847 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001848 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001849 install : true,
1850 install_dir : rootlibexecdir)
1851
1852 exe = executable('localectl',
1853 localectl_sources,
1854 include_directories : includes,
1855 link_with : [libshared],
1856 install_rpath : rootlibexecdir,
1857 install : true)
1858 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001859endif
1860
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001861if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001862 executable('systemd-timedated',
1863 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001864 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001865 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001866 install_rpath : rootlibexecdir,
1867 install : true,
1868 install_dir : rootlibexecdir)
1869
1870 exe = executable('timedatectl',
1871 'src/timedate/timedatectl.c',
1872 include_directories : includes,
1873 install_rpath : rootlibexecdir,
1874 link_with : [libshared],
1875 install : true)
1876 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001877endif
1878
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001879if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001880 executable('systemd-timesyncd',
1881 systemd_timesyncd_sources,
1882 include_directories : includes,
1883 link_with : [libshared],
1884 dependencies : [threads,
1885 libm],
1886 install_rpath : rootlibexecdir,
1887 install : true,
1888 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001889
1890 executable('systemd-time-wait-sync',
1891 'src/time-wait-sync/time-wait-sync.c',
1892 include_directories : includes,
1893 link_with : [libshared],
1894 install_rpath : rootlibexecdir,
1895 install : true,
1896 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001897endif
1898
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001899if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001900 executable('systemd-machined',
1901 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001902 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001903 link_with : [libmachine_core,
1904 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001905 install_rpath : rootlibexecdir,
1906 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001907 install_dir : rootlibexecdir)
1908
1909 exe = executable('machinectl',
1910 'src/machine/machinectl.c',
1911 include_directories : includes,
1912 link_with : [libshared],
1913 dependencies : [threads,
1914 libxz,
1915 liblz4],
1916 install_rpath : rootlibexecdir,
1917 install : true,
1918 install_dir : rootbindir)
1919 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001920endif
1921
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001922if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001923 executable('systemd-importd',
1924 systemd_importd_sources,
1925 include_directories : includes,
1926 link_with : [libshared],
1927 dependencies : [threads],
1928 install_rpath : rootlibexecdir,
1929 install : true,
1930 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001931
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001932 systemd_pull = executable('systemd-pull',
1933 systemd_pull_sources,
1934 include_directories : includes,
1935 link_with : [libshared],
1936 dependencies : [libcurl,
1937 libz,
1938 libbzip2,
1939 libxz,
1940 libgcrypt],
1941 install_rpath : rootlibexecdir,
1942 install : true,
1943 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001944
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001945 systemd_import = executable('systemd-import',
1946 systemd_import_sources,
1947 include_directories : includes,
1948 link_with : [libshared],
1949 dependencies : [libcurl,
1950 libz,
1951 libbzip2,
1952 libxz],
1953 install_rpath : rootlibexecdir,
1954 install : true,
1955 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001956
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001957 systemd_export = executable('systemd-export',
1958 systemd_export_sources,
1959 include_directories : includes,
1960 link_with : [libshared],
1961 dependencies : [libcurl,
1962 libz,
1963 libbzip2,
1964 libxz],
1965 install_rpath : rootlibexecdir,
1966 install : true,
1967 install_dir : rootlibexecdir)
1968 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001969endif
1970
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001971if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001972 exe = executable('systemd-journal-upload',
1973 systemd_journal_upload_sources,
1974 include_directories : includes,
1975 link_with : [libshared],
1976 dependencies : [threads,
1977 libcurl,
1978 libgnutls,
1979 libxz,
1980 liblz4],
1981 install_rpath : rootlibexecdir,
1982 install : true,
1983 install_dir : rootlibexecdir)
1984 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001985endif
1986
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001987if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001988 s_j_remote = executable('systemd-journal-remote',
1989 systemd_journal_remote_sources,
1990 include_directories : includes,
1991 link_with : [libshared],
1992 dependencies : [threads,
1993 libmicrohttpd,
1994 libgnutls,
1995 libxz,
1996 liblz4],
1997 install_rpath : rootlibexecdir,
1998 install : true,
1999 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002000
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002001 s_j_gatewayd = executable('systemd-journal-gatewayd',
2002 systemd_journal_gatewayd_sources,
2003 include_directories : includes,
2004 link_with : [libshared],
2005 dependencies : [threads,
2006 libmicrohttpd,
2007 libgnutls,
2008 libxz,
2009 liblz4],
2010 install_rpath : rootlibexecdir,
2011 install : true,
2012 install_dir : rootlibexecdir)
2013 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002014endif
2015
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002016if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002017 executable('systemd-coredump',
2018 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002019 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002020 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002021 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002022 libacl,
2023 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002024 libxz,
2025 liblz4],
2026 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002027 install : true,
2028 install_dir : rootlibexecdir)
2029
2030 exe = executable('coredumpctl',
2031 coredumpctl_sources,
2032 include_directories : includes,
2033 link_with : [libshared],
2034 dependencies : [threads,
2035 libxz,
2036 liblz4],
2037 install_rpath : rootlibexecdir,
2038 install : true)
2039 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002040endif
2041
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002042if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002043 exe = executable('systemd-binfmt',
2044 'src/binfmt/binfmt.c',
2045 include_directories : includes,
2046 link_with : [libshared],
2047 install_rpath : rootlibexecdir,
2048 install : true,
2049 install_dir : rootlibexecdir)
2050 public_programs += [exe]
2051
2052 meson.add_install_script('sh', '-c',
2053 mkdir_p.format(binfmtdir))
2054 meson.add_install_script('sh', '-c',
2055 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2056endif
2057
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002058if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002059 executable('systemd-vconsole-setup',
2060 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002061 include_directories : includes,
2062 link_with : [libshared],
2063 install_rpath : rootlibexecdir,
2064 install : true,
2065 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002066endif
2067
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002068if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002069 executable('systemd-random-seed',
2070 'src/random-seed/random-seed.c',
2071 include_directories : includes,
2072 link_with : [libshared],
2073 install_rpath : rootlibexecdir,
2074 install : true,
2075 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002076endif
2077
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002078if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002079 executable('systemd-firstboot',
2080 'src/firstboot/firstboot.c',
2081 include_directories : includes,
2082 link_with : [libshared],
2083 dependencies : [libcrypt],
2084 install_rpath : rootlibexecdir,
2085 install : true,
2086 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002087endif
2088
2089executable('systemd-remount-fs',
2090 'src/remount-fs/remount-fs.c',
2091 'src/core/mount-setup.c',
2092 'src/core/mount-setup.h',
2093 include_directories : includes,
2094 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002095 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002096 install : true,
2097 install_dir : rootlibexecdir)
2098
2099executable('systemd-machine-id-setup',
2100 'src/machine-id-setup/machine-id-setup-main.c',
2101 'src/core/machine-id-setup.c',
2102 'src/core/machine-id-setup.h',
2103 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002104 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002105 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002106 install : true,
2107 install_dir : rootbindir)
2108
2109executable('systemd-fsck',
2110 'src/fsck/fsck.c',
2111 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002112 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002113 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002114 install : true,
2115 install_dir : rootlibexecdir)
2116
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002117executable('systemd-growfs',
2118 'src/partition/growfs.c',
2119 include_directories : includes,
2120 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002121 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002122 install_rpath : rootlibexecdir,
2123 install : true,
2124 install_dir : rootlibexecdir)
2125
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002126executable('systemd-makefs',
2127 'src/partition/makefs.c',
2128 include_directories : includes,
2129 link_with : [libshared],
2130 install_rpath : rootlibexecdir,
2131 install : true,
2132 install_dir : rootlibexecdir)
2133
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002134executable('systemd-sleep',
2135 'src/sleep/sleep.c',
2136 include_directories : includes,
2137 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002138 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002139 install : true,
2140 install_dir : rootlibexecdir)
2141
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002142exe = executable('systemd-sysctl',
2143 'src/sysctl/sysctl.c',
2144 include_directories : includes,
2145 link_with : [libshared],
2146 install_rpath : rootlibexecdir,
2147 install : true,
2148 install_dir : rootlibexecdir)
2149public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002150
2151executable('systemd-ac-power',
2152 'src/ac-power/ac-power.c',
2153 include_directories : includes,
2154 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002155 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002156 install : true,
2157 install_dir : rootlibexecdir)
2158
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002159exe = executable('systemd-detect-virt',
2160 'src/detect-virt/detect-virt.c',
2161 include_directories : includes,
2162 link_with : [libshared],
2163 install_rpath : rootlibexecdir,
2164 install : true)
2165public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002166
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002167exe = executable('systemd-delta',
2168 'src/delta/delta.c',
2169 include_directories : includes,
2170 link_with : [libshared],
2171 install_rpath : rootlibexecdir,
2172 install : true)
2173public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002174
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002175exe = executable('systemd-escape',
2176 'src/escape/escape.c',
2177 include_directories : includes,
2178 link_with : [libshared],
2179 install_rpath : rootlibexecdir,
2180 install : true,
2181 install_dir : rootbindir)
2182public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002183
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002184exe = executable('systemd-notify',
2185 'src/notify/notify.c',
2186 include_directories : includes,
2187 link_with : [libshared],
2188 install_rpath : rootlibexecdir,
2189 install : true,
2190 install_dir : rootbindir)
2191public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002192
2193executable('systemd-volatile-root',
2194 'src/volatile-root/volatile-root.c',
2195 include_directories : includes,
2196 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002197 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002198 install : true,
2199 install_dir : rootlibexecdir)
2200
2201executable('systemd-cgroups-agent',
2202 'src/cgroups-agent/cgroups-agent.c',
2203 include_directories : includes,
2204 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002205 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002206 install : true,
2207 install_dir : rootlibexecdir)
2208
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002209exe = executable('systemd-path',
2210 'src/path/path.c',
2211 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002212 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002213 install_rpath : rootlibexecdir,
2214 install : true)
2215public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002216
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002217exe = executable('systemd-ask-password',
2218 'src/ask-password/ask-password.c',
2219 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002220 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002221 install_rpath : rootlibexecdir,
2222 install : true,
2223 install_dir : rootbindir)
2224public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002225
2226executable('systemd-reply-password',
2227 'src/reply-password/reply-password.c',
2228 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002229 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002230 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002231 install : true,
2232 install_dir : rootlibexecdir)
2233
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002234exe = executable('systemd-tty-ask-password-agent',
2235 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2236 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002237 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002238 install_rpath : rootlibexecdir,
2239 install : true,
2240 install_dir : rootbindir)
2241public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002242
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002243exe = executable('systemd-cgls',
2244 'src/cgls/cgls.c',
2245 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002246 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002247 install_rpath : rootlibexecdir,
2248 install : true)
2249public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002250
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002251exe = executable('systemd-cgtop',
2252 'src/cgtop/cgtop.c',
2253 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002254 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002255 install_rpath : rootlibexecdir,
2256 install : true)
2257public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002258
2259executable('systemd-initctl',
2260 'src/initctl/initctl.c',
2261 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002262 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002263 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002264 install : true,
2265 install_dir : rootlibexecdir)
2266
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002267exe = executable('systemd-mount',
2268 'src/mount/mount-tool.c',
2269 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002270 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002271 install_rpath : rootlibexecdir,
2272 install : true)
2273public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002274
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002275meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002276 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002277
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002278exe = executable('systemd-run',
2279 'src/run/run.c',
2280 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002281 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002282 install_rpath : rootlibexecdir,
2283 install : true)
2284public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002285
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002286exe = executable('systemd-stdio-bridge',
2287 'src/stdio-bridge/stdio-bridge.c',
2288 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002289 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002290 install_rpath : rootlibexecdir,
2291 install : true)
2292public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002293
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002294exe = executable('busctl',
2295 'src/busctl/busctl.c',
2296 'src/busctl/busctl-introspect.c',
2297 'src/busctl/busctl-introspect.h',
2298 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002299 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002300 install_rpath : rootlibexecdir,
2301 install : true)
2302public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002303
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002304if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002305 exe = executable('systemd-sysusers',
2306 'src/sysusers/sysusers.c',
2307 include_directories : includes,
2308 link_with : [libshared],
2309 install_rpath : rootlibexecdir,
2310 install : true,
2311 install_dir : rootbindir)
2312 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002313endif
2314
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002315if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002316 exe = executable('systemd-tmpfiles',
2317 'src/tmpfiles/tmpfiles.c',
2318 include_directories : includes,
2319 link_with : [libshared],
2320 dependencies : [libacl],
2321 install_rpath : rootlibexecdir,
2322 install : true,
2323 install_dir : rootbindir)
2324 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002325
2326 test('test-systemd-tmpfiles',
2327 test_systemd_tmpfiles_py,
2328 args : exe.full_path())
2329 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002330endif
2331
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002332if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002333 exe = executable('systemd-hwdb',
2334 'src/hwdb/hwdb.c',
2335 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2336 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002337 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002338 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002339 install : true,
2340 install_dir : rootbindir)
2341 public_programs += [exe]
2342endif
2343
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002344if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002345 executable('systemd-quotacheck',
2346 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002347 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002348 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002349 install_rpath : rootlibexecdir,
2350 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002351 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002352endif
2353
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002354exe = executable('systemd-socket-proxyd',
2355 'src/socket-proxy/socket-proxyd.c',
2356 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002357 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002358 dependencies : [threads],
2359 install_rpath : rootlibexecdir,
2360 install : true,
2361 install_dir : rootlibexecdir)
2362public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002363
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002364exe = executable('systemd-udevd',
2365 systemd_udevd_sources,
2366 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002367 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002368 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002369 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002370 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002371 dependencies : [threads,
2372 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002373 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002374 libacl,
2375 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002376 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002377 install : true,
2378 install_dir : rootlibexecdir)
2379public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002380
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002381exe = executable('udevadm',
2382 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002383 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002384 include_directories : includes,
2385 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002386 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002387 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002388 dependencies : [threads,
2389 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002390 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002391 libacl,
2392 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002393 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002394 install : true,
2395 install_dir : rootbindir)
2396public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002397
2398executable('systemd-shutdown',
2399 systemd_shutdown_sources,
2400 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002401 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002402 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002403 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002404 install : true,
2405 install_dir : rootlibexecdir)
2406
2407executable('systemd-update-done',
2408 'src/update-done/update-done.c',
2409 include_directories : includes,
2410 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002411 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002412 install : true,
2413 install_dir : rootlibexecdir)
2414
2415executable('systemd-update-utmp',
2416 'src/update-utmp/update-utmp.c',
2417 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002418 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002419 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002420 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002421 install : true,
2422 install_dir : rootlibexecdir)
2423
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002424if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002425 executable('systemd-modules-load',
2426 'src/modules-load/modules-load.c',
2427 include_directories : includes,
2428 link_with : [libshared],
2429 dependencies : [libkmod],
2430 install_rpath : rootlibexecdir,
2431 install : true,
2432 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002433
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002434 meson.add_install_script('sh', '-c',
2435 mkdir_p.format(modulesloaddir))
2436 meson.add_install_script('sh', '-c',
2437 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002438endif
2439
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002440exe = executable('systemd-nspawn',
2441 systemd_nspawn_sources,
2442 'src/core/mount-setup.c', # FIXME: use a variable?
2443 'src/core/mount-setup.h',
2444 'src/core/loopback-setup.c',
2445 'src/core/loopback-setup.h',
2446 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002447 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002448 dependencies : [libacl,
2449 libblkid,
2450 libseccomp,
2451 libselinux],
2452 install_rpath : rootlibexecdir,
2453 install : true)
2454public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002455
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002456if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002457 executable('systemd-networkd',
2458 systemd_networkd_sources,
2459 include_directories : includes,
2460 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002461 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002462 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002463 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002464 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002465 install_rpath : rootlibexecdir,
2466 install : true,
2467 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002468
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002469 executable('systemd-networkd-wait-online',
2470 systemd_networkd_wait_online_sources,
2471 include_directories : includes,
2472 link_with : [libnetworkd_core,
2473 libshared],
2474 install_rpath : rootlibexecdir,
2475 install : true,
2476 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002477
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002478 exe = executable('networkctl',
2479 networkctl_sources,
2480 include_directories : includes,
2481 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002482 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002483 install_rpath : rootlibexecdir,
2484 install : true,
2485 install_dir : rootbindir)
2486 public_programs += [exe]
2487endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002488
2489executable('systemd-sulogin-shell',
2490 ['src/sulogin-shell/sulogin-shell.c'],
2491 include_directories : includes,
2492 link_with : [libshared],
2493 install_rpath : rootlibexecdir,
2494 install : true,
2495 install_dir : rootlibexecdir)
2496
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002497############################################################
2498
2499foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002500 sources = tuple[0]
2501 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2502 dependencies = tuple[2]
2503 condition = tuple.length() >= 4 ? tuple[3] : ''
2504 type = tuple.length() >= 5 ? tuple[4] : ''
2505 defs = tuple.length() >= 6 ? tuple[5] : []
2506 incs = tuple.length() >= 7 ? tuple[6] : includes
2507 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002508
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002509 name = sources[0].split('/')[-1].split('.')[0]
2510 if type.startswith('timeout=')
2511 timeout = type.split('=')[1].to_int()
2512 type = ''
2513 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002514 if want_tests == 'false'
2515 message('Not compiling @0@ because tests is set to false'.format(name))
2516 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002517 exe = executable(
2518 name,
2519 sources,
2520 include_directories : incs,
2521 link_with : link_with,
2522 dependencies : dependencies,
2523 c_args : defs,
2524 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002525 install : install_tests,
2526 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002527
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002528 if type == 'manual'
2529 message('@0@ is a manual test'.format(name))
2530 elif type == 'unsafe' and want_tests != 'unsafe'
2531 message('@0@ is an unsafe test'.format(name))
2532 else
2533 test(name, exe,
2534 env : test_env,
2535 timeout : timeout)
2536 endif
2537 else
2538 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2539 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002540endforeach
2541
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002542test_libsystemd_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002543 'test-libsystemd-sym',
2544 test_libsystemd_sym_c,
2545 include_directories : includes,
2546 link_with : [libsystemd],
2547 install : install_tests,
2548 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002549test('test-libsystemd-sym',
2550 test_libsystemd_sym)
2551
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002552test_libudev_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002553 'test-libudev-sym',
2554 test_libudev_sym_c,
2555 include_directories : includes,
2556 c_args : ['-Wno-deprecated-declarations'],
2557 link_with : [libudev],
2558 install : install_tests,
2559 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002560test('test-libudev-sym',
2561 test_libudev_sym)
2562
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002563############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002564
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002565fuzzer_exes = []
2566
2567foreach tuple : fuzzers
2568 sources = tuple[0]
2569 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2570 dependencies = tuple[2]
2571 defs = tuple.length() >= 4 ? tuple[3] : []
2572 incs = tuple.length() >= 5 ? tuple[4] : includes
2573
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002574 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002575 dependencies += fuzzing_engine
2576 else
2577 sources += 'src/fuzz/fuzz-main.c'
2578 endif
2579
2580 name = sources[0].split('/')[-1].split('.')[0]
2581
2582 fuzzer_exes += executable(
2583 name,
2584 sources,
2585 include_directories : [incs, include_directories('src/fuzz')],
2586 link_with : link_with,
2587 dependencies : dependencies,
2588 c_args : defs,
2589 install : false)
2590endforeach
2591
2592run_target('fuzzers',
2593 depends : fuzzer_exes,
2594 command : ['true'])
2595
2596############################################################
2597
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002598make_directive_index_py = find_program('tools/make-directive-index.py')
2599make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002600xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002601hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002602
2603subdir('units')
2604subdir('sysctl.d')
2605subdir('sysusers.d')
2606subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002607subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002608subdir('hwdb')
2609subdir('network')
2610subdir('man')
2611subdir('shell-completion/bash')
2612subdir('shell-completion/zsh')
2613subdir('docs/sysvinit')
2614subdir('docs/var-log')
2615
2616# FIXME: figure out if the warning is true:
2617# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2618install_subdir('factory/etc',
2619 install_dir : factorydir)
2620
2621
2622install_data('xorg/50-systemd-user.sh',
2623 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002624install_data('modprobe.d/systemd.conf',
2625 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002626install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002627 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002628 'NEWS',
2629 'README',
2630 'doc/CODING_STYLE',
2631 'doc/DISTRO_PORTING',
2632 'doc/ENVIRONMENT.md',
2633 'doc/HACKING',
2634 'doc/TRANSIENT-SETTINGS.md',
2635 'doc/TRANSLATORS',
2636 'doc/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002637 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2638 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002639
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002640meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2641meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2642
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002643############################################################
2644
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002645meson_check_help = find_program('tools/meson-check-help.sh')
2646
2647foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002648 name = exec.full_path().split('/')[-1]
2649 test('check-help-' + name,
2650 meson_check_help,
2651 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002652endforeach
2653
2654############################################################
2655
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002656# Enable tests for all supported sanitizers
2657foreach tuple : sanitizers
2658 sanitizer = tuple[0]
2659 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002660
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002661 have = run_command(check_compilation_sh,
2662 cc.cmd_array(), '-x', 'c',
2663 '-fsanitize=@0@'.format(sanitizer),
2664 '-include', link_test_c).returncode() == 0
2665 message('@0@ sanitizer supported: @1@'.format(sanitizer, have ? 'yes' : 'no'))
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002666
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002667 if have
2668 prev = ''
2669 foreach p : fuzz_regression_tests
2670 b = p.split('/')[-2]
2671 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002672
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002673 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002674
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002675 if name != prev
2676 if want_tests == 'false'
2677 message('Not compiling @0@ because tests is set to false'.format(name))
2678 elif slow_tests
2679 exe = custom_target(
2680 name,
2681 output : name,
2682 depends : build,
2683 command : [env, 'ln', '-fs',
2684 join_paths(build.full_path(), b),
2685 '@OUTPUT@'],
2686 build_by_default : true)
2687 else
2688 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2689 endif
2690 endif
2691 prev = name
2692
2693 if want_tests != 'false' and slow_tests
2694 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2695 env,
2696 args : [exe.full_path(),
2697 join_paths(meson.source_root(),
2698 'test/fuzz-regressions',
2699 p)])
2700 endif
2701 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002702 endif
2703endforeach
2704
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002705
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002706############################################################
2707
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002708if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002709 all_files = run_command(
2710 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002711 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002712 'ls-files',
2713 ':/*.[ch]'])
2714 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002715
userwithuide85a6902017-08-09 13:41:44 +00002716 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002717 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002718 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002719 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002720 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002721 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002722 output : 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002723 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002724endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002725
2726if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002727 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002728 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002729 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002730 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002731endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002732
2733if git.found()
2734 git_head = run_command(
2735 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002736 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002737 'rev-parse', 'HEAD']).stdout().strip()
2738 git_head_short = run_command(
2739 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002740 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002741 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2742
2743 run_target(
2744 'git-snapshot',
2745 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002746 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002747 git_head_short),
2748 '--prefix', 'systemd-@0@/'.format(git_head),
2749 'HEAD'])
2750endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002751
2752############################################################
2753
Lennart Poettering51b13862017-12-20 12:51:14 +01002754meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2755run_target(
2756 'check-api-docs',
2757 depends : [man, libsystemd, libudev],
2758 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2759
2760############################################################
2761
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002762status = [
2763 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2764
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002765 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002766 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002767 'prefix directory: @0@'.format(prefixdir),
2768 'rootprefix directory: @0@'.format(rootprefixdir),
2769 'sysconf directory: @0@'.format(sysconfdir),
2770 'include directory: @0@'.format(includedir),
2771 'lib directory: @0@'.format(libdir),
2772 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002773 'SysV init scripts: @0@'.format(sysvinit_path),
2774 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002775 'PAM modules directory: @0@'.format(pamlibdir),
2776 'PAM configuration directory: @0@'.format(pamconfdir),
2777 'RPM macros directory: @0@'.format(rpmmacrosdir),
2778 'modprobe.d directory: @0@'.format(modprobedir),
2779 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2780 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2781 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2782 'bash completions directory: @0@'.format(bashcompletiondir),
2783 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002784 'extra start script: @0@'.format(get_option('rc-local')),
2785 'extra stop script: @0@'.format(get_option('halt-local')),
2786 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2787 get_option('debug-tty')),
2788 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002789 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002790 'maximum system UID: @0@'.format(system_uid_max),
2791 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002792 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2793 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2794 'minimum container UID base: @0@'.format(container_uid_base_min),
2795 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002796 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002797 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002798 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002799 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002800 'nobody user name: @0@'.format(nobody_user),
2801 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002802 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002803 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002804
2805 'default DNSSEC mode: @0@'.format(default_dnssec),
2806 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2807 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2808
2809alt_dns_servers = '\n '.join(dns_servers.split(' '))
2810alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2811status += [
2812 'default DNS servers: @0@'.format(alt_dns_servers),
2813 'default NTP servers: @0@'.format(alt_ntp_servers)]
2814
2815alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2816 '@@0@'.format(time_epoch)).stdout().strip()
2817status += [
2818 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2819
2820# TODO:
2821# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2822# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2823# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2824
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002825if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002826 status += [
2827 'efi arch: @0@'.format(efi_arch)]
2828
2829 if have_gnu_efi
2830 status += [
2831 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2832 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002833 'EFI lib directory: @0@'.format(efi_libdir),
2834 'EFI lds directory: @0@'.format(efi_ldsdir),
2835 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002836 endif
2837endif
2838
2839found = []
2840missing = []
2841
2842foreach tuple : [
2843 ['libcryptsetup'],
2844 ['PAM'],
2845 ['AUDIT'],
2846 ['IMA'],
2847 ['AppArmor'],
2848 ['SELinux'],
2849 ['SECCOMP'],
2850 ['SMACK'],
2851 ['zlib'],
2852 ['xz'],
2853 ['lz4'],
2854 ['bzip2'],
2855 ['ACL'],
2856 ['gcrypt'],
2857 ['qrencode'],
2858 ['microhttpd'],
2859 ['gnutls'],
2860 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002861 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002862 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002863 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002864 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002865 ['libiptc'],
2866 ['elfutils'],
2867 ['binfmt'],
2868 ['vconsole'],
2869 ['quotacheck'],
2870 ['tmpfiles'],
2871 ['environment.d'],
2872 ['sysusers'],
2873 ['firstboot'],
2874 ['randomseed'],
2875 ['backlight'],
2876 ['rfkill'],
2877 ['logind'],
2878 ['machined'],
2879 ['importd'],
2880 ['hostnamed'],
2881 ['timedated'],
2882 ['timesyncd'],
2883 ['localed'],
2884 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002885 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002886 ['coredump'],
2887 ['polkit'],
2888 ['legacy pkla', install_polkit_pkla],
2889 ['efi'],
2890 ['gnu-efi', have_gnu_efi],
2891 ['kmod'],
2892 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01002893 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002894 ['blkid'],
2895 ['dbus'],
2896 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002897 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002898 ['hwdb'],
2899 ['tpm'],
2900 ['man pages', want_man],
2901 ['html pages', want_html],
2902 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002903 ['SysV compat'],
2904 ['utmp'],
2905 ['ldconfig'],
2906 ['hibernate'],
2907 ['adm group', get_option('adm-group')],
2908 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002909 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002910 ['debug hashmap'],
2911 ['debug mmap cache'],
2912]
2913
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01002914 if tuple.length() >= 2
2915 cond = tuple[1]
2916 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002917 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2918 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002919 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002920 endif
2921 if cond
2922 found += [tuple[0]]
2923 else
2924 missing += [tuple[0]]
2925 endif
2926endforeach
2927
2928status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002929 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002930 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002931 '',
2932 'disabled features: @0@'.format(', '.join(missing)),
2933 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002934message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002935
2936if rootprefixdir != rootprefix_default
2937 message('WARNING:\n' +
2938 ' Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2939 ' systemd used fixed names for unit file directories and other paths, so anything\n' +
2940 ' except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
2941endif