blob: d4af95a44a9b2c0e3448663aa721cec7e543a7ed [file] [log] [blame]
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01001# SPDX-License-Identifier: LGPL-2.1+
2#
3# Copyright 2017 Zbigniew Jędrzejewski-Szmek
4#
5# systemd is free software; you can redistribute it and/or modify it
6# under the terms of the GNU Lesser General Public License as published by
7# the Free Software Foundation; either version 2.1 of the License, or
8# (at your option) any later version.
9#
10# systemd is distributed in the hope that it will be useful, but
11# WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13# Lesser General Public License for more details.
14#
15# You should have received a copy of the GNU Lesser General Public License
16# along with systemd; If not, see <http://www.gnu.org/licenses/>.
17
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040018project('systemd', 'c',
Lennart Poettering69cd51d2018-01-25 14:18:14 +010019 version : '237',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040020 license : 'LGPLv2+',
21 default_options: [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040022 'c_std=gnu99',
23 'prefix=/usr',
24 'sysconfdir=/etc',
25 'localstatedir=/var',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040026 ],
Zbigniew Jędrzejewski-Szmek86ea8d72017-11-20 08:08:43 +010027 meson_version : '>= 0.41',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040028 )
29
Lennart Poettering69cd51d2018-01-25 14:18:14 +010030libsystemd_version = '0.21.0'
31libudev_version = '1.6.9'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020032
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040033# We need the same data in three different formats, ugh!
34# Also, for hysterical reasons, we use different variable
35# names, sometimes. Not all variables are included in every
36# set. Ugh, ugh, ugh!
37conf = configuration_data()
38conf.set_quoted('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version())
39conf.set_quoted('PACKAGE_VERSION', meson.project_version())
40
41substs = configuration_data()
42substs.set('PACKAGE_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
43substs.set('PACKAGE_VERSION', meson.project_version())
44
45m4_defines = []
46
47#####################################################################
48
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040049# Try to install the git pre-commit hook
50git_hook = run_command(join_paths(meson.source_root(), 'tools/add-git-hook.sh'))
51if git_hook.returncode() == 0
52 message(git_hook.stdout().strip())
53endif
54
55#####################################################################
56
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010057split_usr = get_option('split-usr')
58conf.set10('HAVE_SPLIT_USR', split_usr)
59
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010060rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010061# Unusual rootprefixdir values are used by some distros
62# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010063rootprefix_default = get_option('split-usr') ? '/' : '/usr'
64if rootprefixdir == ''
65 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010066endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040067
68sysvinit_path = get_option('sysvinit-path')
69sysvrcnd_path = get_option('sysvrcnd-path')
Max Harmathy54248242017-12-15 16:05:25 +010070have = sysvinit_path != '' and sysvrcnd_path != ''
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020071conf.set10('HAVE_SYSV_COMPAT', have,
72 description : 'SysV init scripts and rcN.d links are supported')
73m4_defines += have ? ['-DHAVE_SYSV_COMPAT'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040074
75# join_paths ignore the preceding arguments if an absolute component is
76# encountered, so this should canonicalize various paths when they are
77# absolute or relative.
78prefixdir = get_option('prefix')
79if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040080 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040081endif
82bindir = join_paths(prefixdir, get_option('bindir'))
83libdir = join_paths(prefixdir, get_option('libdir'))
84sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
85includedir = join_paths(prefixdir, get_option('includedir'))
86datadir = join_paths(prefixdir, get_option('datadir'))
87localstatedir = join_paths('/', get_option('localstatedir'))
88
89rootbindir = join_paths(rootprefixdir, 'bin')
90rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
91
92rootlibdir = get_option('rootlibdir')
93if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040094 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040095endif
96
97# Dirs of external packages
Michael Bieble17e5ba2017-04-13 10:30:56 -040098pkgconfigdatadir = join_paths(datadir, 'pkgconfig')
99pkgconfiglibdir = join_paths(libdir, 'pkgconfig')
100polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
101polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
102polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
103varlogdir = join_paths(localstatedir, 'log')
104xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900105rpmmacrosdir = get_option('rpmmacrosdir')
106if rpmmacrosdir != 'no'
107 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
108endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200109modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400110
111# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400112pkgdatadir = join_paths(datadir, 'systemd')
113environmentdir = join_paths(prefixdir, 'lib/environment.d')
114pkgsysconfdir = join_paths(sysconfdir, 'systemd')
115userunitdir = join_paths(prefixdir, 'lib/systemd/user')
116userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
117tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
118sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
119sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
120binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
121modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
122networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
123pkgincludedir = join_paths(includedir, 'systemd')
124systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
125usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
126systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
127userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
128systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
129systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
130systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
131systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
132udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
133udevhomedir = udevlibexecdir
134udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
135udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
136catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
137kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
138factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400139bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
140testsdir = join_paths(prefixdir, 'lib/systemd/tests')
141systemdstatedir = join_paths(localstatedir, 'lib/systemd')
142catalogstatedir = join_paths(systemdstatedir, 'catalog')
143randomseeddir = join_paths(localstatedir, 'lib/systemd')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400144
tblume75aaade2018-02-01 22:46:15 +0100145docdir = get_option('docdir')
146if docdir == ''
147 docdir = join_paths(datadir, 'doc/systemd')
148endif
149
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400150dbuspolicydir = get_option('dbuspolicydir')
151if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400152 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400153endif
154
155dbussessionservicedir = get_option('dbussessionservicedir')
156if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400157 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400158endif
159
160dbussystemservicedir = get_option('dbussystemservicedir')
161if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400162 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400163endif
164
165pamlibdir = get_option('pamlibdir')
166if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400167 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400168endif
169
170pamconfdir = get_option('pamconfdir')
171if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400172 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400173endif
174
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100175memory_accounting_default = get_option('memory-accounting-default')
176
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400177conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400178conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400179conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
180conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
181conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400182conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
183conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400184conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400185conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
186conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400187conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
188conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
189conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
190conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100191conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100192conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400193conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
194conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
195conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
196conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
197conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100198conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400199conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400200conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
201conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400202conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
203conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
204conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
205conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
206conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
207conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400208conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
209conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400210conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400211conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400212conf.set_quoted('LIBDIR', libdir)
213conf.set_quoted('ROOTLIBDIR', rootlibdir)
214conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
215conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400216conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
217conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
218conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
219conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
220conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
221conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100222conf.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'true' : 'false')
223conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_ON_OFF', memory_accounting_default ? 'on' : 'off')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400224
225conf.set_quoted('ABS_BUILD_DIR', meson.build_root())
226conf.set_quoted('ABS_SRC_DIR', meson.source_root())
227
228substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400229substs.set('exec_prefix', prefixdir)
230substs.set('libdir', libdir)
231substs.set('rootlibdir', rootlibdir)
232substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400233substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400234substs.set('bindir', bindir)
235substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400236substs.set('rootlibexecdir', rootlibexecdir)
237substs.set('systemunitdir', systemunitdir)
238substs.set('userunitdir', userunitdir)
239substs.set('systempresetdir', systempresetdir)
240substs.set('userpresetdir', userpresetdir)
241substs.set('udevhwdbdir', udevhwdbdir)
242substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400243substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400244substs.set('catalogdir', catalogdir)
245substs.set('tmpfilesdir', tmpfilesdir)
246substs.set('sysusersdir', sysusersdir)
247substs.set('sysctldir', sysctldir)
248substs.set('binfmtdir', binfmtdir)
249substs.set('modulesloaddir', modulesloaddir)
250substs.set('systemgeneratordir', systemgeneratordir)
251substs.set('usergeneratordir', usergeneratordir)
252substs.set('systemenvgeneratordir', systemenvgeneratordir)
253substs.set('userenvgeneratordir', userenvgeneratordir)
254substs.set('systemshutdowndir', systemshutdowndir)
255substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400256substs.set('VARLOGDIR', varlogdir)
257substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400258substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
259substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400260substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
261substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
262substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
263substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100264substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400265
266#####################################################################
267
268cc = meson.get_compiler('c')
269pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400270check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100271meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400272
Adam Duskett08318a22018-01-15 06:25:46 -0500273if get_option('tests') != 'false'
274 cxx = find_program('c++', required : false)
275 if cxx.found()
276 # Used only for tests
277 add_languages('cpp')
278 endif
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400279endif
280
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500281want_ossfuzz = get_option('oss-fuzz')
282want_libfuzzer = get_option('llvm-fuzz')
283fuzzer_build = want_ossfuzz or want_libfuzzer
284if want_ossfuzz and want_libfuzzer
285 error('only one of oss-fuzz and llvm-fuzz can be specified')
286endif
287if want_libfuzzer
288 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
289endif
290if want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500291 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
292endif
293
Zbigniew Jędrzejewski-Szmek75cf1d62017-07-04 17:59:15 -0400294foreach arg : ['-Wextra',
Zbigniew Jędrzejewski-Szmek70160ce2017-10-03 12:11:49 +0200295 '-Werror=undef',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400296 '-Wlogical-op',
297 '-Wmissing-include-dirs',
298 '-Wold-style-definition',
299 '-Wpointer-arith',
300 '-Winit-self',
301 '-Wdeclaration-after-statement',
302 '-Wfloat-equal',
303 '-Wsuggest-attribute=noreturn',
304 '-Werror=missing-prototypes',
305 '-Werror=implicit-function-declaration',
306 '-Werror=missing-declarations',
307 '-Werror=return-type',
308 '-Werror=incompatible-pointer-types',
309 '-Werror=format=2',
310 '-Wstrict-prototypes',
311 '-Wredundant-decls',
312 '-Wmissing-noreturn',
Zbigniew Jędrzejewski-Szmek97279d82017-11-20 14:23:40 +0100313 '-Wimplicit-fallthrough=5',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400314 '-Wshadow',
315 '-Wendif-labels',
316 '-Wstrict-aliasing=2',
317 '-Wwrite-strings',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400318 '-Werror=overflow',
319 '-Wdate-time',
320 '-Wnested-externs',
321 '-ffast-math',
322 '-fno-common',
323 '-fdiagnostics-show-option',
324 '-fno-strict-aliasing',
325 '-fvisibility=hidden',
326 '-fstack-protector',
327 '-fstack-protector-strong',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400328 '--param=ssp-buffer-size=4',
329 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400330 if cc.has_argument(arg)
331 add_project_arguments(arg, language : 'c')
332 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400333endforeach
334
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500335# the oss-fuzz fuzzers are not built with -fPIE, so don't
336# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500337if not fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500338 if cc.has_argument('-fPIE')
339 add_project_arguments('-fPIE', language : 'c')
340 endif
341endif
342
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400343# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
344# arguments, just emits a warnings. So test for the "positive" version instead.
345foreach arg : ['unused-parameter',
346 'missing-field-initializers',
347 'unused-result',
Zbigniew Jędrzejewski-Szmekfb1b5882017-09-04 19:49:12 +0300348 'format-signedness',
349 'error=nonnull', # work-around for gcc 7.1 turning this on on its own
350 ]
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400351 if cc.has_argument('-W' + arg)
352 add_project_arguments('-Wno-' + arg, language : 'c')
353 endif
354endforeach
355
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800356if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400357 #include <time.h>
358 #include <inttypes.h>
359 typedef uint64_t usec_t;
360 usec_t now(clockid_t clock);
361 int main(void) {
362 struct timespec now;
363 return 0;
364 }
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800365''', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400366 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400367endif
368
369if cc.get_id() == 'clang'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400370 foreach arg : ['-Wno-typedef-redefinition',
371 '-Wno-gnu-variable-sized-type-not-at-end',
372 ]
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400373 if cc.has_argument(arg,
374 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400375 add_project_arguments(arg, language : 'c')
376 endif
377 endforeach
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400378endif
379
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400380link_test_c = files('tools/meson-link-test.c')
381
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400382# --as-needed and --no-undefined are provided by meson by default,
383# run mesonconf to see what is enabled
384foreach arg : ['-Wl,-z,relro',
385 '-Wl,-z,now',
386 '-pie',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400387 ]
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400388
389 have = run_command(check_compilation_sh,
390 cc.cmd_array(), '-x', 'c', arg,
391 '-include', link_test_c).returncode() == 0
392 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500393 if have and (arg != '-pie' or not fuzzer_build)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400394 add_project_link_arguments(arg, language : 'c')
395 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400396endforeach
397
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100398# Check if various sanitizers are supported
399sanitizers = []
400foreach arg : ['address']
401
402 have = run_command(check_compilation_sh,
403 cc.cmd_array(), '-x', 'c',
404 '-fsanitize=@0@'.format(arg),
405 '-include', link_test_c).returncode() == 0
406 message('@0@ sanitizer supported: @1@'.format(arg, have ? 'yes' : 'no'))
407 if have
408 sanitizers += arg
409 endif
410endforeach
411
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400412if get_option('buildtype') != 'debug'
413 foreach arg : ['-ffunction-sections',
414 '-fdata-sections']
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400415 if cc.has_argument(arg,
416 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400417 add_project_arguments(arg, language : 'c')
418 endif
419 endforeach
420
421 foreach arg : ['-Wl,--gc-sections']
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400422 have = run_command(check_compilation_sh,
423 cc.cmd_array(), '-x', 'c', arg,
424 '-include', link_test_c).returncode() == 0
425 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
426 if have
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400427 add_project_link_arguments(arg, language : 'c')
428 endif
429 endforeach
430endif
431
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400432cpp = ' '.join(cc.cmd_array()) + ' -E'
433
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400434#####################################################################
435# compilation result tests
436
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400437conf.set('_GNU_SOURCE', true)
438conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400439
440conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
441conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
442conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
443conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
444conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
445conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
446conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
447
448decl_headers = '''
449#include <uchar.h>
450#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000451#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100452#include <linux/stat.h>
453#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400454'''
455# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
456
457foreach decl : ['char16_t',
458 'char32_t',
459 'key_serial_t',
460 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000461 'struct fib_rule_uid_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100462 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400463 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400464
465 # We get -1 if the size cannot be determined
466 have = cc.sizeof(decl, prefix : decl_headers) > 0
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200467 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400468endforeach
469
470foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
471 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
472 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
473 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530474 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400475 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
476 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
477 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
478 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
479 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530480 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400481 # if_tunnel.h is buggy and cannot be included on its own
482 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
483 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
484 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
485 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
486 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
487 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
488 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530489 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400490 ['NDA_IFINDEX', 'linux/neighbour.h'],
491 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000492 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400493 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530494 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400495 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400496 prefix = decl.length() > 2 ? decl[2] : ''
497 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200498 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400499endforeach
500
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400501foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200502 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400503endforeach
504
505foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100506 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100507 ['gettid', '''#include <sys/types.h>
508 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100509 ['pivot_root', '''#include <stdlib.h>
510 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100511 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400512 #include <sys/stat.h>
513 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100514 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100515 ['renameat2', '''#include <stdio.h>
516 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400517 ['kcmp', '''#include <linux/kcmp.h>'''],
518 ['keyctl', '''#include <sys/types.h>
519 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100520 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400521 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200522 ['bpf', '''#include <sys/syscall.h>
523 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmek38f1ae02017-04-19 16:14:16 -0400524 ['explicit_bzero' , '''#include <string.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100525 ['statx', '''#include <sys/types.h>
526 #include <sys/stat.h>
527 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400528]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400529
Lennart Poettering85db59b2017-12-25 12:01:14 +0100530 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200531 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400532endforeach
533
Lennart Poettering85db59b2017-12-25 12:01:14 +0100534if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200535 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200536 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400537else
538 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200539 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200540 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400541endif
542
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400543#####################################################################
544
545sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400546awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400547m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400548stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400549git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100550env = find_program('env')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400551
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400552meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400553mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400554test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
555splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400556
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400557# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
558# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500559progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400560 ['quotacheck', '/usr/sbin/quotacheck' ],
561 ['kill', '/usr/bin/kill' ],
562 ['kmod', '/usr/bin/kmod' ],
563 ['kexec', '/usr/sbin/kexec' ],
564 ['sulogin', '/usr/sbin/sulogin' ],
565 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
566 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
567 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
568 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
569 ]
570foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400571 path = get_option(prog[0] + '-path')
572 if path != ''
573 message('Using @1@ for @0@'.format(prog[0], path))
574 else
575 exe = find_program(prog[0],
576 '/usr/sbin/' + prog[0],
577 '/sbin/' + prog[0],
578 required: false)
579 path = exe.found() ? exe.path() : prog[1]
580 endif
581 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
582 conf.set_quoted(name, path)
583 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400584endforeach
585
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500586conf.set_quoted('TELINIT', get_option('telinit-path'))
587
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400588if run_command('ln', '--relative', '--help').returncode() != 0
589 error('ln does not support --relative')
590endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400591
592############################################################
593
594gperf = find_program('gperf')
595
596gperf_test_format = '''
597#include <string.h>
598const char * in_word_set(const char *, @0@);
599@1@
600'''
601gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
602gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
603gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
604if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400605 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400606else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400607 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
608 if cc.compiles(gperf_test)
609 gperf_len_type = 'unsigned'
610 else
611 error('unable to determine gperf len type')
612 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400613endif
614message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400615conf.set('GPERF_LEN_TYPE', gperf_len_type,
616 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400617
618############################################################
619
620if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400621 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400622endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100623foreach header : ['crypt.h',
624 'linux/btrfs.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400625 'linux/memfd.h',
626 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200627 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400628 'valgrind/memcheck.h',
629 'valgrind/valgrind.h',
630 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400631
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200632 conf.set10('HAVE_' + header.underscorify().to_upper(),
633 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400634endforeach
635
636############################################################
637
638conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400639conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
640gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400641
642default_hierarchy = get_option('default-hierarchy')
643conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
644 description : 'default cgroup hierarchy as string')
645if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400646 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400647elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400648 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400649else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400650 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400651endif
652
653time_epoch = get_option('time-epoch')
654if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400655 NEWS = files('NEWS')
656 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400657endif
658time_epoch = time_epoch.to_int()
659conf.set('TIME_EPOCH', time_epoch)
660
661system_uid_max = get_option('system-uid-max')
662if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400663 system_uid_max = run_command(
664 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800665 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
666 '/etc/login.defs').stdout().strip()
667 if system_uid_max == ''
668 system_uid_max = '999'
669 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400670endif
671system_uid_max = system_uid_max.to_int()
672conf.set('SYSTEM_UID_MAX', system_uid_max)
673substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400674message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400675
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400676system_gid_max = get_option('system-gid-max')
677if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400678 system_gid_max = run_command(
679 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800680 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
681 '/etc/login.defs').stdout().strip()
682 if system_gid_max == ''
683 system_gid_max = '999'
684 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400685endif
686system_gid_max = system_gid_max.to_int()
687conf.set('SYSTEM_GID_MAX', system_gid_max)
688substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400689message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400690
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100691dynamic_uid_min = get_option('dynamic-uid-min').to_int()
692dynamic_uid_max = get_option('dynamic-uid-max').to_int()
693conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
694conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
695substs.set('dynamicuidmin', dynamic_uid_min)
696substs.set('dynamicuidmax', dynamic_uid_max)
697
698container_uid_base_min = get_option('container-uid-base-min').to_int()
699container_uid_base_max = get_option('container-uid-base-max').to_int()
700conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
701conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
702substs.set('containeruidbasemin', container_uid_base_min)
703substs.set('containeruidbasemax', container_uid_base_max)
704
Lennart Poetteringafde4572017-12-05 11:00:24 +0100705nobody_user = get_option('nobody-user')
706nobody_group = get_option('nobody-group')
707
708getent_result = run_command('getent', 'passwd', '65534')
709if getent_result.returncode() == 0
710 name = getent_result.stdout().split(':')[0]
711 if name != nobody_user
712 message('WARNING:\n' +
713 ' 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) +
714 ' Your build will result in an user table setup that is incompatible with the local system.')
715 endif
716endif
717id_result = run_command('id', '-u', nobody_user)
718if id_result.returncode() == 0
719 id = id_result.stdout().to_int()
720 if id != 65534
721 message('WARNING:\n' +
722 ' 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) +
723 ' Your build will result in an user table setup that is incompatible with the local system.')
724 endif
725endif
726
727getent_result = run_command('getent', 'group', '65534')
728if getent_result.returncode() == 0
729 name = getent_result.stdout().split(':')[0]
730 if name != nobody_group
731 message('WARNING:\n' +
732 ' 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) +
733 ' Your build will result in an group table setup that is incompatible with the local system.')
734 endif
735endif
736id_result = run_command('id', '-g', nobody_group)
737if id_result.returncode() == 0
738 id = id_result.stdout().to_int()
739 if id != 65534
740 message('WARNING:\n' +
741 ' 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) +
742 ' Your build will result in an group table setup that is incompatible with the local system.')
743 endif
744endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900745if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
746 message('WARNING:\n' +
747 ' The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
748 ' Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
749endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100750
751conf.set_quoted('NOBODY_USER_NAME', nobody_user)
752conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900753substs.set('NOBODY_USER_NAME', nobody_user)
754substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100755
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400756tty_gid = get_option('tty-gid')
757conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400758substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400759
Ikey Doherty84786b82017-12-03 12:28:23 +0000760# Ensure provided GID argument is numeric, otherwise fallback to default assignment
761if get_option('users-gid') != ''
Yu Watanabed6806872017-12-05 14:01:39 +0900762 users_gid = get_option('users-gid').to_int()
Ikey Doherty84786b82017-12-03 12:28:23 +0000763else
Yu Watanabed6806872017-12-05 14:01:39 +0900764 users_gid = '-'
Ikey Doherty84786b82017-12-03 12:28:23 +0000765endif
766substs.set('USERS_GID', users_gid)
767
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400768if get_option('adm-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400769 m4_defines += ['-DENABLE_ADM_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400770endif
771
772if get_option('wheel-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400773 m4_defines += ['-DENABLE_WHEEL_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400774endif
775
776substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700777substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400778
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400779kill_user_processes = get_option('default-kill-user-processes')
780conf.set10('KILL_USER_PROCESSES', kill_user_processes)
781substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400782
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400783dns_servers = get_option('dns-servers')
784conf.set_quoted('DNS_SERVERS', dns_servers)
785substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400786
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400787ntp_servers = get_option('ntp-servers')
788conf.set_quoted('NTP_SERVERS', ntp_servers)
789substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400790
791conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
792
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400793substs.set('SUSHELL', get_option('debug-shell'))
794substs.set('DEBUGTTY', get_option('debug-tty'))
795
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400796debug = get_option('debug')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200797enable_debug_hashmap = false
798enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400799if debug != ''
800 foreach name : debug.split(',')
801 if name == 'hashmap'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200802 enable_debug_hashmap = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400803 elif name == 'mmap-cache'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200804 enable_debug_mmap_cache = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400805 else
806 message('unknown debug option "@0@", ignoring'.format(name))
807 endif
808 endforeach
809endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200810conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
811conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400812
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400813#####################################################################
814
815threads = dependency('threads')
816librt = cc.find_library('rt')
817libm = cc.find_library('m')
818libdl = cc.find_library('dl')
819libcrypt = cc.find_library('crypt')
820
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400821libcap = dependency('libcap', required : false)
822if not libcap.found()
823 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
824 libcap = cc.find_library('cap')
825endif
826
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400827libmount = dependency('mount',
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -0500828 version : '>= 2.30',
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500829 required : not fuzzer_build)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400830
831want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500832if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400833 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400834 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400835 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200836 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400837else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200838 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400839 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400840endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200841conf.set10('HAVE_SECCOMP', have)
842m4_defines += have ? ['-DHAVE_SECCOMP'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400843
844want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500845if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400846 libselinux = dependency('libselinux',
847 version : '>= 2.1.9',
848 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200849 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400850else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200851 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400852 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400853endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200854conf.set10('HAVE_SELINUX', have)
855m4_defines += have ? ['-DHAVE_SELINUX'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400856
857want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500858if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400859 libapparmor = dependency('libapparmor',
860 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200861 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400862else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200863 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400864 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400865endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200866conf.set10('HAVE_APPARMOR', have)
867m4_defines += have ? ['-DHAVE_APPARMOR'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400868
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400869smack_run_label = get_option('smack-run-label')
870if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400871 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
872 m4_defines += ['-DHAVE_SMACK_RUN_LABEL']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400873endif
874
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400875want_polkit = get_option('polkit')
876install_polkit = false
877install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500878if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400879 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400880
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400881 libpolkit = dependency('polkit-gobject-1',
882 required : false)
883 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
884 message('Old polkit detected, will install pkla files')
885 install_polkit_pkla = true
886 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400887endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200888conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400889
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400890want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500891if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400892 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200893 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400894else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200895 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400896 libacl = []
897endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200898conf.set10('HAVE_ACL', have)
899m4_defines += have ? ['-DHAVE_ACL'] : []
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400900
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400901want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500902if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400903 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200904 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400905else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200906 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400907 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400908endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200909conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400910
911want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500912if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400913 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200914 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400915else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200916 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400917 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400918endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200919conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400920
921want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500922if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400923 libkmod = dependency('libkmod',
924 version : '>= 15',
925 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200926 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400927else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200928 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400929 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400930endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200931conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400932
933want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500934if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400935 libpam = cc.find_library('pam', required : want_pam == 'true')
936 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200937 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400938else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200939 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400940 libpam = []
941 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400942endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200943conf.set10('HAVE_PAM', have)
944m4_defines += have ? ['-DHAVE_PAM'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400945
946want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500947if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400948 libmicrohttpd = dependency('libmicrohttpd',
949 version : '>= 0.9.33',
950 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200951 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400952else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200953 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400954 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400955endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200956conf.set10('HAVE_MICROHTTPD', have)
957m4_defines += have ? ['-DHAVE_MICROHTTPD'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400958
959want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500960if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400961 libcryptsetup = dependency('libcryptsetup',
962 version : '>= 1.6.0',
963 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200964 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400965else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200966 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400967 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400968endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200969conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400970
971want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500972if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400973 libcurl = dependency('libcurl',
974 version : '>= 7.32.0',
975 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200976 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400977else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200978 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400979 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400980endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200981conf.set10('HAVE_LIBCURL', have)
982m4_defines += have ? ['-DHAVE_LIBCURL'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400983
984want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400985want_libidn2 = get_option('libidn2')
986if want_libidn == 'true' and want_libidn2 == 'true'
987 error('libidn and libidn2 cannot be requested simultaneously')
988endif
989
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500990if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400991 libidn = dependency('libidn',
992 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200993 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400994else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200995 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400996 libidn = []
997endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200998conf.set10('HAVE_LIBIDN', have)
999m4_defines += have ? ['-DHAVE_LIBIDN'] : []
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001000if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001001 # libidn is used for both libidn and libidn2 objects
1002 libidn = dependency('libidn2',
1003 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001004 have = libidn.found()
1005else
1006 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001007endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001008conf.set10('HAVE_LIBIDN2', have)
1009m4_defines += have ? ['-DHAVE_LIBIDN2'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001010
1011want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001012if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001013 libiptc = dependency('libiptc',
1014 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001015 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001016else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001017 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001018 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001019endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001020conf.set10('HAVE_LIBIPTC', have)
1021m4_defines += have ? ['-DHAVE_LIBIPTC'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001022
1023want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001024if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001025 libqrencode = dependency('libqrencode',
1026 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001027 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001028else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001029 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001030 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001031endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001032conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001033
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001034want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001035if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001036 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1037 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001038 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001039else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001040 have = false
1041endif
1042if not have
1043 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001044 libgcrypt = []
1045 libgpg_error = []
1046endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001047conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001048
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001049want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001050if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001051 libgnutls = dependency('gnutls',
1052 version : '>= 3.1.4',
1053 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001054 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001055else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001056 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001057 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001058endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001059conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001060
1061want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001062if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001063 libdw = dependency('libdw',
1064 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001065 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001066else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001067 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001068 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001069endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001070conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001071
1072want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001073if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001074 libz = dependency('zlib',
1075 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001076 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001077else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001078 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001079 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001080endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001081conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001082
1083want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001084if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001085 libbzip2 = cc.find_library('bz2',
1086 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001087 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001088else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001089 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001090 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001091endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001092conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001093
1094want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001095if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001096 libxz = dependency('liblzma',
1097 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001098 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001099else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001100 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001101 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001102endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001103conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001104
1105want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001106if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001107 liblz4 = dependency('liblz4',
1108 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001109 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001110else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001111 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001112 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001113endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001114conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001115
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001116want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001117if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001118 libxkbcommon = dependency('xkbcommon',
1119 version : '>= 0.3.0',
1120 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001121 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001122else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001123 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001124 libxkbcommon = []
1125endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001126conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001127
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001128want_pcre2 = get_option('pcre2')
1129if want_pcre2 != 'false'
1130 libpcre2 = dependency('libpcre2-8',
1131 required : want_pcre2 == 'true')
1132 have = libpcre2.found()
1133else
1134 have = false
1135 libpcre2 = []
1136endif
1137conf.set10('HAVE_PCRE2', have)
1138
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001139want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001140if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001141 libglib = dependency('glib-2.0',
1142 version : '>= 2.22.0',
1143 required : want_glib == 'true')
1144 libgobject = dependency('gobject-2.0',
1145 version : '>= 2.22.0',
1146 required : want_glib == 'true')
1147 libgio = dependency('gio-2.0',
1148 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001149 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001150else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001151 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001152 libglib = []
1153 libgobject = []
1154 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001155endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001156conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001157
1158want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001159if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001160 libdbus = dependency('dbus-1',
1161 version : '>= 1.3.2',
1162 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001163 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001164else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001165 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001166 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001167endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001168conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001169
Yu Watanabe42303dc2017-06-18 05:22:32 +09001170default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001171if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001172 default_dnssec = 'no'
1173endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001174if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001175 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1176 default_dnssec = 'no'
1177endif
1178conf.set('DEFAULT_DNSSEC_MODE',
1179 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1180substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1181
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001182want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001183if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001184 have = (conf.get('HAVE_LIBCURL') == 1 and
1185 conf.get('HAVE_ZLIB') == 1 and
1186 conf.get('HAVE_BZIP2') == 1 and
1187 conf.get('HAVE_XZ') == 1 and
1188 conf.get('HAVE_GCRYPT') == 1)
1189 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001190 error('importd support was requested, but dependencies are not available')
1191 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001192else
1193 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001194endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001195conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001196
1197want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001198if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001199 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1200 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001201 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1202 # it's possible to build one without the other. Complain only if
1203 # support was explictly requested. The auxiliary files like sysusers
1204 # config should be installed when any of the programs are built.
1205 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1206 error('remote support was requested, but dependencies are not available')
1207 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001208 have = have_deps[0] or have_deps[1]
1209else
1210 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001211endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001212conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001213
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001214foreach term : ['utmp',
1215 'hibernate',
1216 'environment-d',
1217 'binfmt',
1218 'coredump',
1219 'resolve',
1220 'logind',
1221 'hostnamed',
1222 'localed',
1223 'machined',
1224 'networkd',
1225 'timedated',
1226 'timesyncd',
1227 'myhostname',
1228 'firstboot',
1229 'randomseed',
1230 'backlight',
1231 'vconsole',
1232 'quotacheck',
1233 'sysusers',
1234 'tmpfiles',
1235 'hwdb',
1236 'rfkill',
1237 'ldconfig',
1238 'efi',
1239 'tpm',
1240 'ima',
1241 'smack',
1242 'gshadow',
1243 'idn',
1244 'nss-systemd']
1245 have = get_option(term)
1246 name = 'ENABLE_' + term.underscorify().to_upper()
1247 conf.set10(name, have)
1248 m4_defines += have ? ['-D' + name] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001249endforeach
1250
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001251want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001252install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001253slow_tests = get_option('slow-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001254tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001255fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001256
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001257conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001258
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001259#####################################################################
1260
1261if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001262 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001263
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001264 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001265 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001266 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001267 elif efi_arch == 'x86_64'
1268 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001269 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001270 elif efi_arch == 'arm'
1271 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001272 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001273 elif efi_arch == 'aarch64'
1274 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001275 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001276 else
1277 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001278 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001279 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001280
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001281 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001282 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001283
1284 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001285else
1286 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001287endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001288conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001289
1290#####################################################################
1291
1292config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001293 output : 'config.h',
1294 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001295
1296includes = include_directories('src/basic',
1297 'src/shared',
1298 'src/systemd',
1299 'src/journal',
1300 'src/resolve',
1301 'src/timesync',
1302 'src/login',
1303 'src/udev',
1304 'src/libudev',
1305 'src/core',
1306 'src/libsystemd/sd-bus',
1307 'src/libsystemd/sd-device',
1308 'src/libsystemd/sd-hwdb',
1309 'src/libsystemd/sd-id128',
1310 'src/libsystemd/sd-netlink',
1311 'src/libsystemd/sd-network',
1312 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001313 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001314
1315add_project_arguments('-include', 'config.h', language : 'c')
1316
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001317subdir('po')
1318subdir('catalog')
1319subdir('src/systemd')
1320subdir('src/basic')
1321subdir('src/libsystemd')
1322subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001323subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001324subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001325
1326libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001327 'journal-core',
1328 libjournal_core_sources,
1329 journald_gperf_c,
1330 include_directories : includes,
1331 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001332
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001333libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001334libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001335 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001336 '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 +02001337 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001338 include_directories : includes,
1339 link_args : ['-shared',
1340 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001341 link_with : [libbasic,
1342 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001343 link_whole : [libsystemd_static,
1344 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001345 dependencies : [threads,
1346 librt,
1347 libxz,
1348 liblz4],
1349 link_depends : libsystemd_sym,
1350 install : true,
1351 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001352
1353############################################################
1354
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001355# binaries that have --help and are intended for use by humans,
1356# usually, but not always, installed in /bin.
1357public_programs = []
1358
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001359subdir('src/libudev')
1360subdir('src/shared')
1361subdir('src/core')
1362subdir('src/udev')
1363subdir('src/network')
1364
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001365subdir('src/analyze')
1366subdir('src/journal-remote')
1367subdir('src/coredump')
1368subdir('src/hostname')
1369subdir('src/import')
1370subdir('src/kernel-install')
1371subdir('src/locale')
1372subdir('src/machine')
1373subdir('src/nspawn')
1374subdir('src/resolve')
1375subdir('src/timedate')
1376subdir('src/timesync')
1377subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001378subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001379
1380subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001381subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001382subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001383subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001384
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001385############################################################
1386
1387# only static linking apart from libdl, to make sure that the
1388# module is linked to all libraries that it uses.
1389test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001390 'test-dlopen',
1391 test_dlopen_c,
1392 include_directories : includes,
1393 link_with : [libbasic],
1394 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001395
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001396foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001397 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001398 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001399 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001400
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001401 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001402 if condition
1403 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001404
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001405 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1406 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001407
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001408 nss = shared_library(
1409 'nss_' + module,
1410 'src/nss-@0@/nss-@0@.c'.format(module),
1411 version : '2',
1412 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001413 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1414 link_args : ['-Wl,-z,nodelete',
1415 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001416 '-Wl,--version-script=' + version_script_arg,
1417 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001418 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001419 libbasic],
1420 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001421 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001422 link_depends : sym,
1423 install : true,
1424 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001425
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001426 # We cannot use shared_module because it does not support version suffix.
1427 # Unfortunately shared_library insists on creating the symlink…
1428 meson.add_install_script('sh', '-c',
1429 'rm $DESTDIR@0@/libnss_@1@.so'
1430 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001431
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001432 test('dlopen-nss_' + module,
1433 test_dlopen,
1434 args : [nss.full_path()]) # path to dlopen must include a slash
1435 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001436endforeach
1437
1438############################################################
1439
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001440executable('systemd',
1441 systemd_sources,
1442 include_directories : includes,
1443 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001444 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001445 dependencies : [threads,
1446 librt,
1447 libseccomp,
1448 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001449 libmount,
1450 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001451 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001452 install : true,
1453 install_dir : rootlibexecdir)
1454
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001455exe = executable('systemd-analyze',
1456 systemd_analyze_sources,
1457 include_directories : includes,
1458 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001459 libshared],
1460 dependencies : [threads,
1461 librt,
1462 libseccomp,
1463 libselinux,
1464 libmount,
1465 libblkid],
1466 install_rpath : rootlibexecdir,
1467 install : true)
1468public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001469
1470executable('systemd-journald',
1471 systemd_journald_sources,
1472 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001473 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001474 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001475 dependencies : [threads,
1476 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001477 liblz4,
1478 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001479 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001480 install : true,
1481 install_dir : rootlibexecdir)
1482
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001483exe = executable('systemd-cat',
1484 systemd_cat_sources,
1485 include_directories : includes,
1486 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001487 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001488 dependencies : [threads],
1489 install_rpath : rootlibexecdir,
1490 install : true)
1491public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001492
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001493exe = executable('journalctl',
1494 journalctl_sources,
1495 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001496 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001497 dependencies : [threads,
1498 libqrencode,
1499 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001500 liblz4,
1501 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001502 install_rpath : rootlibexecdir,
1503 install : true,
1504 install_dir : rootbindir)
1505public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001506
1507executable('systemd-getty-generator',
1508 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001509 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001510 link_with : [libshared],
1511 install_rpath : rootlibexecdir,
1512 install : true,
1513 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001514
1515executable('systemd-debug-generator',
1516 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001517 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001518 link_with : [libshared],
1519 install_rpath : rootlibexecdir,
1520 install : true,
1521 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001522
1523executable('systemd-fstab-generator',
1524 'src/fstab-generator/fstab-generator.c',
1525 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001526 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001527 link_with : [libshared],
1528 install_rpath : rootlibexecdir,
1529 install : true,
1530 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001531
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001532if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001533 executable('30-systemd-environment-d-generator',
1534 'src/environment-d-generator/environment-d-generator.c',
1535 include_directories : includes,
1536 link_with : [libshared],
1537 install_rpath : rootlibexecdir,
1538 install : true,
1539 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001540
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001541 meson.add_install_script(meson_make_symlink,
1542 join_paths(sysconfdir, 'environment'),
1543 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001544endif
1545
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001546if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001547 executable('systemd-hibernate-resume-generator',
1548 'src/hibernate-resume/hibernate-resume-generator.c',
1549 include_directories : includes,
1550 link_with : [libshared],
1551 install_rpath : rootlibexecdir,
1552 install : true,
1553 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001554
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001555 executable('systemd-hibernate-resume',
1556 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001557 include_directories : includes,
1558 link_with : [libshared],
1559 install_rpath : rootlibexecdir,
1560 install : true,
1561 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001562endif
1563
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001564if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001565 executable('systemd-gpt-auto-generator',
1566 'src/gpt-auto-generator/gpt-auto-generator.c',
1567 'src/basic/blkid-util.h',
1568 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001569 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001570 dependencies : libblkid,
1571 install_rpath : rootlibexecdir,
1572 install : true,
1573 install_dir : systemgeneratordir)
1574
1575 exe = executable('systemd-dissect',
1576 'src/dissect/dissect.c',
1577 include_directories : includes,
1578 link_with : [libshared],
1579 install_rpath : rootlibexecdir,
1580 install : true,
1581 install_dir : rootlibexecdir)
1582 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001583endif
1584
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001585if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001586 executable('systemd-resolved',
1587 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001588 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001589 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001590 libbasic_gcrypt,
1591 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001592 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001593 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001594 libm,
1595 libidn],
1596 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001597 install : true,
1598 install_dir : rootlibexecdir)
1599
1600 exe = executable('systemd-resolve',
1601 systemd_resolve_sources,
1602 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001603 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001604 libbasic_gcrypt,
1605 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001606 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001607 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001608 libm,
1609 libidn],
1610 install_rpath : rootlibexecdir,
1611 install : true)
1612 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001613endif
1614
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001615if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001616 executable('systemd-logind',
1617 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001618 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001619 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001620 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001621 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001622 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001623 install_rpath : rootlibexecdir,
1624 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001625 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001626
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001627 exe = executable('loginctl',
1628 loginctl_sources,
1629 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001630 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001631 dependencies : [threads,
1632 liblz4,
1633 libxz],
1634 install_rpath : rootlibexecdir,
1635 install : true,
1636 install_dir : rootbindir)
1637 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001638
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001639 exe = executable('systemd-inhibit',
1640 'src/login/inhibit.c',
1641 include_directories : includes,
1642 link_with : [libshared],
1643 install_rpath : rootlibexecdir,
1644 install : true,
1645 install_dir : rootbindir)
1646 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001647
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001648 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001649 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1650 pam_systemd = shared_library(
1651 'pam_systemd',
1652 pam_systemd_c,
1653 name_prefix : '',
1654 include_directories : includes,
1655 link_args : ['-shared',
1656 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001657 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001658 libshared_static],
1659 dependencies : [threads,
1660 libpam,
1661 libpam_misc],
1662 link_depends : pam_systemd_sym,
1663 install : true,
1664 install_dir : pamlibdir)
1665
1666 test('dlopen-pam_systemd',
1667 test_dlopen,
1668 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1669 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001670endif
1671
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001672if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001673 executable('systemd-user-sessions',
1674 'src/user-sessions/user-sessions.c',
1675 include_directories : includes,
1676 link_with : [libshared],
1677 install_rpath : rootlibexecdir,
1678 install : true,
1679 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001680endif
1681
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001682if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001683 exe = executable('bootctl',
1684 'src/boot/bootctl.c',
1685 include_directories : includes,
1686 link_with : [libshared],
1687 dependencies : [libblkid],
1688 install_rpath : rootlibexecdir,
1689 install : true)
1690 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001691endif
1692
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001693exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1694 include_directories : includes,
1695 link_with : [libshared],
1696 dependencies : [threads],
1697 install_rpath : rootlibexecdir,
1698 install : true)
1699public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001700
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001701exe = executable('systemctl', 'src/systemctl/systemctl.c',
1702 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001703 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001704 dependencies : [threads,
1705 libcap,
1706 libselinux,
1707 libxz,
1708 liblz4],
1709 install_rpath : rootlibexecdir,
1710 install : true,
1711 install_dir : rootbindir)
1712public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001713
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001714if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001715 executable('systemd-backlight',
1716 'src/backlight/backlight.c',
1717 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001718 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001719 install_rpath : rootlibexecdir,
1720 install : true,
1721 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001722endif
1723
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001724if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001725 executable('systemd-rfkill',
1726 'src/rfkill/rfkill.c',
1727 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001728 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001729 install_rpath : rootlibexecdir,
1730 install : true,
1731 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001732endif
1733
1734executable('systemd-system-update-generator',
1735 'src/system-update-generator/system-update-generator.c',
1736 include_directories : includes,
1737 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001738 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001739 install : true,
1740 install_dir : systemgeneratordir)
1741
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001742if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001743 executable('systemd-cryptsetup',
1744 'src/cryptsetup/cryptsetup.c',
1745 include_directories : includes,
1746 link_with : [libshared],
1747 dependencies : [libcryptsetup],
1748 install_rpath : rootlibexecdir,
1749 install : true,
1750 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001751
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001752 executable('systemd-cryptsetup-generator',
1753 'src/cryptsetup/cryptsetup-generator.c',
1754 include_directories : includes,
1755 link_with : [libshared],
1756 dependencies : [libcryptsetup],
1757 install_rpath : rootlibexecdir,
1758 install : true,
1759 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001760
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001761 executable('systemd-veritysetup',
1762 'src/veritysetup/veritysetup.c',
1763 include_directories : includes,
1764 link_with : [libshared],
1765 dependencies : [libcryptsetup],
1766 install_rpath : rootlibexecdir,
1767 install : true,
1768 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001769
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001770 executable('systemd-veritysetup-generator',
1771 'src/veritysetup/veritysetup-generator.c',
1772 include_directories : includes,
1773 link_with : [libshared],
1774 dependencies : [libcryptsetup],
1775 install_rpath : rootlibexecdir,
1776 install : true,
1777 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001778endif
1779
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001780if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001781 executable('systemd-sysv-generator',
1782 'src/sysv-generator/sysv-generator.c',
1783 include_directories : includes,
1784 link_with : [libshared],
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-rc-local-generator',
1790 'src/rc-local-generator/rc-local-generator.c',
1791 include_directories : includes,
1792 link_with : [libshared],
1793 install_rpath : rootlibexecdir,
1794 install : true,
1795 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001796endif
1797
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001798if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001799 executable('systemd-hostnamed',
1800 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001801 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001802 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001803 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001804 install : true,
1805 install_dir : rootlibexecdir)
1806
1807 exe = executable('hostnamectl',
1808 'src/hostname/hostnamectl.c',
1809 include_directories : includes,
1810 link_with : [libshared],
1811 install_rpath : rootlibexecdir,
1812 install : true)
1813 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001814endif
1815
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001816if conf.get('ENABLE_LOCALED') == 1
1817 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001818 # logind will load libxkbcommon.so dynamically on its own
1819 deps = [libdl]
1820 else
1821 deps = []
1822 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001823
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001824 executable('systemd-localed',
1825 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001826 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001827 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001828 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001829 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001830 install : true,
1831 install_dir : rootlibexecdir)
1832
1833 exe = executable('localectl',
1834 localectl_sources,
1835 include_directories : includes,
1836 link_with : [libshared],
1837 install_rpath : rootlibexecdir,
1838 install : true)
1839 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001840endif
1841
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001842if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001843 executable('systemd-timedated',
1844 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001845 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001846 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001847 install_rpath : rootlibexecdir,
1848 install : true,
1849 install_dir : rootlibexecdir)
1850
1851 exe = executable('timedatectl',
1852 'src/timedate/timedatectl.c',
1853 include_directories : includes,
1854 install_rpath : rootlibexecdir,
1855 link_with : [libshared],
1856 install : true)
1857 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001858endif
1859
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001860if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001861 executable('systemd-timesyncd',
1862 systemd_timesyncd_sources,
1863 include_directories : includes,
1864 link_with : [libshared],
1865 dependencies : [threads,
1866 libm],
1867 install_rpath : rootlibexecdir,
1868 install : true,
1869 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001870endif
1871
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001872if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001873 executable('systemd-machined',
1874 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001875 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001876 link_with : [libmachine_core,
1877 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001878 install_rpath : rootlibexecdir,
1879 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001880 install_dir : rootlibexecdir)
1881
1882 exe = executable('machinectl',
1883 'src/machine/machinectl.c',
1884 include_directories : includes,
1885 link_with : [libshared],
1886 dependencies : [threads,
1887 libxz,
1888 liblz4],
1889 install_rpath : rootlibexecdir,
1890 install : true,
1891 install_dir : rootbindir)
1892 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001893endif
1894
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001895if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001896 executable('systemd-importd',
1897 systemd_importd_sources,
1898 include_directories : includes,
1899 link_with : [libshared],
1900 dependencies : [threads],
1901 install_rpath : rootlibexecdir,
1902 install : true,
1903 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001904
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001905 systemd_pull = executable('systemd-pull',
1906 systemd_pull_sources,
1907 include_directories : includes,
1908 link_with : [libshared],
1909 dependencies : [libcurl,
1910 libz,
1911 libbzip2,
1912 libxz,
1913 libgcrypt],
1914 install_rpath : rootlibexecdir,
1915 install : true,
1916 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001917
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001918 systemd_import = executable('systemd-import',
1919 systemd_import_sources,
1920 include_directories : includes,
1921 link_with : [libshared],
1922 dependencies : [libcurl,
1923 libz,
1924 libbzip2,
1925 libxz],
1926 install_rpath : rootlibexecdir,
1927 install : true,
1928 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001929
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001930 systemd_export = executable('systemd-export',
1931 systemd_export_sources,
1932 include_directories : includes,
1933 link_with : [libshared],
1934 dependencies : [libcurl,
1935 libz,
1936 libbzip2,
1937 libxz],
1938 install_rpath : rootlibexecdir,
1939 install : true,
1940 install_dir : rootlibexecdir)
1941 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001942endif
1943
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001944if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001945 exe = executable('systemd-journal-upload',
1946 systemd_journal_upload_sources,
1947 include_directories : includes,
1948 link_with : [libshared],
1949 dependencies : [threads,
1950 libcurl,
1951 libgnutls,
1952 libxz,
1953 liblz4],
1954 install_rpath : rootlibexecdir,
1955 install : true,
1956 install_dir : rootlibexecdir)
1957 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001958endif
1959
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001960if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001961 s_j_remote = executable('systemd-journal-remote',
1962 systemd_journal_remote_sources,
1963 include_directories : includes,
1964 link_with : [libshared],
1965 dependencies : [threads,
1966 libmicrohttpd,
1967 libgnutls,
1968 libxz,
1969 liblz4],
1970 install_rpath : rootlibexecdir,
1971 install : true,
1972 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001973
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001974 s_j_gatewayd = executable('systemd-journal-gatewayd',
1975 systemd_journal_gatewayd_sources,
1976 include_directories : includes,
1977 link_with : [libshared],
1978 dependencies : [threads,
1979 libmicrohttpd,
1980 libgnutls,
1981 libxz,
1982 liblz4],
1983 install_rpath : rootlibexecdir,
1984 install : true,
1985 install_dir : rootlibexecdir)
1986 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001987endif
1988
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001989if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001990 executable('systemd-coredump',
1991 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001992 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001993 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001994 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001995 libacl,
1996 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001997 libxz,
1998 liblz4],
1999 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002000 install : true,
2001 install_dir : rootlibexecdir)
2002
2003 exe = executable('coredumpctl',
2004 coredumpctl_sources,
2005 include_directories : includes,
2006 link_with : [libshared],
2007 dependencies : [threads,
2008 libxz,
2009 liblz4],
2010 install_rpath : rootlibexecdir,
2011 install : true)
2012 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002013endif
2014
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002015if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002016 exe = executable('systemd-binfmt',
2017 'src/binfmt/binfmt.c',
2018 include_directories : includes,
2019 link_with : [libshared],
2020 install_rpath : rootlibexecdir,
2021 install : true,
2022 install_dir : rootlibexecdir)
2023 public_programs += [exe]
2024
2025 meson.add_install_script('sh', '-c',
2026 mkdir_p.format(binfmtdir))
2027 meson.add_install_script('sh', '-c',
2028 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2029endif
2030
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002031if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002032 executable('systemd-vconsole-setup',
2033 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002034 include_directories : includes,
2035 link_with : [libshared],
2036 install_rpath : rootlibexecdir,
2037 install : true,
2038 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002039endif
2040
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002041if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002042 executable('systemd-random-seed',
2043 'src/random-seed/random-seed.c',
2044 include_directories : includes,
2045 link_with : [libshared],
2046 install_rpath : rootlibexecdir,
2047 install : true,
2048 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002049endif
2050
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002051if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002052 executable('systemd-firstboot',
2053 'src/firstboot/firstboot.c',
2054 include_directories : includes,
2055 link_with : [libshared],
2056 dependencies : [libcrypt],
2057 install_rpath : rootlibexecdir,
2058 install : true,
2059 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002060endif
2061
2062executable('systemd-remount-fs',
2063 'src/remount-fs/remount-fs.c',
2064 'src/core/mount-setup.c',
2065 'src/core/mount-setup.h',
2066 include_directories : includes,
2067 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002068 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002069 install : true,
2070 install_dir : rootlibexecdir)
2071
2072executable('systemd-machine-id-setup',
2073 'src/machine-id-setup/machine-id-setup-main.c',
2074 'src/core/machine-id-setup.c',
2075 'src/core/machine-id-setup.h',
2076 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002077 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002078 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002079 install : true,
2080 install_dir : rootbindir)
2081
2082executable('systemd-fsck',
2083 'src/fsck/fsck.c',
2084 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002085 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002086 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002087 install : true,
2088 install_dir : rootlibexecdir)
2089
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002090executable('systemd-growfs',
2091 'src/partition/growfs.c',
2092 include_directories : includes,
2093 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002094 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002095 install_rpath : rootlibexecdir,
2096 install : true,
2097 install_dir : rootlibexecdir)
2098
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002099executable('systemd-makefs',
2100 'src/partition/makefs.c',
2101 include_directories : includes,
2102 link_with : [libshared],
2103 install_rpath : rootlibexecdir,
2104 install : true,
2105 install_dir : rootlibexecdir)
2106
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002107executable('systemd-sleep',
2108 'src/sleep/sleep.c',
2109 include_directories : includes,
2110 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002111 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002112 install : true,
2113 install_dir : rootlibexecdir)
2114
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002115exe = executable('systemd-sysctl',
2116 'src/sysctl/sysctl.c',
2117 include_directories : includes,
2118 link_with : [libshared],
2119 install_rpath : rootlibexecdir,
2120 install : true,
2121 install_dir : rootlibexecdir)
2122public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002123
2124executable('systemd-ac-power',
2125 'src/ac-power/ac-power.c',
2126 include_directories : includes,
2127 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002128 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002129 install : true,
2130 install_dir : rootlibexecdir)
2131
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002132exe = executable('systemd-detect-virt',
2133 'src/detect-virt/detect-virt.c',
2134 include_directories : includes,
2135 link_with : [libshared],
2136 install_rpath : rootlibexecdir,
2137 install : true)
2138public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002139
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002140exe = executable('systemd-delta',
2141 'src/delta/delta.c',
2142 include_directories : includes,
2143 link_with : [libshared],
2144 install_rpath : rootlibexecdir,
2145 install : true)
2146public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002147
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002148exe = executable('systemd-escape',
2149 'src/escape/escape.c',
2150 include_directories : includes,
2151 link_with : [libshared],
2152 install_rpath : rootlibexecdir,
2153 install : true,
2154 install_dir : rootbindir)
2155public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002156
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002157exe = executable('systemd-notify',
2158 'src/notify/notify.c',
2159 include_directories : includes,
2160 link_with : [libshared],
2161 install_rpath : rootlibexecdir,
2162 install : true,
2163 install_dir : rootbindir)
2164public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002165
2166executable('systemd-volatile-root',
2167 'src/volatile-root/volatile-root.c',
2168 include_directories : includes,
2169 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002170 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002171 install : true,
2172 install_dir : rootlibexecdir)
2173
2174executable('systemd-cgroups-agent',
2175 'src/cgroups-agent/cgroups-agent.c',
2176 include_directories : includes,
2177 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002178 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002179 install : true,
2180 install_dir : rootlibexecdir)
2181
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002182exe = executable('systemd-path',
2183 'src/path/path.c',
2184 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002185 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002186 install_rpath : rootlibexecdir,
2187 install : true)
2188public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002189
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002190exe = executable('systemd-ask-password',
2191 'src/ask-password/ask-password.c',
2192 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002193 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002194 install_rpath : rootlibexecdir,
2195 install : true,
2196 install_dir : rootbindir)
2197public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002198
2199executable('systemd-reply-password',
2200 'src/reply-password/reply-password.c',
2201 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002202 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002203 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002204 install : true,
2205 install_dir : rootlibexecdir)
2206
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002207exe = executable('systemd-tty-ask-password-agent',
2208 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2209 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002210 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002211 install_rpath : rootlibexecdir,
2212 install : true,
2213 install_dir : rootbindir)
2214public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002215
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002216exe = executable('systemd-cgls',
2217 'src/cgls/cgls.c',
2218 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002219 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002220 install_rpath : rootlibexecdir,
2221 install : true)
2222public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002223
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002224exe = executable('systemd-cgtop',
2225 'src/cgtop/cgtop.c',
2226 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002227 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002228 install_rpath : rootlibexecdir,
2229 install : true)
2230public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002231
2232executable('systemd-initctl',
2233 'src/initctl/initctl.c',
2234 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002235 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002236 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002237 install : true,
2238 install_dir : rootlibexecdir)
2239
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002240exe = executable('systemd-mount',
2241 'src/mount/mount-tool.c',
2242 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002243 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002244 install_rpath : rootlibexecdir,
2245 install : true)
2246public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002247
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002248meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002249 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002250
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002251exe = executable('systemd-run',
2252 'src/run/run.c',
2253 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002254 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002255 install_rpath : rootlibexecdir,
2256 install : true)
2257public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002258
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002259exe = executable('systemd-stdio-bridge',
2260 'src/stdio-bridge/stdio-bridge.c',
2261 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002262 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002263 install_rpath : rootlibexecdir,
2264 install : true)
2265public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002266
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002267exe = executable('busctl',
2268 'src/busctl/busctl.c',
2269 'src/busctl/busctl-introspect.c',
2270 'src/busctl/busctl-introspect.h',
2271 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002272 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002273 install_rpath : rootlibexecdir,
2274 install : true)
2275public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002276
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002277if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002278 exe = executable('systemd-sysusers',
2279 'src/sysusers/sysusers.c',
2280 include_directories : includes,
2281 link_with : [libshared],
2282 install_rpath : rootlibexecdir,
2283 install : true,
2284 install_dir : rootbindir)
2285 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002286endif
2287
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002288if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002289 exe = executable('systemd-tmpfiles',
2290 'src/tmpfiles/tmpfiles.c',
2291 include_directories : includes,
2292 link_with : [libshared],
2293 dependencies : [libacl],
2294 install_rpath : rootlibexecdir,
2295 install : true,
2296 install_dir : rootbindir)
2297 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002298
2299 test('test-systemd-tmpfiles',
2300 test_systemd_tmpfiles_py,
2301 args : exe.full_path())
2302 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002303endif
2304
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002305if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002306 exe = executable('systemd-hwdb',
2307 'src/hwdb/hwdb.c',
2308 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2309 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002310 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002311 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002312 install : true,
2313 install_dir : rootbindir)
2314 public_programs += [exe]
2315endif
2316
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002317if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002318 executable('systemd-quotacheck',
2319 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002320 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002321 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002322 install_rpath : rootlibexecdir,
2323 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002324 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002325endif
2326
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002327exe = executable('systemd-socket-proxyd',
2328 'src/socket-proxy/socket-proxyd.c',
2329 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002330 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002331 dependencies : [threads],
2332 install_rpath : rootlibexecdir,
2333 install : true,
2334 install_dir : rootlibexecdir)
2335public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002336
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002337exe = executable('systemd-udevd',
2338 systemd_udevd_sources,
2339 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002340 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002341 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002342 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002343 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002344 dependencies : [threads,
2345 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002346 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002347 libacl,
2348 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002349 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002350 install : true,
2351 install_dir : rootlibexecdir)
2352public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002353
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002354exe = executable('udevadm',
2355 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002356 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002357 include_directories : includes,
2358 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002359 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002360 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002361 dependencies : [threads,
2362 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002363 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002364 libacl,
2365 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002366 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002367 install : true,
2368 install_dir : rootbindir)
2369public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002370
2371executable('systemd-shutdown',
2372 systemd_shutdown_sources,
2373 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002374 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002375 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002376 install : true,
2377 install_dir : rootlibexecdir)
2378
2379executable('systemd-update-done',
2380 'src/update-done/update-done.c',
2381 include_directories : includes,
2382 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002383 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002384 install : true,
2385 install_dir : rootlibexecdir)
2386
2387executable('systemd-update-utmp',
2388 'src/update-utmp/update-utmp.c',
2389 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002390 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002391 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002392 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002393 install : true,
2394 install_dir : rootlibexecdir)
2395
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002396if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002397 executable('systemd-modules-load',
2398 'src/modules-load/modules-load.c',
2399 include_directories : includes,
2400 link_with : [libshared],
2401 dependencies : [libkmod],
2402 install_rpath : rootlibexecdir,
2403 install : true,
2404 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002405
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002406 meson.add_install_script('sh', '-c',
2407 mkdir_p.format(modulesloaddir))
2408 meson.add_install_script('sh', '-c',
2409 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002410endif
2411
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002412exe = executable('systemd-nspawn',
2413 systemd_nspawn_sources,
2414 'src/core/mount-setup.c', # FIXME: use a variable?
2415 'src/core/mount-setup.h',
2416 'src/core/loopback-setup.c',
2417 'src/core/loopback-setup.h',
2418 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002419 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002420 dependencies : [libacl,
2421 libblkid,
2422 libseccomp,
2423 libselinux],
2424 install_rpath : rootlibexecdir,
2425 install : true)
2426public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002427
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002428if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002429 executable('systemd-networkd',
2430 systemd_networkd_sources,
2431 include_directories : includes,
2432 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002433 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002434 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002435 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002436 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002437 install_rpath : rootlibexecdir,
2438 install : true,
2439 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002440
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002441 executable('systemd-networkd-wait-online',
2442 systemd_networkd_wait_online_sources,
2443 include_directories : includes,
2444 link_with : [libnetworkd_core,
2445 libshared],
2446 install_rpath : rootlibexecdir,
2447 install : true,
2448 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002449
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002450 exe = executable('networkctl',
2451 networkctl_sources,
2452 include_directories : includes,
2453 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002454 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002455 install_rpath : rootlibexecdir,
2456 install : true,
2457 install_dir : rootbindir)
2458 public_programs += [exe]
2459endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002460
2461executable('systemd-sulogin-shell',
2462 ['src/sulogin-shell/sulogin-shell.c'],
2463 include_directories : includes,
2464 link_with : [libshared],
2465 install_rpath : rootlibexecdir,
2466 install : true,
2467 install_dir : rootlibexecdir)
2468
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002469############################################################
2470
2471foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002472 sources = tuple[0]
2473 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2474 dependencies = tuple[2]
2475 condition = tuple.length() >= 4 ? tuple[3] : ''
2476 type = tuple.length() >= 5 ? tuple[4] : ''
2477 defs = tuple.length() >= 6 ? tuple[5] : []
2478 incs = tuple.length() >= 7 ? tuple[6] : includes
2479 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002480
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002481 name = sources[0].split('/')[-1].split('.')[0]
2482 if type.startswith('timeout=')
2483 timeout = type.split('=')[1].to_int()
2484 type = ''
2485 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002486 if want_tests == 'false'
2487 message('Not compiling @0@ because tests is set to false'.format(name))
2488 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002489 exe = executable(
2490 name,
2491 sources,
2492 include_directories : incs,
2493 link_with : link_with,
2494 dependencies : dependencies,
2495 c_args : defs,
2496 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002497 install : install_tests,
2498 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002499
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002500 if type == 'manual'
2501 message('@0@ is a manual test'.format(name))
2502 elif type == 'unsafe' and want_tests != 'unsafe'
2503 message('@0@ is an unsafe test'.format(name))
2504 else
2505 test(name, exe,
2506 env : test_env,
2507 timeout : timeout)
2508 endif
2509 else
2510 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2511 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002512endforeach
2513
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002514test_libsystemd_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002515 'test-libsystemd-sym',
2516 test_libsystemd_sym_c,
2517 include_directories : includes,
2518 link_with : [libsystemd],
2519 install : install_tests,
2520 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002521test('test-libsystemd-sym',
2522 test_libsystemd_sym)
2523
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002524test_libudev_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002525 'test-libudev-sym',
2526 test_libudev_sym_c,
2527 include_directories : includes,
2528 c_args : ['-Wno-deprecated-declarations'],
2529 link_with : [libudev],
2530 install : install_tests,
2531 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002532test('test-libudev-sym',
2533 test_libudev_sym)
2534
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002535############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002536
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002537fuzzer_exes = []
2538
2539foreach tuple : fuzzers
2540 sources = tuple[0]
2541 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2542 dependencies = tuple[2]
2543 defs = tuple.length() >= 4 ? tuple[3] : []
2544 incs = tuple.length() >= 5 ? tuple[4] : includes
2545
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002546 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002547 dependencies += fuzzing_engine
2548 else
2549 sources += 'src/fuzz/fuzz-main.c'
2550 endif
2551
2552 name = sources[0].split('/')[-1].split('.')[0]
2553
2554 fuzzer_exes += executable(
2555 name,
2556 sources,
2557 include_directories : [incs, include_directories('src/fuzz')],
2558 link_with : link_with,
2559 dependencies : dependencies,
2560 c_args : defs,
2561 install : false)
2562endforeach
2563
2564run_target('fuzzers',
2565 depends : fuzzer_exes,
2566 command : ['true'])
2567
2568############################################################
2569
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002570make_directive_index_py = find_program('tools/make-directive-index.py')
2571make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002572xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002573hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002574
2575subdir('units')
2576subdir('sysctl.d')
2577subdir('sysusers.d')
2578subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002579subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002580subdir('hwdb')
2581subdir('network')
2582subdir('man')
2583subdir('shell-completion/bash')
2584subdir('shell-completion/zsh')
2585subdir('docs/sysvinit')
2586subdir('docs/var-log')
2587
2588# FIXME: figure out if the warning is true:
2589# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2590install_subdir('factory/etc',
2591 install_dir : factorydir)
2592
2593
2594install_data('xorg/50-systemd-user.sh',
2595 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002596install_data('modprobe.d/systemd.conf',
2597 install_dir : modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002598install_data('README',
2599 'NEWS',
2600 'CODING_STYLE',
2601 'DISTRO_PORTING',
2602 'ENVIRONMENT.md',
2603 'LICENSE.GPL2',
2604 'LICENSE.LGPL2.1',
Felipe Satelerf9f54412017-12-18 10:58:13 -03002605 'TRANSIENT-SETTINGS.md',
2606 'UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002607 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2608 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002609
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002610meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2611meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2612
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002613############################################################
2614
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002615meson_check_help = find_program('tools/meson-check-help.sh')
2616
2617foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002618 name = exec.full_path().split('/')[-1]
2619 test('check-help-' + name,
2620 meson_check_help,
2621 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002622endforeach
2623
2624############################################################
2625
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002626prev = ''
2627foreach p : fuzz_regression_tests
2628 a = p.split('/')[-3]
2629 b = p.split('/')[-2]
2630 c = p.split('/')[-1]
2631
2632 if a == 'address'
2633 build = sanitize_address
2634 else
2635 error('unknown sanitizer @0@'.format(a))
2636 endif
2637
2638 name = '@1@:@0@'.format(a, b)
2639
2640 if name != prev
2641 if want_tests == 'false'
2642 message('Not compiling @0@ because tests is set to false'.format(name))
2643 elif not sanitizers.contains(a)
2644 message('Not compiling @0@ because @1@ sanitizer is not available'.format(name, a))
2645 elif slow_tests
2646 exe = custom_target(
2647 name,
2648 output : name,
2649 depends : build,
2650 command : [env, 'ln', '-fs',
2651 join_paths(build.full_path(), b),
2652 '@OUTPUT@'],
2653 build_by_default : true)
2654 else
2655 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2656 endif
2657 endif
2658 prev = name
2659
2660 if want_tests != 'false' and slow_tests
2661 test(c, env, args : [exe.full_path(),
2662 join_paths(meson.source_root(),
2663 'test/fuzz-regressions',
2664 p)])
2665 endif
2666endforeach
2667
2668############################################################
2669
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002670if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002671 all_files = run_command(
2672 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002673 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002674 'ls-files',
2675 ':/*.[ch]'])
2676 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002677
userwithuide85a6902017-08-09 13:41:44 +00002678 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002679 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002680 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002681 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002682 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002683 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002684 output : 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002685 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002686endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002687
2688if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002689 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002690 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002691 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002692 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002693endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002694
2695if git.found()
2696 git_head = run_command(
2697 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002698 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002699 'rev-parse', 'HEAD']).stdout().strip()
2700 git_head_short = run_command(
2701 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002702 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002703 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2704
2705 run_target(
2706 'git-snapshot',
2707 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002708 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002709 git_head_short),
2710 '--prefix', 'systemd-@0@/'.format(git_head),
2711 'HEAD'])
2712endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002713
2714############################################################
2715
Lennart Poettering51b13862017-12-20 12:51:14 +01002716meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2717run_target(
2718 'check-api-docs',
2719 depends : [man, libsystemd, libudev],
2720 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2721
2722############################################################
2723
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002724status = [
2725 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2726
Yu Watanabe359b4962017-11-25 20:35:24 +09002727 'prefix directory: @0@'.format(prefixdir),
2728 'rootprefix directory: @0@'.format(rootprefixdir),
2729 'sysconf directory: @0@'.format(sysconfdir),
2730 'include directory: @0@'.format(includedir),
2731 'lib directory: @0@'.format(libdir),
2732 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002733 'SysV init scripts: @0@'.format(sysvinit_path),
2734 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002735 'PAM modules directory: @0@'.format(pamlibdir),
2736 'PAM configuration directory: @0@'.format(pamconfdir),
2737 'RPM macros directory: @0@'.format(rpmmacrosdir),
2738 'modprobe.d directory: @0@'.format(modprobedir),
2739 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2740 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2741 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2742 'bash completions directory: @0@'.format(bashcompletiondir),
2743 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002744 'extra start script: @0@'.format(get_option('rc-local')),
2745 'extra stop script: @0@'.format(get_option('halt-local')),
2746 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2747 get_option('debug-tty')),
2748 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002749 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002750 'maximum system UID: @0@'.format(system_uid_max),
2751 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002752 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2753 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2754 'minimum container UID base: @0@'.format(container_uid_base_min),
2755 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002756 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002757 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002758 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002759 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002760 'nobody user name: @0@'.format(nobody_user),
2761 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002762 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002763 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002764
2765 'default DNSSEC mode: @0@'.format(default_dnssec),
2766 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2767 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2768
2769alt_dns_servers = '\n '.join(dns_servers.split(' '))
2770alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2771status += [
2772 'default DNS servers: @0@'.format(alt_dns_servers),
2773 'default NTP servers: @0@'.format(alt_ntp_servers)]
2774
2775alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2776 '@@0@'.format(time_epoch)).stdout().strip()
2777status += [
2778 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2779
2780# TODO:
2781# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2782# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2783# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2784
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002785if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002786 status += [
2787 'efi arch: @0@'.format(efi_arch)]
2788
2789 if have_gnu_efi
2790 status += [
2791 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2792 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002793 'EFI lib directory: @0@'.format(efi_libdir),
2794 'EFI lds directory: @0@'.format(efi_ldsdir),
2795 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002796 endif
2797endif
2798
2799found = []
2800missing = []
2801
2802foreach tuple : [
2803 ['libcryptsetup'],
2804 ['PAM'],
2805 ['AUDIT'],
2806 ['IMA'],
2807 ['AppArmor'],
2808 ['SELinux'],
2809 ['SECCOMP'],
2810 ['SMACK'],
2811 ['zlib'],
2812 ['xz'],
2813 ['lz4'],
2814 ['bzip2'],
2815 ['ACL'],
2816 ['gcrypt'],
2817 ['qrencode'],
2818 ['microhttpd'],
2819 ['gnutls'],
2820 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002821 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002822 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002823 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002824 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002825 ['libiptc'],
2826 ['elfutils'],
2827 ['binfmt'],
2828 ['vconsole'],
2829 ['quotacheck'],
2830 ['tmpfiles'],
2831 ['environment.d'],
2832 ['sysusers'],
2833 ['firstboot'],
2834 ['randomseed'],
2835 ['backlight'],
2836 ['rfkill'],
2837 ['logind'],
2838 ['machined'],
2839 ['importd'],
2840 ['hostnamed'],
2841 ['timedated'],
2842 ['timesyncd'],
2843 ['localed'],
2844 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002845 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002846 ['coredump'],
2847 ['polkit'],
2848 ['legacy pkla', install_polkit_pkla],
2849 ['efi'],
2850 ['gnu-efi', have_gnu_efi],
2851 ['kmod'],
2852 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01002853 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002854 ['blkid'],
2855 ['dbus'],
2856 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002857 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002858 ['hwdb'],
2859 ['tpm'],
2860 ['man pages', want_man],
2861 ['html pages', want_html],
2862 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002863 ['split /usr', conf.get('HAVE_SPLIT_USR') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002864 ['SysV compat'],
2865 ['utmp'],
2866 ['ldconfig'],
2867 ['hibernate'],
2868 ['adm group', get_option('adm-group')],
2869 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002870 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002871 ['debug hashmap'],
2872 ['debug mmap cache'],
2873]
2874
2875 cond = tuple.get(1, '')
2876 if cond == ''
2877 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2878 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002879 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002880 endif
2881 if cond
2882 found += [tuple[0]]
2883 else
2884 missing += [tuple[0]]
2885 endif
2886endforeach
2887
2888status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002889 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002890 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002891 '',
2892 'disabled features: @0@'.format(', '.join(missing)),
2893 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002894message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002895
2896if rootprefixdir != rootprefix_default
2897 message('WARNING:\n' +
2898 ' Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2899 ' systemd used fixed names for unit file directories and other paths, so anything\n' +
2900 ' except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
2901endif