blob: 1dfb84c94d16ca1b93f22ba32c62c801611fcf84 [file] [log] [blame]
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01001# SPDX-License-Identifier: LGPL-2.1+
2#
3# Copyright 2017 Zbigniew Jędrzejewski-Szmek
4#
5# systemd is free software; you can redistribute it and/or modify it
6# under the terms of the GNU Lesser General Public License as published by
7# the Free Software Foundation; either version 2.1 of the License, or
8# (at your option) any later version.
9#
10# systemd is distributed in the hope that it will be useful, but
11# WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13# Lesser General Public License for more details.
14#
15# You should have received a copy of the GNU Lesser General Public License
16# along with systemd; If not, see <http://www.gnu.org/licenses/>.
17
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040018project('systemd', 'c',
Zbigniew Jędrzejewski-Szmekad6a0852018-03-05 17:12:48 +010019 version : '238',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040020 license : 'LGPLv2+',
21 default_options: [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040022 'c_std=gnu99',
23 'prefix=/usr',
24 'sysconfdir=/etc',
25 'localstatedir=/var',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040026 ],
Zbigniew Jędrzejewski-Szmek86ea8d72017-11-20 08:08:43 +010027 meson_version : '>= 0.41',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040028 )
29
Zbigniew Jędrzejewski-Szmekad6a0852018-03-05 17:12:48 +010030libsystemd_version = '0.22.0'
31libudev_version = '1.6.10'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020032
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040033# We need the same data in three different formats, ugh!
34# Also, for hysterical reasons, we use different variable
35# names, sometimes. Not all variables are included in every
36# set. Ugh, ugh, ugh!
37conf = configuration_data()
38conf.set_quoted('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version())
39conf.set_quoted('PACKAGE_VERSION', meson.project_version())
40
41substs = configuration_data()
42substs.set('PACKAGE_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
43substs.set('PACKAGE_VERSION', meson.project_version())
44
45m4_defines = []
46
47#####################################################################
48
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040049# Try to install the git pre-commit hook
50git_hook = run_command(join_paths(meson.source_root(), 'tools/add-git-hook.sh'))
51if git_hook.returncode() == 0
52 message(git_hook.stdout().strip())
53endif
54
55#####################################################################
56
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010057if get_option('split-usr') == 'auto'
58 split_usr = run_command('test', '-L', '/bin').returncode() != 0
59else
60 split_usr = get_option('split-usr') == 'true'
61endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010062conf.set10('HAVE_SPLIT_USR', split_usr,
63 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010064
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010065if get_option('split-bin') == 'auto'
66 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
67else
68 split_bin = get_option('split-bin') == 'true'
69endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010070conf.set10('HAVE_SPLIT_BIN', split_bin,
71 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010072
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010073rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010074# Unusual rootprefixdir values are used by some distros
75# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010076rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010077if rootprefixdir == ''
78 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010079endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040080
81sysvinit_path = get_option('sysvinit-path')
82sysvrcnd_path = get_option('sysvrcnd-path')
Max Harmathy54248242017-12-15 16:05:25 +010083have = sysvinit_path != '' and sysvrcnd_path != ''
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020084conf.set10('HAVE_SYSV_COMPAT', have,
85 description : 'SysV init scripts and rcN.d links are supported')
86m4_defines += have ? ['-DHAVE_SYSV_COMPAT'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040087
88# join_paths ignore the preceding arguments if an absolute component is
89# encountered, so this should canonicalize various paths when they are
90# absolute or relative.
91prefixdir = get_option('prefix')
92if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040093 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040094endif
95bindir = join_paths(prefixdir, get_option('bindir'))
96libdir = join_paths(prefixdir, get_option('libdir'))
97sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
98includedir = join_paths(prefixdir, get_option('includedir'))
99datadir = join_paths(prefixdir, get_option('datadir'))
100localstatedir = join_paths('/', get_option('localstatedir'))
101
102rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +0100103rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400104rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
105
106rootlibdir = get_option('rootlibdir')
107if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400108 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400109endif
110
111# Dirs of external packages
Michael Bieble17e5ba2017-04-13 10:30:56 -0400112pkgconfigdatadir = join_paths(datadir, 'pkgconfig')
113pkgconfiglibdir = join_paths(libdir, 'pkgconfig')
114polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
115polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
116polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
117varlogdir = join_paths(localstatedir, 'log')
118xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900119rpmmacrosdir = get_option('rpmmacrosdir')
120if rpmmacrosdir != 'no'
121 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
122endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200123modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400124
125# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400126pkgdatadir = join_paths(datadir, 'systemd')
127environmentdir = join_paths(prefixdir, 'lib/environment.d')
128pkgsysconfdir = join_paths(sysconfdir, 'systemd')
129userunitdir = join_paths(prefixdir, 'lib/systemd/user')
130userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
131tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
132sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
133sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
134binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
135modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
136networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
137pkgincludedir = join_paths(includedir, 'systemd')
138systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
139usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
140systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
141userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
142systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
143systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
144systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
145systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
146udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
147udevhomedir = udevlibexecdir
148udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
149udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
150catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
151kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
152factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400153bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
154testsdir = join_paths(prefixdir, 'lib/systemd/tests')
155systemdstatedir = join_paths(localstatedir, 'lib/systemd')
156catalogstatedir = join_paths(systemdstatedir, 'catalog')
157randomseeddir = join_paths(localstatedir, 'lib/systemd')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400158
tblume75aaade2018-02-01 22:46:15 +0100159docdir = get_option('docdir')
160if docdir == ''
161 docdir = join_paths(datadir, 'doc/systemd')
162endif
163
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400164dbuspolicydir = get_option('dbuspolicydir')
165if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400166 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400167endif
168
169dbussessionservicedir = get_option('dbussessionservicedir')
170if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400171 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400172endif
173
174dbussystemservicedir = get_option('dbussystemservicedir')
175if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400176 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400177endif
178
179pamlibdir = get_option('pamlibdir')
180if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400181 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400182endif
183
184pamconfdir = get_option('pamconfdir')
185if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400186 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400187endif
188
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100189memory_accounting_default = get_option('memory-accounting-default')
190
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400191conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400192conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400193conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
194conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
195conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400196conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
197conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100198
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100199conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100200
Michael Bieble17e5ba2017-04-13 10:30:56 -0400201conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400202conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
203conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400204conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
205conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
206conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
207conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100208conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100209conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400210conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
211conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
212conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
213conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
214conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100215conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400216conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400217conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
218conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400219conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
220conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
221conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
222conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
223conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
224conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400225conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
226conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400227conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400228conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400229conf.set_quoted('LIBDIR', libdir)
230conf.set_quoted('ROOTLIBDIR', rootlibdir)
231conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
232conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400233conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
234conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
235conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
236conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
237conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
238conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100239conf.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'true' : 'false')
Michal Koutný7f672e82018-03-09 18:27:13 +0100240conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400241
242conf.set_quoted('ABS_BUILD_DIR', meson.build_root())
243conf.set_quoted('ABS_SRC_DIR', meson.source_root())
244
245substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400246substs.set('exec_prefix', prefixdir)
247substs.set('libdir', libdir)
248substs.set('rootlibdir', rootlibdir)
249substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400250substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400251substs.set('bindir', bindir)
252substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400253substs.set('rootlibexecdir', rootlibexecdir)
254substs.set('systemunitdir', systemunitdir)
255substs.set('userunitdir', userunitdir)
256substs.set('systempresetdir', systempresetdir)
257substs.set('userpresetdir', userpresetdir)
258substs.set('udevhwdbdir', udevhwdbdir)
259substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400260substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400261substs.set('catalogdir', catalogdir)
262substs.set('tmpfilesdir', tmpfilesdir)
263substs.set('sysusersdir', sysusersdir)
264substs.set('sysctldir', sysctldir)
265substs.set('binfmtdir', binfmtdir)
266substs.set('modulesloaddir', modulesloaddir)
267substs.set('systemgeneratordir', systemgeneratordir)
268substs.set('usergeneratordir', usergeneratordir)
269substs.set('systemenvgeneratordir', systemenvgeneratordir)
270substs.set('userenvgeneratordir', userenvgeneratordir)
271substs.set('systemshutdowndir', systemshutdowndir)
272substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400273substs.set('VARLOGDIR', varlogdir)
274substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400275substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
276substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400277substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
278substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
279substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
280substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100281substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400282
283#####################################################################
284
285cc = meson.get_compiler('c')
286pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400287check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100288meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400289
Adam Duskett08318a22018-01-15 06:25:46 -0500290if get_option('tests') != 'false'
291 cxx = find_program('c++', required : false)
292 if cxx.found()
293 # Used only for tests
294 add_languages('cpp')
295 endif
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400296endif
297
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500298want_ossfuzz = get_option('oss-fuzz')
299want_libfuzzer = get_option('llvm-fuzz')
300fuzzer_build = want_ossfuzz or want_libfuzzer
301if want_ossfuzz and want_libfuzzer
302 error('only one of oss-fuzz and llvm-fuzz can be specified')
303endif
304if want_libfuzzer
305 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
306endif
307if want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500308 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
309endif
310
Zbigniew Jędrzejewski-Szmek75cf1d62017-07-04 17:59:15 -0400311foreach arg : ['-Wextra',
Zbigniew Jędrzejewski-Szmek70160ce2017-10-03 12:11:49 +0200312 '-Werror=undef',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400313 '-Wlogical-op',
314 '-Wmissing-include-dirs',
315 '-Wold-style-definition',
316 '-Wpointer-arith',
317 '-Winit-self',
318 '-Wdeclaration-after-statement',
319 '-Wfloat-equal',
320 '-Wsuggest-attribute=noreturn',
321 '-Werror=missing-prototypes',
322 '-Werror=implicit-function-declaration',
323 '-Werror=missing-declarations',
324 '-Werror=return-type',
325 '-Werror=incompatible-pointer-types',
326 '-Werror=format=2',
327 '-Wstrict-prototypes',
328 '-Wredundant-decls',
329 '-Wmissing-noreturn',
Zbigniew Jędrzejewski-Szmek97279d82017-11-20 14:23:40 +0100330 '-Wimplicit-fallthrough=5',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400331 '-Wshadow',
332 '-Wendif-labels',
333 '-Wstrict-aliasing=2',
334 '-Wwrite-strings',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400335 '-Werror=overflow',
336 '-Wdate-time',
337 '-Wnested-externs',
338 '-ffast-math',
339 '-fno-common',
340 '-fdiagnostics-show-option',
341 '-fno-strict-aliasing',
342 '-fvisibility=hidden',
343 '-fstack-protector',
344 '-fstack-protector-strong',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400345 '--param=ssp-buffer-size=4',
346 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400347 if cc.has_argument(arg)
348 add_project_arguments(arg, language : 'c')
349 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400350endforeach
351
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500352# the oss-fuzz fuzzers are not built with -fPIE, so don't
353# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500354if not fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500355 if cc.has_argument('-fPIE')
356 add_project_arguments('-fPIE', language : 'c')
357 endif
358endif
359
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400360# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
361# arguments, just emits a warnings. So test for the "positive" version instead.
362foreach arg : ['unused-parameter',
363 'missing-field-initializers',
364 'unused-result',
Zbigniew Jędrzejewski-Szmekfb1b5882017-09-04 19:49:12 +0300365 'format-signedness',
366 'error=nonnull', # work-around for gcc 7.1 turning this on on its own
367 ]
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400368 if cc.has_argument('-W' + arg)
369 add_project_arguments('-Wno-' + arg, language : 'c')
370 endif
371endforeach
372
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800373if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400374 #include <time.h>
375 #include <inttypes.h>
376 typedef uint64_t usec_t;
377 usec_t now(clockid_t clock);
378 int main(void) {
379 struct timespec now;
380 return 0;
381 }
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800382''', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400383 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400384endif
385
386if cc.get_id() == 'clang'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400387 foreach arg : ['-Wno-typedef-redefinition',
388 '-Wno-gnu-variable-sized-type-not-at-end',
389 ]
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400390 if cc.has_argument(arg,
391 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400392 add_project_arguments(arg, language : 'c')
393 endif
394 endforeach
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400395endif
396
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400397link_test_c = files('tools/meson-link-test.c')
398
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400399# --as-needed and --no-undefined are provided by meson by default,
400# run mesonconf to see what is enabled
401foreach arg : ['-Wl,-z,relro',
402 '-Wl,-z,now',
403 '-pie',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400404 ]
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400405
406 have = run_command(check_compilation_sh,
407 cc.cmd_array(), '-x', 'c', arg,
408 '-include', link_test_c).returncode() == 0
409 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500410 if have and (arg != '-pie' or not fuzzer_build)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400411 add_project_link_arguments(arg, language : 'c')
412 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400413endforeach
414
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100415# Check if various sanitizers are supported
416sanitizers = []
417foreach arg : ['address']
418
419 have = run_command(check_compilation_sh,
420 cc.cmd_array(), '-x', 'c',
421 '-fsanitize=@0@'.format(arg),
422 '-include', link_test_c).returncode() == 0
423 message('@0@ sanitizer supported: @1@'.format(arg, have ? 'yes' : 'no'))
424 if have
425 sanitizers += arg
426 endif
427endforeach
428
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400429if get_option('buildtype') != 'debug'
430 foreach arg : ['-ffunction-sections',
431 '-fdata-sections']
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400432 if cc.has_argument(arg,
433 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400434 add_project_arguments(arg, language : 'c')
435 endif
436 endforeach
437
438 foreach arg : ['-Wl,--gc-sections']
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400439 have = run_command(check_compilation_sh,
440 cc.cmd_array(), '-x', 'c', arg,
441 '-include', link_test_c).returncode() == 0
442 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
443 if have
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400444 add_project_link_arguments(arg, language : 'c')
445 endif
446 endforeach
447endif
448
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400449cpp = ' '.join(cc.cmd_array()) + ' -E'
450
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400451#####################################################################
452# compilation result tests
453
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400454conf.set('_GNU_SOURCE', true)
455conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400456
457conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
458conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
459conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
460conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
461conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
462conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
463conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
464
465decl_headers = '''
466#include <uchar.h>
467#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000468#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100469#include <linux/stat.h>
470#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400471'''
472# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
473
474foreach decl : ['char16_t',
475 'char32_t',
476 'key_serial_t',
477 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000478 'struct fib_rule_uid_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100479 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400480 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400481
482 # We get -1 if the size cannot be determined
483 have = cc.sizeof(decl, prefix : decl_headers) > 0
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200484 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400485endforeach
486
487foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
488 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
489 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
490 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530491 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400492 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
493 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
494 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
495 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
496 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530497 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400498 # if_tunnel.h is buggy and cannot be included on its own
499 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
500 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
501 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
502 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
503 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
504 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
505 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530506 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400507 ['NDA_IFINDEX', 'linux/neighbour.h'],
508 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000509 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400510 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530511 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400512 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400513 prefix = decl.length() > 2 ? decl[2] : ''
514 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200515 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400516endforeach
517
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400518foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200519 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400520endforeach
521
522foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100523 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100524 ['gettid', '''#include <sys/types.h>
525 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100526 ['pivot_root', '''#include <stdlib.h>
527 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100528 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400529 #include <sys/stat.h>
530 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100531 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100532 ['renameat2', '''#include <stdio.h>
533 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400534 ['kcmp', '''#include <linux/kcmp.h>'''],
535 ['keyctl', '''#include <sys/types.h>
536 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100537 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400538 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200539 ['bpf', '''#include <sys/syscall.h>
540 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100541 ['statx', '''#include <sys/types.h>
542 #include <sys/stat.h>
543 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100544 ['explicit_bzero' , '''#include <string.h>'''],
545 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400546]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400547
Lennart Poettering85db59b2017-12-25 12:01:14 +0100548 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200549 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400550endforeach
551
Lennart Poettering85db59b2017-12-25 12:01:14 +0100552if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200553 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200554 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400555else
556 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200557 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200558 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400559endif
560
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400561#####################################################################
562
563sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400564awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400565m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400566stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400567git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100568env = find_program('env')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400569
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400570meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400571mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400572test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
573splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400574
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400575# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
576# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500577progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400578 ['quotacheck', '/usr/sbin/quotacheck' ],
579 ['kill', '/usr/bin/kill' ],
580 ['kmod', '/usr/bin/kmod' ],
581 ['kexec', '/usr/sbin/kexec' ],
582 ['sulogin', '/usr/sbin/sulogin' ],
583 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
584 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
585 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
586 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
587 ]
588foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400589 path = get_option(prog[0] + '-path')
590 if path != ''
591 message('Using @1@ for @0@'.format(prog[0], path))
592 else
593 exe = find_program(prog[0],
594 '/usr/sbin/' + prog[0],
595 '/sbin/' + prog[0],
596 required: false)
597 path = exe.found() ? exe.path() : prog[1]
598 endif
599 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
600 conf.set_quoted(name, path)
601 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400602endforeach
603
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500604conf.set_quoted('TELINIT', get_option('telinit-path'))
605
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400606if run_command('ln', '--relative', '--help').returncode() != 0
607 error('ln does not support --relative')
608endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400609
610############################################################
611
612gperf = find_program('gperf')
613
614gperf_test_format = '''
615#include <string.h>
616const char * in_word_set(const char *, @0@);
617@1@
618'''
619gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
620gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
621gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
622if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400623 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400624else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400625 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
626 if cc.compiles(gperf_test)
627 gperf_len_type = 'unsigned'
628 else
629 error('unable to determine gperf len type')
630 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400631endif
632message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400633conf.set('GPERF_LEN_TYPE', gperf_len_type,
634 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400635
636############################################################
637
638if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400639 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400640endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100641foreach header : ['crypt.h',
642 'linux/btrfs.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400643 'linux/memfd.h',
644 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200645 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400646 'valgrind/memcheck.h',
647 'valgrind/valgrind.h',
648 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400649
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200650 conf.set10('HAVE_' + header.underscorify().to_upper(),
651 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400652endforeach
653
654############################################################
655
656conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400657conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
658gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400659
660default_hierarchy = get_option('default-hierarchy')
661conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
662 description : 'default cgroup hierarchy as string')
663if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400664 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400665elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400666 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400667else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400668 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400669endif
670
671time_epoch = get_option('time-epoch')
672if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400673 NEWS = files('NEWS')
674 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400675endif
676time_epoch = time_epoch.to_int()
677conf.set('TIME_EPOCH', time_epoch)
678
679system_uid_max = get_option('system-uid-max')
680if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400681 system_uid_max = run_command(
682 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800683 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
684 '/etc/login.defs').stdout().strip()
685 if system_uid_max == ''
686 system_uid_max = '999'
687 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400688endif
689system_uid_max = system_uid_max.to_int()
690conf.set('SYSTEM_UID_MAX', system_uid_max)
691substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400692message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400693
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400694system_gid_max = get_option('system-gid-max')
695if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400696 system_gid_max = run_command(
697 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800698 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
699 '/etc/login.defs').stdout().strip()
700 if system_gid_max == ''
701 system_gid_max = '999'
702 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400703endif
704system_gid_max = system_gid_max.to_int()
705conf.set('SYSTEM_GID_MAX', system_gid_max)
706substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400707message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400708
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100709dynamic_uid_min = get_option('dynamic-uid-min').to_int()
710dynamic_uid_max = get_option('dynamic-uid-max').to_int()
711conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
712conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
713substs.set('dynamicuidmin', dynamic_uid_min)
714substs.set('dynamicuidmax', dynamic_uid_max)
715
716container_uid_base_min = get_option('container-uid-base-min').to_int()
717container_uid_base_max = get_option('container-uid-base-max').to_int()
718conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
719conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
720substs.set('containeruidbasemin', container_uid_base_min)
721substs.set('containeruidbasemax', container_uid_base_max)
722
Lennart Poetteringafde4572017-12-05 11:00:24 +0100723nobody_user = get_option('nobody-user')
724nobody_group = get_option('nobody-group')
725
726getent_result = run_command('getent', 'passwd', '65534')
727if getent_result.returncode() == 0
728 name = getent_result.stdout().split(':')[0]
729 if name != nobody_user
730 message('WARNING:\n' +
731 ' The local user with the UID 65534 does not match the configured user name "@0@" of the nobody user (its name is @1@).\n'.format(nobody_user, name) +
732 ' Your build will result in an user table setup that is incompatible with the local system.')
733 endif
734endif
735id_result = run_command('id', '-u', nobody_user)
736if id_result.returncode() == 0
737 id = id_result.stdout().to_int()
738 if id != 65534
739 message('WARNING:\n' +
740 ' The local user with the configured user name "@0@" of the nobody user does not have UID 65534 (it has @1@).\n'.format(nobody_user, id) +
741 ' Your build will result in an user table setup that is incompatible with the local system.')
742 endif
743endif
744
745getent_result = run_command('getent', 'group', '65534')
746if getent_result.returncode() == 0
747 name = getent_result.stdout().split(':')[0]
748 if name != nobody_group
749 message('WARNING:\n' +
750 ' The local group with the GID 65534 does not match the configured group name "@0@" of the nobody group (its name is @1@).\n'.format(nobody_group, name) +
751 ' Your build will result in an group table setup that is incompatible with the local system.')
752 endif
753endif
754id_result = run_command('id', '-g', nobody_group)
755if id_result.returncode() == 0
756 id = id_result.stdout().to_int()
757 if id != 65534
758 message('WARNING:\n' +
759 ' The local group with the configured group name "@0@" of the nobody group does not have UID 65534 (it has @1@).\n'.format(nobody_group, id) +
760 ' Your build will result in an group table setup that is incompatible with the local system.')
761 endif
762endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900763if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
764 message('WARNING:\n' +
765 ' The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
766 ' Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
767endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100768
769conf.set_quoted('NOBODY_USER_NAME', nobody_user)
770conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900771substs.set('NOBODY_USER_NAME', nobody_user)
772substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100773
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400774tty_gid = get_option('tty-gid')
775conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400776substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400777
Ikey Doherty84786b82017-12-03 12:28:23 +0000778# Ensure provided GID argument is numeric, otherwise fallback to default assignment
779if get_option('users-gid') != ''
Yu Watanabed6806872017-12-05 14:01:39 +0900780 users_gid = get_option('users-gid').to_int()
Ikey Doherty84786b82017-12-03 12:28:23 +0000781else
Yu Watanabed6806872017-12-05 14:01:39 +0900782 users_gid = '-'
Ikey Doherty84786b82017-12-03 12:28:23 +0000783endif
784substs.set('USERS_GID', users_gid)
785
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400786if get_option('adm-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400787 m4_defines += ['-DENABLE_ADM_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400788endif
789
790if get_option('wheel-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400791 m4_defines += ['-DENABLE_WHEEL_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400792endif
793
794substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700795substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400796
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400797kill_user_processes = get_option('default-kill-user-processes')
798conf.set10('KILL_USER_PROCESSES', kill_user_processes)
799substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400800
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400801dns_servers = get_option('dns-servers')
802conf.set_quoted('DNS_SERVERS', dns_servers)
803substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400804
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400805ntp_servers = get_option('ntp-servers')
806conf.set_quoted('NTP_SERVERS', ntp_servers)
807substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400808
809conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
810
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400811substs.set('SUSHELL', get_option('debug-shell'))
812substs.set('DEBUGTTY', get_option('debug-tty'))
813
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400814debug = get_option('debug')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200815enable_debug_hashmap = false
816enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400817if debug != ''
818 foreach name : debug.split(',')
819 if name == 'hashmap'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200820 enable_debug_hashmap = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400821 elif name == 'mmap-cache'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200822 enable_debug_mmap_cache = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400823 else
824 message('unknown debug option "@0@", ignoring'.format(name))
825 endif
826 endforeach
827endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200828conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
829conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400830
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400831#####################################################################
832
833threads = dependency('threads')
834librt = cc.find_library('rt')
835libm = cc.find_library('m')
836libdl = cc.find_library('dl')
837libcrypt = cc.find_library('crypt')
838
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400839libcap = dependency('libcap', required : false)
840if not libcap.found()
841 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
842 libcap = cc.find_library('cap')
843endif
844
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400845libmount = dependency('mount',
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -0500846 version : '>= 2.30',
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500847 required : not fuzzer_build)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400848
849want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500850if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400851 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400852 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400853 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200854 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400855else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200856 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400857 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400858endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200859conf.set10('HAVE_SECCOMP', have)
860m4_defines += have ? ['-DHAVE_SECCOMP'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400861
862want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500863if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400864 libselinux = dependency('libselinux',
865 version : '>= 2.1.9',
866 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200867 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400868else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200869 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400870 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400871endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200872conf.set10('HAVE_SELINUX', have)
873m4_defines += have ? ['-DHAVE_SELINUX'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400874
875want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500876if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400877 libapparmor = dependency('libapparmor',
878 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200879 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400880else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200881 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400882 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400883endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200884conf.set10('HAVE_APPARMOR', have)
885m4_defines += have ? ['-DHAVE_APPARMOR'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400886
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400887smack_run_label = get_option('smack-run-label')
888if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400889 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
890 m4_defines += ['-DHAVE_SMACK_RUN_LABEL']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400891endif
892
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400893want_polkit = get_option('polkit')
894install_polkit = false
895install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500896if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400897 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400898
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400899 libpolkit = dependency('polkit-gobject-1',
900 required : false)
901 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
902 message('Old polkit detected, will install pkla files')
903 install_polkit_pkla = true
904 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400905endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200906conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400907
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400908want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500909if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400910 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200911 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400912else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200913 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400914 libacl = []
915endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200916conf.set10('HAVE_ACL', have)
917m4_defines += have ? ['-DHAVE_ACL'] : []
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400918
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400919want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500920if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400921 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200922 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400923else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200924 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400925 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400926endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200927conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400928
929want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500930if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400931 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200932 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400933else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200934 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400935 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400936endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200937conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400938
939want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500940if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400941 libkmod = dependency('libkmod',
942 version : '>= 15',
943 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200944 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400945else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200946 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400947 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400948endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200949conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400950
951want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500952if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400953 libpam = cc.find_library('pam', required : want_pam == 'true')
954 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200955 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400956else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200957 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400958 libpam = []
959 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400960endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200961conf.set10('HAVE_PAM', have)
962m4_defines += have ? ['-DHAVE_PAM'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400963
964want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500965if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400966 libmicrohttpd = dependency('libmicrohttpd',
967 version : '>= 0.9.33',
968 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200969 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400970else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200971 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400972 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400973endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200974conf.set10('HAVE_MICROHTTPD', have)
975m4_defines += have ? ['-DHAVE_MICROHTTPD'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400976
977want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500978if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400979 libcryptsetup = dependency('libcryptsetup',
980 version : '>= 1.6.0',
981 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200982 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400983else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200984 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400985 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400986endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200987conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400988
989want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500990if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400991 libcurl = dependency('libcurl',
992 version : '>= 7.32.0',
993 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200994 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400995else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200996 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400997 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400998endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200999conf.set10('HAVE_LIBCURL', have)
1000m4_defines += have ? ['-DHAVE_LIBCURL'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001001
1002want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001003want_libidn2 = get_option('libidn2')
1004if want_libidn == 'true' and want_libidn2 == 'true'
1005 error('libidn and libidn2 cannot be requested simultaneously')
1006endif
1007
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001008if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001009 libidn = dependency('libidn',
1010 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001011 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001012else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001013 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001014 libidn = []
1015endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001016conf.set10('HAVE_LIBIDN', have)
1017m4_defines += have ? ['-DHAVE_LIBIDN'] : []
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001018if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001019 # libidn is used for both libidn and libidn2 objects
1020 libidn = dependency('libidn2',
1021 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001022 have = libidn.found()
1023else
1024 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001025endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001026conf.set10('HAVE_LIBIDN2', have)
1027m4_defines += have ? ['-DHAVE_LIBIDN2'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001028
1029want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001030if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001031 libiptc = dependency('libiptc',
1032 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001033 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001034else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001035 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001036 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001037endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001038conf.set10('HAVE_LIBIPTC', have)
1039m4_defines += have ? ['-DHAVE_LIBIPTC'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001040
1041want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001042if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001043 libqrencode = dependency('libqrencode',
1044 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001045 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001046else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001047 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001048 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001049endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001050conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001051
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001052want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001053if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001054 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1055 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001056 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001057else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001058 have = false
1059endif
1060if not have
1061 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001062 libgcrypt = []
1063 libgpg_error = []
1064endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001065conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001066
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001067want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001068if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001069 libgnutls = dependency('gnutls',
1070 version : '>= 3.1.4',
1071 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001072 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001073else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001074 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001075 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001076endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001077conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001078
1079want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001080if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001081 libdw = dependency('libdw',
1082 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001083 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001084else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001085 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001086 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001087endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001088conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001089
1090want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001091if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001092 libz = dependency('zlib',
1093 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001094 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001095else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001096 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001097 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001098endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001099conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001100
1101want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001102if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001103 libbzip2 = cc.find_library('bz2',
1104 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001105 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001106else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001107 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001108 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001109endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001110conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001111
1112want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001113if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001114 libxz = dependency('liblzma',
1115 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001116 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001117else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001118 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001119 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001120endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001121conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001122
1123want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001124if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001125 liblz4 = dependency('liblz4',
1126 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001127 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001128else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001129 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001130 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001131endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001132conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001133
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001134want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001135if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001136 libxkbcommon = dependency('xkbcommon',
1137 version : '>= 0.3.0',
1138 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001139 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001140else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001141 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001142 libxkbcommon = []
1143endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001144conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001145
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001146want_pcre2 = get_option('pcre2')
1147if want_pcre2 != 'false'
1148 libpcre2 = dependency('libpcre2-8',
1149 required : want_pcre2 == 'true')
1150 have = libpcre2.found()
1151else
1152 have = false
1153 libpcre2 = []
1154endif
1155conf.set10('HAVE_PCRE2', have)
1156
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001157want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001158if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001159 libglib = dependency('glib-2.0',
1160 version : '>= 2.22.0',
1161 required : want_glib == 'true')
1162 libgobject = dependency('gobject-2.0',
1163 version : '>= 2.22.0',
1164 required : want_glib == 'true')
1165 libgio = dependency('gio-2.0',
1166 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001167 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001168else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001169 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001170 libglib = []
1171 libgobject = []
1172 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001173endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001174conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001175
1176want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001177if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001178 libdbus = dependency('dbus-1',
1179 version : '>= 1.3.2',
1180 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001181 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001182else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001183 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001184 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001185endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001186conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001187
Yu Watanabe42303dc2017-06-18 05:22:32 +09001188default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001189if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001190 default_dnssec = 'no'
1191endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001192if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001193 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1194 default_dnssec = 'no'
1195endif
1196conf.set('DEFAULT_DNSSEC_MODE',
1197 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1198substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1199
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001200want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001201if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001202 have = (conf.get('HAVE_LIBCURL') == 1 and
1203 conf.get('HAVE_ZLIB') == 1 and
1204 conf.get('HAVE_BZIP2') == 1 and
1205 conf.get('HAVE_XZ') == 1 and
1206 conf.get('HAVE_GCRYPT') == 1)
1207 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001208 error('importd support was requested, but dependencies are not available')
1209 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001210else
1211 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001212endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001213conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001214
1215want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001216if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001217 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1218 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001219 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1220 # it's possible to build one without the other. Complain only if
1221 # support was explictly requested. The auxiliary files like sysusers
1222 # config should be installed when any of the programs are built.
1223 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1224 error('remote support was requested, but dependencies are not available')
1225 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001226 have = have_deps[0] or have_deps[1]
1227else
1228 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001229endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001230conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001231
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001232foreach term : ['utmp',
1233 'hibernate',
1234 'environment-d',
1235 'binfmt',
1236 'coredump',
1237 'resolve',
1238 'logind',
1239 'hostnamed',
1240 'localed',
1241 'machined',
1242 'networkd',
1243 'timedated',
1244 'timesyncd',
1245 'myhostname',
1246 'firstboot',
1247 'randomseed',
1248 'backlight',
1249 'vconsole',
1250 'quotacheck',
1251 'sysusers',
1252 'tmpfiles',
1253 'hwdb',
1254 'rfkill',
1255 'ldconfig',
1256 'efi',
1257 'tpm',
1258 'ima',
1259 'smack',
1260 'gshadow',
1261 'idn',
1262 'nss-systemd']
1263 have = get_option(term)
1264 name = 'ENABLE_' + term.underscorify().to_upper()
1265 conf.set10(name, have)
1266 m4_defines += have ? ['-D' + name] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001267endforeach
1268
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001269want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001270install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001271slow_tests = get_option('slow-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001272tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001273fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001274
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001275conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001276
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001277#####################################################################
1278
1279if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001280 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001281
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001282 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001283 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001284 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001285 elif efi_arch == 'x86_64'
1286 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001287 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001288 elif efi_arch == 'arm'
1289 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001290 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001291 elif efi_arch == 'aarch64'
1292 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001293 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001294 else
1295 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001296 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001297 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001298
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001299 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001300 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001301
1302 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001303else
1304 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001305endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001306conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001307
1308#####################################################################
1309
1310config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001311 output : 'config.h',
1312 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001313
1314includes = include_directories('src/basic',
1315 'src/shared',
1316 'src/systemd',
1317 'src/journal',
1318 'src/resolve',
1319 'src/timesync',
1320 'src/login',
1321 'src/udev',
1322 'src/libudev',
1323 'src/core',
1324 'src/libsystemd/sd-bus',
1325 'src/libsystemd/sd-device',
1326 'src/libsystemd/sd-hwdb',
1327 'src/libsystemd/sd-id128',
1328 'src/libsystemd/sd-netlink',
1329 'src/libsystemd/sd-network',
1330 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001331 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001332
1333add_project_arguments('-include', 'config.h', language : 'c')
1334
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001335subdir('po')
1336subdir('catalog')
1337subdir('src/systemd')
1338subdir('src/basic')
1339subdir('src/libsystemd')
1340subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001341subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001342subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001343
1344libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001345 'journal-core',
1346 libjournal_core_sources,
1347 journald_gperf_c,
1348 include_directories : includes,
1349 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001350
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001351libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001352libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001353 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001354 'src/systemd/sd-id128.h', # pick a header file at random to work around old meson bug
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001355 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001356 include_directories : includes,
1357 link_args : ['-shared',
1358 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001359 link_with : [libbasic,
1360 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001361 link_whole : [libsystemd_static,
1362 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001363 dependencies : [threads,
1364 librt,
1365 libxz,
1366 liblz4],
1367 link_depends : libsystemd_sym,
1368 install : true,
1369 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001370
1371############################################################
1372
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001373# binaries that have --help and are intended for use by humans,
1374# usually, but not always, installed in /bin.
1375public_programs = []
1376
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001377subdir('src/libudev')
1378subdir('src/shared')
1379subdir('src/core')
1380subdir('src/udev')
1381subdir('src/network')
1382
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001383subdir('src/analyze')
1384subdir('src/journal-remote')
1385subdir('src/coredump')
1386subdir('src/hostname')
1387subdir('src/import')
1388subdir('src/kernel-install')
1389subdir('src/locale')
1390subdir('src/machine')
1391subdir('src/nspawn')
1392subdir('src/resolve')
1393subdir('src/timedate')
1394subdir('src/timesync')
1395subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001396subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001397
1398subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001399subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001400subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001401subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001402
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001403############################################################
1404
1405# only static linking apart from libdl, to make sure that the
1406# module is linked to all libraries that it uses.
1407test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001408 'test-dlopen',
1409 test_dlopen_c,
1410 include_directories : includes,
1411 link_with : [libbasic],
1412 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001413
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001414foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001415 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001416 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001417 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001418
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001419 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001420 if condition
1421 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001422
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001423 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1424 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001425
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001426 nss = shared_library(
1427 'nss_' + module,
1428 'src/nss-@0@/nss-@0@.c'.format(module),
1429 version : '2',
1430 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001431 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1432 link_args : ['-Wl,-z,nodelete',
1433 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001434 '-Wl,--version-script=' + version_script_arg,
1435 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001436 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001437 libbasic],
1438 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001439 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001440 link_depends : sym,
1441 install : true,
1442 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001443
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001444 # We cannot use shared_module because it does not support version suffix.
1445 # Unfortunately shared_library insists on creating the symlink…
1446 meson.add_install_script('sh', '-c',
1447 'rm $DESTDIR@0@/libnss_@1@.so'
1448 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001449
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001450 test('dlopen-nss_' + module,
1451 test_dlopen,
1452 args : [nss.full_path()]) # path to dlopen must include a slash
1453 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001454endforeach
1455
1456############################################################
1457
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001458executable('systemd',
1459 systemd_sources,
1460 include_directories : includes,
1461 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001462 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001463 dependencies : [threads,
1464 librt,
1465 libseccomp,
1466 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001467 libmount,
1468 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001469 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001470 install : true,
1471 install_dir : rootlibexecdir)
1472
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001473meson.add_install_script(meson_make_symlink,
1474 join_paths(rootlibexecdir, 'systemd'),
1475 join_paths(rootsbindir, 'init'))
1476
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001477exe = executable('systemd-analyze',
1478 systemd_analyze_sources,
1479 include_directories : includes,
1480 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001481 libshared],
1482 dependencies : [threads,
1483 librt,
1484 libseccomp,
1485 libselinux,
1486 libmount,
1487 libblkid],
1488 install_rpath : rootlibexecdir,
1489 install : true)
1490public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001491
1492executable('systemd-journald',
1493 systemd_journald_sources,
1494 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001495 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001496 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001497 dependencies : [threads,
1498 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001499 liblz4,
1500 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001501 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001502 install : true,
1503 install_dir : rootlibexecdir)
1504
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001505exe = executable('systemd-cat',
1506 systemd_cat_sources,
1507 include_directories : includes,
1508 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001509 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001510 dependencies : [threads],
1511 install_rpath : rootlibexecdir,
1512 install : true)
1513public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001514
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001515exe = executable('journalctl',
1516 journalctl_sources,
1517 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001518 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001519 dependencies : [threads,
1520 libqrencode,
1521 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001522 liblz4,
1523 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001524 install_rpath : rootlibexecdir,
1525 install : true,
1526 install_dir : rootbindir)
1527public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001528
1529executable('systemd-getty-generator',
1530 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001531 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001532 link_with : [libshared],
1533 install_rpath : rootlibexecdir,
1534 install : true,
1535 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001536
1537executable('systemd-debug-generator',
1538 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001539 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001540 link_with : [libshared],
1541 install_rpath : rootlibexecdir,
1542 install : true,
1543 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001544
1545executable('systemd-fstab-generator',
1546 'src/fstab-generator/fstab-generator.c',
1547 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001548 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001549 link_with : [libshared],
1550 install_rpath : rootlibexecdir,
1551 install : true,
1552 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001553
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001554if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001555 executable('30-systemd-environment-d-generator',
1556 'src/environment-d-generator/environment-d-generator.c',
1557 include_directories : includes,
1558 link_with : [libshared],
1559 install_rpath : rootlibexecdir,
1560 install : true,
1561 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001562
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001563 meson.add_install_script(meson_make_symlink,
1564 join_paths(sysconfdir, 'environment'),
1565 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001566endif
1567
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001568if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001569 executable('systemd-hibernate-resume-generator',
1570 'src/hibernate-resume/hibernate-resume-generator.c',
1571 include_directories : includes,
1572 link_with : [libshared],
1573 install_rpath : rootlibexecdir,
1574 install : true,
1575 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001576
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001577 executable('systemd-hibernate-resume',
1578 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001579 include_directories : includes,
1580 link_with : [libshared],
1581 install_rpath : rootlibexecdir,
1582 install : true,
1583 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001584endif
1585
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001586if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001587 executable('systemd-gpt-auto-generator',
1588 'src/gpt-auto-generator/gpt-auto-generator.c',
1589 'src/basic/blkid-util.h',
1590 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001591 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001592 dependencies : libblkid,
1593 install_rpath : rootlibexecdir,
1594 install : true,
1595 install_dir : systemgeneratordir)
1596
1597 exe = executable('systemd-dissect',
1598 'src/dissect/dissect.c',
1599 include_directories : includes,
1600 link_with : [libshared],
1601 install_rpath : rootlibexecdir,
1602 install : true,
1603 install_dir : rootlibexecdir)
1604 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001605endif
1606
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001607if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001608 executable('systemd-resolved',
1609 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001610 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001611 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001612 libbasic_gcrypt,
1613 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001614 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001615 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001616 libm,
1617 libidn],
1618 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001619 install : true,
1620 install_dir : rootlibexecdir)
1621
1622 exe = executable('systemd-resolve',
1623 systemd_resolve_sources,
1624 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001625 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001626 libbasic_gcrypt,
1627 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001628 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001629 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001630 libm,
1631 libidn],
1632 install_rpath : rootlibexecdir,
1633 install : true)
1634 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001635endif
1636
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001637if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001638 executable('systemd-logind',
1639 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001640 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001641 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001642 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001643 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001644 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001645 install_rpath : rootlibexecdir,
1646 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001647 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001648
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001649 exe = executable('loginctl',
1650 loginctl_sources,
1651 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001652 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001653 dependencies : [threads,
1654 liblz4,
1655 libxz],
1656 install_rpath : rootlibexecdir,
1657 install : true,
1658 install_dir : rootbindir)
1659 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001660
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001661 exe = executable('systemd-inhibit',
1662 'src/login/inhibit.c',
1663 include_directories : includes,
1664 link_with : [libshared],
1665 install_rpath : rootlibexecdir,
1666 install : true,
1667 install_dir : rootbindir)
1668 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001669
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001670 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001671 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1672 pam_systemd = shared_library(
1673 'pam_systemd',
1674 pam_systemd_c,
1675 name_prefix : '',
1676 include_directories : includes,
1677 link_args : ['-shared',
1678 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001679 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001680 libshared_static],
1681 dependencies : [threads,
1682 libpam,
1683 libpam_misc],
1684 link_depends : pam_systemd_sym,
1685 install : true,
1686 install_dir : pamlibdir)
1687
1688 test('dlopen-pam_systemd',
1689 test_dlopen,
1690 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1691 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001692endif
1693
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001694if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001695 executable('systemd-user-sessions',
1696 'src/user-sessions/user-sessions.c',
1697 include_directories : includes,
1698 link_with : [libshared],
1699 install_rpath : rootlibexecdir,
1700 install : true,
1701 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001702endif
1703
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001704if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001705 exe = executable('bootctl',
1706 'src/boot/bootctl.c',
1707 include_directories : includes,
1708 link_with : [libshared],
1709 dependencies : [libblkid],
1710 install_rpath : rootlibexecdir,
1711 install : true)
1712 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001713endif
1714
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001715exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1716 include_directories : includes,
1717 link_with : [libshared],
1718 dependencies : [threads],
1719 install_rpath : rootlibexecdir,
1720 install : true)
1721public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001722
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001723exe = executable('systemctl', 'src/systemctl/systemctl.c',
1724 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001725 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001726 dependencies : [threads,
1727 libcap,
1728 libselinux,
1729 libxz,
1730 liblz4],
1731 install_rpath : rootlibexecdir,
1732 install : true,
1733 install_dir : rootbindir)
1734public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001735
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001736foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1737 meson.add_install_script(meson_make_symlink,
1738 join_paths(rootbindir, 'systemctl'),
1739 join_paths(rootsbindir, alias))
1740endforeach
1741
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001742if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001743 executable('systemd-backlight',
1744 'src/backlight/backlight.c',
1745 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001746 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001747 install_rpath : rootlibexecdir,
1748 install : true,
1749 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001750endif
1751
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001752if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001753 executable('systemd-rfkill',
1754 'src/rfkill/rfkill.c',
1755 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001756 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001757 install_rpath : rootlibexecdir,
1758 install : true,
1759 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001760endif
1761
1762executable('systemd-system-update-generator',
1763 'src/system-update-generator/system-update-generator.c',
1764 include_directories : includes,
1765 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001766 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001767 install : true,
1768 install_dir : systemgeneratordir)
1769
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001770if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001771 executable('systemd-cryptsetup',
1772 'src/cryptsetup/cryptsetup.c',
1773 include_directories : includes,
1774 link_with : [libshared],
1775 dependencies : [libcryptsetup],
1776 install_rpath : rootlibexecdir,
1777 install : true,
1778 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001779
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001780 executable('systemd-cryptsetup-generator',
1781 'src/cryptsetup/cryptsetup-generator.c',
1782 include_directories : includes,
1783 link_with : [libshared],
1784 dependencies : [libcryptsetup],
1785 install_rpath : rootlibexecdir,
1786 install : true,
1787 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001788
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001789 executable('systemd-veritysetup',
1790 'src/veritysetup/veritysetup.c',
1791 include_directories : includes,
1792 link_with : [libshared],
1793 dependencies : [libcryptsetup],
1794 install_rpath : rootlibexecdir,
1795 install : true,
1796 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001797
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001798 executable('systemd-veritysetup-generator',
1799 'src/veritysetup/veritysetup-generator.c',
1800 include_directories : includes,
1801 link_with : [libshared],
1802 dependencies : [libcryptsetup],
1803 install_rpath : rootlibexecdir,
1804 install : true,
1805 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001806endif
1807
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001808if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001809 executable('systemd-sysv-generator',
1810 'src/sysv-generator/sysv-generator.c',
1811 include_directories : includes,
1812 link_with : [libshared],
1813 install_rpath : rootlibexecdir,
1814 install : true,
1815 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001816
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001817 executable('systemd-rc-local-generator',
1818 'src/rc-local-generator/rc-local-generator.c',
1819 include_directories : includes,
1820 link_with : [libshared],
1821 install_rpath : rootlibexecdir,
1822 install : true,
1823 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001824endif
1825
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001826if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001827 executable('systemd-hostnamed',
1828 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001829 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001830 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001831 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001832 install : true,
1833 install_dir : rootlibexecdir)
1834
1835 exe = executable('hostnamectl',
1836 'src/hostname/hostnamectl.c',
1837 include_directories : includes,
1838 link_with : [libshared],
1839 install_rpath : rootlibexecdir,
1840 install : true)
1841 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001842endif
1843
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001844if conf.get('ENABLE_LOCALED') == 1
1845 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001846 # logind will load libxkbcommon.so dynamically on its own
1847 deps = [libdl]
1848 else
1849 deps = []
1850 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001851
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001852 executable('systemd-localed',
1853 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001854 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001855 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001856 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001857 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001858 install : true,
1859 install_dir : rootlibexecdir)
1860
1861 exe = executable('localectl',
1862 localectl_sources,
1863 include_directories : includes,
1864 link_with : [libshared],
1865 install_rpath : rootlibexecdir,
1866 install : true)
1867 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001868endif
1869
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001870if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001871 executable('systemd-timedated',
1872 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001873 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001874 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001875 install_rpath : rootlibexecdir,
1876 install : true,
1877 install_dir : rootlibexecdir)
1878
1879 exe = executable('timedatectl',
1880 'src/timedate/timedatectl.c',
1881 include_directories : includes,
1882 install_rpath : rootlibexecdir,
1883 link_with : [libshared],
1884 install : true)
1885 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001886endif
1887
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001888if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001889 executable('systemd-timesyncd',
1890 systemd_timesyncd_sources,
1891 include_directories : includes,
1892 link_with : [libshared],
1893 dependencies : [threads,
1894 libm],
1895 install_rpath : rootlibexecdir,
1896 install : true,
1897 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001898endif
1899
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001900if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001901 executable('systemd-machined',
1902 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001903 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001904 link_with : [libmachine_core,
1905 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001906 install_rpath : rootlibexecdir,
1907 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001908 install_dir : rootlibexecdir)
1909
1910 exe = executable('machinectl',
1911 'src/machine/machinectl.c',
1912 include_directories : includes,
1913 link_with : [libshared],
1914 dependencies : [threads,
1915 libxz,
1916 liblz4],
1917 install_rpath : rootlibexecdir,
1918 install : true,
1919 install_dir : rootbindir)
1920 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001921endif
1922
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001923if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001924 executable('systemd-importd',
1925 systemd_importd_sources,
1926 include_directories : includes,
1927 link_with : [libshared],
1928 dependencies : [threads],
1929 install_rpath : rootlibexecdir,
1930 install : true,
1931 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001932
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001933 systemd_pull = executable('systemd-pull',
1934 systemd_pull_sources,
1935 include_directories : includes,
1936 link_with : [libshared],
1937 dependencies : [libcurl,
1938 libz,
1939 libbzip2,
1940 libxz,
1941 libgcrypt],
1942 install_rpath : rootlibexecdir,
1943 install : true,
1944 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001945
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001946 systemd_import = executable('systemd-import',
1947 systemd_import_sources,
1948 include_directories : includes,
1949 link_with : [libshared],
1950 dependencies : [libcurl,
1951 libz,
1952 libbzip2,
1953 libxz],
1954 install_rpath : rootlibexecdir,
1955 install : true,
1956 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001957
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001958 systemd_export = executable('systemd-export',
1959 systemd_export_sources,
1960 include_directories : includes,
1961 link_with : [libshared],
1962 dependencies : [libcurl,
1963 libz,
1964 libbzip2,
1965 libxz],
1966 install_rpath : rootlibexecdir,
1967 install : true,
1968 install_dir : rootlibexecdir)
1969 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001970endif
1971
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001972if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001973 exe = executable('systemd-journal-upload',
1974 systemd_journal_upload_sources,
1975 include_directories : includes,
1976 link_with : [libshared],
1977 dependencies : [threads,
1978 libcurl,
1979 libgnutls,
1980 libxz,
1981 liblz4],
1982 install_rpath : rootlibexecdir,
1983 install : true,
1984 install_dir : rootlibexecdir)
1985 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001986endif
1987
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001988if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001989 s_j_remote = executable('systemd-journal-remote',
1990 systemd_journal_remote_sources,
1991 include_directories : includes,
1992 link_with : [libshared],
1993 dependencies : [threads,
1994 libmicrohttpd,
1995 libgnutls,
1996 libxz,
1997 liblz4],
1998 install_rpath : rootlibexecdir,
1999 install : true,
2000 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002001
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002002 s_j_gatewayd = executable('systemd-journal-gatewayd',
2003 systemd_journal_gatewayd_sources,
2004 include_directories : includes,
2005 link_with : [libshared],
2006 dependencies : [threads,
2007 libmicrohttpd,
2008 libgnutls,
2009 libxz,
2010 liblz4],
2011 install_rpath : rootlibexecdir,
2012 install : true,
2013 install_dir : rootlibexecdir)
2014 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002015endif
2016
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002017if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002018 executable('systemd-coredump',
2019 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002020 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002021 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002022 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002023 libacl,
2024 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002025 libxz,
2026 liblz4],
2027 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002028 install : true,
2029 install_dir : rootlibexecdir)
2030
2031 exe = executable('coredumpctl',
2032 coredumpctl_sources,
2033 include_directories : includes,
2034 link_with : [libshared],
2035 dependencies : [threads,
2036 libxz,
2037 liblz4],
2038 install_rpath : rootlibexecdir,
2039 install : true)
2040 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002041endif
2042
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002043if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002044 exe = executable('systemd-binfmt',
2045 'src/binfmt/binfmt.c',
2046 include_directories : includes,
2047 link_with : [libshared],
2048 install_rpath : rootlibexecdir,
2049 install : true,
2050 install_dir : rootlibexecdir)
2051 public_programs += [exe]
2052
2053 meson.add_install_script('sh', '-c',
2054 mkdir_p.format(binfmtdir))
2055 meson.add_install_script('sh', '-c',
2056 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2057endif
2058
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002059if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002060 executable('systemd-vconsole-setup',
2061 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002062 include_directories : includes,
2063 link_with : [libshared],
2064 install_rpath : rootlibexecdir,
2065 install : true,
2066 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002067endif
2068
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002069if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002070 executable('systemd-random-seed',
2071 'src/random-seed/random-seed.c',
2072 include_directories : includes,
2073 link_with : [libshared],
2074 install_rpath : rootlibexecdir,
2075 install : true,
2076 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002077endif
2078
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002079if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002080 executable('systemd-firstboot',
2081 'src/firstboot/firstboot.c',
2082 include_directories : includes,
2083 link_with : [libshared],
2084 dependencies : [libcrypt],
2085 install_rpath : rootlibexecdir,
2086 install : true,
2087 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002088endif
2089
2090executable('systemd-remount-fs',
2091 'src/remount-fs/remount-fs.c',
2092 'src/core/mount-setup.c',
2093 'src/core/mount-setup.h',
2094 include_directories : includes,
2095 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002096 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002097 install : true,
2098 install_dir : rootlibexecdir)
2099
2100executable('systemd-machine-id-setup',
2101 'src/machine-id-setup/machine-id-setup-main.c',
2102 'src/core/machine-id-setup.c',
2103 'src/core/machine-id-setup.h',
2104 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002105 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002106 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002107 install : true,
2108 install_dir : rootbindir)
2109
2110executable('systemd-fsck',
2111 'src/fsck/fsck.c',
2112 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002113 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002114 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002115 install : true,
2116 install_dir : rootlibexecdir)
2117
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002118executable('systemd-growfs',
2119 'src/partition/growfs.c',
2120 include_directories : includes,
2121 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002122 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002123 install_rpath : rootlibexecdir,
2124 install : true,
2125 install_dir : rootlibexecdir)
2126
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002127executable('systemd-makefs',
2128 'src/partition/makefs.c',
2129 include_directories : includes,
2130 link_with : [libshared],
2131 install_rpath : rootlibexecdir,
2132 install : true,
2133 install_dir : rootlibexecdir)
2134
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002135executable('systemd-sleep',
2136 'src/sleep/sleep.c',
2137 include_directories : includes,
2138 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002139 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002140 install : true,
2141 install_dir : rootlibexecdir)
2142
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002143exe = executable('systemd-sysctl',
2144 'src/sysctl/sysctl.c',
2145 include_directories : includes,
2146 link_with : [libshared],
2147 install_rpath : rootlibexecdir,
2148 install : true,
2149 install_dir : rootlibexecdir)
2150public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002151
2152executable('systemd-ac-power',
2153 'src/ac-power/ac-power.c',
2154 include_directories : includes,
2155 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002156 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002157 install : true,
2158 install_dir : rootlibexecdir)
2159
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002160exe = executable('systemd-detect-virt',
2161 'src/detect-virt/detect-virt.c',
2162 include_directories : includes,
2163 link_with : [libshared],
2164 install_rpath : rootlibexecdir,
2165 install : true)
2166public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002167
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002168exe = executable('systemd-delta',
2169 'src/delta/delta.c',
2170 include_directories : includes,
2171 link_with : [libshared],
2172 install_rpath : rootlibexecdir,
2173 install : true)
2174public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002175
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002176exe = executable('systemd-escape',
2177 'src/escape/escape.c',
2178 include_directories : includes,
2179 link_with : [libshared],
2180 install_rpath : rootlibexecdir,
2181 install : true,
2182 install_dir : rootbindir)
2183public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002184
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002185exe = executable('systemd-notify',
2186 'src/notify/notify.c',
2187 include_directories : includes,
2188 link_with : [libshared],
2189 install_rpath : rootlibexecdir,
2190 install : true,
2191 install_dir : rootbindir)
2192public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002193
2194executable('systemd-volatile-root',
2195 'src/volatile-root/volatile-root.c',
2196 include_directories : includes,
2197 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002198 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002199 install : true,
2200 install_dir : rootlibexecdir)
2201
2202executable('systemd-cgroups-agent',
2203 'src/cgroups-agent/cgroups-agent.c',
2204 include_directories : includes,
2205 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002206 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002207 install : true,
2208 install_dir : rootlibexecdir)
2209
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002210exe = executable('systemd-path',
2211 'src/path/path.c',
2212 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002213 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002214 install_rpath : rootlibexecdir,
2215 install : true)
2216public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002217
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002218exe = executable('systemd-ask-password',
2219 'src/ask-password/ask-password.c',
2220 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002221 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002222 install_rpath : rootlibexecdir,
2223 install : true,
2224 install_dir : rootbindir)
2225public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002226
2227executable('systemd-reply-password',
2228 'src/reply-password/reply-password.c',
2229 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002230 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002231 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002232 install : true,
2233 install_dir : rootlibexecdir)
2234
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002235exe = executable('systemd-tty-ask-password-agent',
2236 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2237 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002238 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002239 install_rpath : rootlibexecdir,
2240 install : true,
2241 install_dir : rootbindir)
2242public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002243
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002244exe = executable('systemd-cgls',
2245 'src/cgls/cgls.c',
2246 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002247 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002248 install_rpath : rootlibexecdir,
2249 install : true)
2250public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002251
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002252exe = executable('systemd-cgtop',
2253 'src/cgtop/cgtop.c',
2254 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002255 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002256 install_rpath : rootlibexecdir,
2257 install : true)
2258public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002259
2260executable('systemd-initctl',
2261 'src/initctl/initctl.c',
2262 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002263 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002264 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002265 install : true,
2266 install_dir : rootlibexecdir)
2267
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002268exe = executable('systemd-mount',
2269 'src/mount/mount-tool.c',
2270 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002271 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002272 install_rpath : rootlibexecdir,
2273 install : true)
2274public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002275
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002276meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002277 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002278
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002279exe = executable('systemd-run',
2280 'src/run/run.c',
2281 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002282 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002283 install_rpath : rootlibexecdir,
2284 install : true)
2285public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002286
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002287exe = executable('systemd-stdio-bridge',
2288 'src/stdio-bridge/stdio-bridge.c',
2289 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002290 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002291 install_rpath : rootlibexecdir,
2292 install : true)
2293public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002294
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002295exe = executable('busctl',
2296 'src/busctl/busctl.c',
2297 'src/busctl/busctl-introspect.c',
2298 'src/busctl/busctl-introspect.h',
2299 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002300 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002301 install_rpath : rootlibexecdir,
2302 install : true)
2303public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002304
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002305if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002306 exe = executable('systemd-sysusers',
2307 'src/sysusers/sysusers.c',
2308 include_directories : includes,
2309 link_with : [libshared],
2310 install_rpath : rootlibexecdir,
2311 install : true,
2312 install_dir : rootbindir)
2313 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002314endif
2315
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002316if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002317 exe = executable('systemd-tmpfiles',
2318 'src/tmpfiles/tmpfiles.c',
2319 include_directories : includes,
2320 link_with : [libshared],
2321 dependencies : [libacl],
2322 install_rpath : rootlibexecdir,
2323 install : true,
2324 install_dir : rootbindir)
2325 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002326
2327 test('test-systemd-tmpfiles',
2328 test_systemd_tmpfiles_py,
2329 args : exe.full_path())
2330 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002331endif
2332
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002333if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002334 exe = executable('systemd-hwdb',
2335 'src/hwdb/hwdb.c',
2336 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2337 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002338 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002339 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002340 install : true,
2341 install_dir : rootbindir)
2342 public_programs += [exe]
2343endif
2344
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002345if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002346 executable('systemd-quotacheck',
2347 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002348 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002349 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002350 install_rpath : rootlibexecdir,
2351 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002352 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002353endif
2354
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002355exe = executable('systemd-socket-proxyd',
2356 'src/socket-proxy/socket-proxyd.c',
2357 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002358 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002359 dependencies : [threads],
2360 install_rpath : rootlibexecdir,
2361 install : true,
2362 install_dir : rootlibexecdir)
2363public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002364
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002365exe = executable('systemd-udevd',
2366 systemd_udevd_sources,
2367 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002368 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002369 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002370 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002371 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002372 dependencies : [threads,
2373 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002374 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002375 libacl,
2376 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002377 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002378 install : true,
2379 install_dir : rootlibexecdir)
2380public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002381
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002382exe = executable('udevadm',
2383 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002384 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002385 include_directories : includes,
2386 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002387 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002388 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002389 dependencies : [threads,
2390 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002391 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002392 libacl,
2393 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002394 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002395 install : true,
2396 install_dir : rootbindir)
2397public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002398
2399executable('systemd-shutdown',
2400 systemd_shutdown_sources,
2401 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002402 link_with : [libshared],
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-Szmekb68dfb92018-01-19 17:54:30 +11002656prev = ''
2657foreach p : fuzz_regression_tests
2658 a = p.split('/')[-3]
2659 b = p.split('/')[-2]
2660 c = p.split('/')[-1]
2661
2662 if a == 'address'
2663 build = sanitize_address
2664 else
2665 error('unknown sanitizer @0@'.format(a))
2666 endif
2667
2668 name = '@1@:@0@'.format(a, b)
2669
2670 if name != prev
2671 if want_tests == 'false'
2672 message('Not compiling @0@ because tests is set to false'.format(name))
2673 elif not sanitizers.contains(a)
2674 message('Not compiling @0@ because @1@ sanitizer is not available'.format(name, a))
2675 elif slow_tests
2676 exe = custom_target(
2677 name,
2678 output : name,
2679 depends : build,
2680 command : [env, 'ln', '-fs',
2681 join_paths(build.full_path(), b),
2682 '@OUTPUT@'],
2683 build_by_default : true)
2684 else
2685 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2686 endif
2687 endif
2688 prev = name
2689
2690 if want_tests != 'false' and slow_tests
2691 test(c, env, args : [exe.full_path(),
2692 join_paths(meson.source_root(),
2693 'test/fuzz-regressions',
2694 p)])
2695 endif
2696endforeach
2697
2698############################################################
2699
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002700if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002701 all_files = run_command(
2702 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002703 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002704 'ls-files',
2705 ':/*.[ch]'])
2706 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002707
userwithuide85a6902017-08-09 13:41:44 +00002708 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002709 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002710 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002711 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002712 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002713 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002714 output : 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002715 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002716endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002717
2718if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002719 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002720 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002721 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002722 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002723endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002724
2725if git.found()
2726 git_head = run_command(
2727 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002728 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002729 'rev-parse', 'HEAD']).stdout().strip()
2730 git_head_short = run_command(
2731 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002732 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002733 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2734
2735 run_target(
2736 'git-snapshot',
2737 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002738 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002739 git_head_short),
2740 '--prefix', 'systemd-@0@/'.format(git_head),
2741 'HEAD'])
2742endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002743
2744############################################################
2745
Lennart Poettering51b13862017-12-20 12:51:14 +01002746meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2747run_target(
2748 'check-api-docs',
2749 depends : [man, libsystemd, libudev],
2750 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2751
2752############################################################
2753
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002754status = [
2755 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2756
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002757 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002758 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002759 'prefix directory: @0@'.format(prefixdir),
2760 'rootprefix directory: @0@'.format(rootprefixdir),
2761 'sysconf directory: @0@'.format(sysconfdir),
2762 'include directory: @0@'.format(includedir),
2763 'lib directory: @0@'.format(libdir),
2764 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002765 'SysV init scripts: @0@'.format(sysvinit_path),
2766 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002767 'PAM modules directory: @0@'.format(pamlibdir),
2768 'PAM configuration directory: @0@'.format(pamconfdir),
2769 'RPM macros directory: @0@'.format(rpmmacrosdir),
2770 'modprobe.d directory: @0@'.format(modprobedir),
2771 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2772 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2773 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2774 'bash completions directory: @0@'.format(bashcompletiondir),
2775 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002776 'extra start script: @0@'.format(get_option('rc-local')),
2777 'extra stop script: @0@'.format(get_option('halt-local')),
2778 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2779 get_option('debug-tty')),
2780 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002781 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002782 'maximum system UID: @0@'.format(system_uid_max),
2783 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002784 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2785 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2786 'minimum container UID base: @0@'.format(container_uid_base_min),
2787 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002788 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002789 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002790 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002791 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002792 'nobody user name: @0@'.format(nobody_user),
2793 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002794 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002795 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002796
2797 'default DNSSEC mode: @0@'.format(default_dnssec),
2798 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2799 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2800
2801alt_dns_servers = '\n '.join(dns_servers.split(' '))
2802alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2803status += [
2804 'default DNS servers: @0@'.format(alt_dns_servers),
2805 'default NTP servers: @0@'.format(alt_ntp_servers)]
2806
2807alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2808 '@@0@'.format(time_epoch)).stdout().strip()
2809status += [
2810 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2811
2812# TODO:
2813# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2814# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2815# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2816
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002817if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002818 status += [
2819 'efi arch: @0@'.format(efi_arch)]
2820
2821 if have_gnu_efi
2822 status += [
2823 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2824 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002825 'EFI lib directory: @0@'.format(efi_libdir),
2826 'EFI lds directory: @0@'.format(efi_ldsdir),
2827 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002828 endif
2829endif
2830
2831found = []
2832missing = []
2833
2834foreach tuple : [
2835 ['libcryptsetup'],
2836 ['PAM'],
2837 ['AUDIT'],
2838 ['IMA'],
2839 ['AppArmor'],
2840 ['SELinux'],
2841 ['SECCOMP'],
2842 ['SMACK'],
2843 ['zlib'],
2844 ['xz'],
2845 ['lz4'],
2846 ['bzip2'],
2847 ['ACL'],
2848 ['gcrypt'],
2849 ['qrencode'],
2850 ['microhttpd'],
2851 ['gnutls'],
2852 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002853 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002854 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002855 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002856 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002857 ['libiptc'],
2858 ['elfutils'],
2859 ['binfmt'],
2860 ['vconsole'],
2861 ['quotacheck'],
2862 ['tmpfiles'],
2863 ['environment.d'],
2864 ['sysusers'],
2865 ['firstboot'],
2866 ['randomseed'],
2867 ['backlight'],
2868 ['rfkill'],
2869 ['logind'],
2870 ['machined'],
2871 ['importd'],
2872 ['hostnamed'],
2873 ['timedated'],
2874 ['timesyncd'],
2875 ['localed'],
2876 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002877 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002878 ['coredump'],
2879 ['polkit'],
2880 ['legacy pkla', install_polkit_pkla],
2881 ['efi'],
2882 ['gnu-efi', have_gnu_efi],
2883 ['kmod'],
2884 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01002885 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002886 ['blkid'],
2887 ['dbus'],
2888 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002889 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002890 ['hwdb'],
2891 ['tpm'],
2892 ['man pages', want_man],
2893 ['html pages', want_html],
2894 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002895 ['SysV compat'],
2896 ['utmp'],
2897 ['ldconfig'],
2898 ['hibernate'],
2899 ['adm group', get_option('adm-group')],
2900 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002901 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002902 ['debug hashmap'],
2903 ['debug mmap cache'],
2904]
2905
2906 cond = tuple.get(1, '')
2907 if cond == ''
2908 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2909 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002910 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002911 endif
2912 if cond
2913 found += [tuple[0]]
2914 else
2915 missing += [tuple[0]]
2916 endif
2917endforeach
2918
2919status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002920 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002921 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002922 '',
2923 'disabled features: @0@'.format(', '.join(missing)),
2924 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002925message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002926
2927if rootprefixdir != rootprefix_default
2928 message('WARNING:\n' +
2929 ' Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2930 ' systemd used fixed names for unit file directories and other paths, so anything\n' +
2931 ' except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
2932endif