blob: 3f742b5b4939118032563f862c97a47c0615df67 [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>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400452'''
453# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
454
455foreach decl : ['char16_t',
456 'char32_t',
457 'key_serial_t',
458 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000459 'struct fib_rule_uid_range',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400460 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400461
462 # We get -1 if the size cannot be determined
463 have = cc.sizeof(decl, prefix : decl_headers) > 0
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200464 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400465endforeach
466
467foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
468 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
469 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
470 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530471 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400472 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
473 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
474 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
475 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
476 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530477 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400478 # if_tunnel.h is buggy and cannot be included on its own
479 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
480 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
481 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
482 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
483 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
484 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
485 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530486 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400487 ['NDA_IFINDEX', 'linux/neighbour.h'],
488 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000489 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400490 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530491 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400492 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400493 prefix = decl.length() > 2 ? decl[2] : ''
494 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200495 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400496endforeach
497
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400498foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200499 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400500endforeach
501
502foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100503 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100504 ['gettid', '''#include <sys/types.h>
505 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100506 ['pivot_root', '''#include <stdlib.h>
507 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100508 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400509 #include <sys/stat.h>
510 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100511 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100512 ['renameat2', '''#include <stdio.h>
513 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400514 ['kcmp', '''#include <linux/kcmp.h>'''],
515 ['keyctl', '''#include <sys/types.h>
516 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100517 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400518 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200519 ['bpf', '''#include <sys/syscall.h>
520 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmek38f1ae02017-04-19 16:14:16 -0400521 ['explicit_bzero' , '''#include <string.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400522]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400523
Lennart Poettering85db59b2017-12-25 12:01:14 +0100524 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200525 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400526endforeach
527
Lennart Poettering85db59b2017-12-25 12:01:14 +0100528if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200529 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200530 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400531else
532 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200533 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200534 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400535endif
536
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400537#####################################################################
538
539sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400540awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400541m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400542stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400543git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100544env = find_program('env')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400545
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400546meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400547mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400548test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
549splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400550
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400551# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
552# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500553progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400554 ['quotacheck', '/usr/sbin/quotacheck' ],
555 ['kill', '/usr/bin/kill' ],
556 ['kmod', '/usr/bin/kmod' ],
557 ['kexec', '/usr/sbin/kexec' ],
558 ['sulogin', '/usr/sbin/sulogin' ],
559 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
560 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
561 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
562 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
563 ]
564foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400565 path = get_option(prog[0] + '-path')
566 if path != ''
567 message('Using @1@ for @0@'.format(prog[0], path))
568 else
569 exe = find_program(prog[0],
570 '/usr/sbin/' + prog[0],
571 '/sbin/' + prog[0],
572 required: false)
573 path = exe.found() ? exe.path() : prog[1]
574 endif
575 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
576 conf.set_quoted(name, path)
577 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400578endforeach
579
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500580conf.set_quoted('TELINIT', get_option('telinit-path'))
581
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400582if run_command('ln', '--relative', '--help').returncode() != 0
583 error('ln does not support --relative')
584endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400585
586############################################################
587
588gperf = find_program('gperf')
589
590gperf_test_format = '''
591#include <string.h>
592const char * in_word_set(const char *, @0@);
593@1@
594'''
595gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
596gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
597gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
598if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400599 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400600else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400601 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
602 if cc.compiles(gperf_test)
603 gperf_len_type = 'unsigned'
604 else
605 error('unable to determine gperf len type')
606 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400607endif
608message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400609conf.set('GPERF_LEN_TYPE', gperf_len_type,
610 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400611
612############################################################
613
614if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400615 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400616endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100617foreach header : ['crypt.h',
618 'linux/btrfs.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400619 'linux/memfd.h',
620 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200621 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400622 'valgrind/memcheck.h',
623 'valgrind/valgrind.h',
624 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400625
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200626 conf.set10('HAVE_' + header.underscorify().to_upper(),
627 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400628endforeach
629
630############################################################
631
632conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400633conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
634gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400635
636default_hierarchy = get_option('default-hierarchy')
637conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
638 description : 'default cgroup hierarchy as string')
639if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400640 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400641elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400642 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400643else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400644 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400645endif
646
647time_epoch = get_option('time-epoch')
648if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400649 NEWS = files('NEWS')
650 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400651endif
652time_epoch = time_epoch.to_int()
653conf.set('TIME_EPOCH', time_epoch)
654
655system_uid_max = get_option('system-uid-max')
656if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400657 system_uid_max = run_command(
658 awk,
659 'BEGIN { uid=999 } /^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
660 '/etc/login.defs').stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400661endif
662system_uid_max = system_uid_max.to_int()
663conf.set('SYSTEM_UID_MAX', system_uid_max)
664substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400665message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400666
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400667system_gid_max = get_option('system-gid-max')
668if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400669 system_gid_max = run_command(
670 awk,
671 'BEGIN { gid=999 } /^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
672 '/etc/login.defs').stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400673endif
674system_gid_max = system_gid_max.to_int()
675conf.set('SYSTEM_GID_MAX', system_gid_max)
676substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400677message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400678
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100679dynamic_uid_min = get_option('dynamic-uid-min').to_int()
680dynamic_uid_max = get_option('dynamic-uid-max').to_int()
681conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
682conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
683substs.set('dynamicuidmin', dynamic_uid_min)
684substs.set('dynamicuidmax', dynamic_uid_max)
685
686container_uid_base_min = get_option('container-uid-base-min').to_int()
687container_uid_base_max = get_option('container-uid-base-max').to_int()
688conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
689conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
690substs.set('containeruidbasemin', container_uid_base_min)
691substs.set('containeruidbasemax', container_uid_base_max)
692
Lennart Poetteringafde4572017-12-05 11:00:24 +0100693nobody_user = get_option('nobody-user')
694nobody_group = get_option('nobody-group')
695
696getent_result = run_command('getent', 'passwd', '65534')
697if getent_result.returncode() == 0
698 name = getent_result.stdout().split(':')[0]
699 if name != nobody_user
700 message('WARNING:\n' +
701 ' 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) +
702 ' Your build will result in an user table setup that is incompatible with the local system.')
703 endif
704endif
705id_result = run_command('id', '-u', nobody_user)
706if id_result.returncode() == 0
707 id = id_result.stdout().to_int()
708 if id != 65534
709 message('WARNING:\n' +
710 ' 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) +
711 ' Your build will result in an user table setup that is incompatible with the local system.')
712 endif
713endif
714
715getent_result = run_command('getent', 'group', '65534')
716if getent_result.returncode() == 0
717 name = getent_result.stdout().split(':')[0]
718 if name != nobody_group
719 message('WARNING:\n' +
720 ' 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) +
721 ' Your build will result in an group table setup that is incompatible with the local system.')
722 endif
723endif
724id_result = run_command('id', '-g', nobody_group)
725if id_result.returncode() == 0
726 id = id_result.stdout().to_int()
727 if id != 65534
728 message('WARNING:\n' +
729 ' 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) +
730 ' Your build will result in an group table setup that is incompatible with the local system.')
731 endif
732endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900733if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
734 message('WARNING:\n' +
735 ' The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
736 ' Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
737endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100738
739conf.set_quoted('NOBODY_USER_NAME', nobody_user)
740conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900741substs.set('NOBODY_USER_NAME', nobody_user)
742substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100743
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400744tty_gid = get_option('tty-gid')
745conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400746substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400747
Ikey Doherty84786b82017-12-03 12:28:23 +0000748# Ensure provided GID argument is numeric, otherwise fallback to default assignment
749if get_option('users-gid') != ''
Yu Watanabed6806872017-12-05 14:01:39 +0900750 users_gid = get_option('users-gid').to_int()
Ikey Doherty84786b82017-12-03 12:28:23 +0000751else
Yu Watanabed6806872017-12-05 14:01:39 +0900752 users_gid = '-'
Ikey Doherty84786b82017-12-03 12:28:23 +0000753endif
754substs.set('USERS_GID', users_gid)
755
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400756if get_option('adm-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400757 m4_defines += ['-DENABLE_ADM_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400758endif
759
760if get_option('wheel-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400761 m4_defines += ['-DENABLE_WHEEL_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400762endif
763
764substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700765substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400766
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400767kill_user_processes = get_option('default-kill-user-processes')
768conf.set10('KILL_USER_PROCESSES', kill_user_processes)
769substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400770
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400771dns_servers = get_option('dns-servers')
772conf.set_quoted('DNS_SERVERS', dns_servers)
773substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400774
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400775ntp_servers = get_option('ntp-servers')
776conf.set_quoted('NTP_SERVERS', ntp_servers)
777substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400778
779conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
780
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400781substs.set('SUSHELL', get_option('debug-shell'))
782substs.set('DEBUGTTY', get_option('debug-tty'))
783
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400784debug = get_option('debug')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200785enable_debug_hashmap = false
786enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400787if debug != ''
788 foreach name : debug.split(',')
789 if name == 'hashmap'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200790 enable_debug_hashmap = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400791 elif name == 'mmap-cache'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200792 enable_debug_mmap_cache = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400793 else
794 message('unknown debug option "@0@", ignoring'.format(name))
795 endif
796 endforeach
797endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200798conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
799conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400800
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400801#####################################################################
802
803threads = dependency('threads')
804librt = cc.find_library('rt')
805libm = cc.find_library('m')
806libdl = cc.find_library('dl')
807libcrypt = cc.find_library('crypt')
808
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400809libcap = dependency('libcap', required : false)
810if not libcap.found()
811 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
812 libcap = cc.find_library('cap')
813endif
814
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400815libmount = dependency('mount',
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -0500816 version : '>= 2.30',
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500817 required : not fuzzer_build)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400818
819want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500820if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400821 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400822 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400823 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200824 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400825else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200826 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400827 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400828endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200829conf.set10('HAVE_SECCOMP', have)
830m4_defines += have ? ['-DHAVE_SECCOMP'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400831
832want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500833if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400834 libselinux = dependency('libselinux',
835 version : '>= 2.1.9',
836 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200837 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400838else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200839 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400840 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400841endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200842conf.set10('HAVE_SELINUX', have)
843m4_defines += have ? ['-DHAVE_SELINUX'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400844
845want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500846if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400847 libapparmor = dependency('libapparmor',
848 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200849 have = libapparmor.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 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400853endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200854conf.set10('HAVE_APPARMOR', have)
855m4_defines += have ? ['-DHAVE_APPARMOR'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400856
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400857smack_run_label = get_option('smack-run-label')
858if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400859 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
860 m4_defines += ['-DHAVE_SMACK_RUN_LABEL']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400861endif
862
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400863want_polkit = get_option('polkit')
864install_polkit = false
865install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500866if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400867 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400868
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400869 libpolkit = dependency('polkit-gobject-1',
870 required : false)
871 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
872 message('Old polkit detected, will install pkla files')
873 install_polkit_pkla = true
874 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400875endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200876conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400877
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400878want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500879if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400880 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200881 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400882else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200883 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400884 libacl = []
885endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200886conf.set10('HAVE_ACL', have)
887m4_defines += have ? ['-DHAVE_ACL'] : []
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400888
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400889want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500890if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400891 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200892 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400893else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200894 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400895 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400896endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200897conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400898
899want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500900if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400901 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200902 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400903else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200904 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400905 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400906endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200907conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400908
909want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500910if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400911 libkmod = dependency('libkmod',
912 version : '>= 15',
913 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200914 have = libkmod.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 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400918endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200919conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400920
921want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500922if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400923 libpam = cc.find_library('pam', required : want_pam == 'true')
924 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200925 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400926else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200927 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400928 libpam = []
929 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400930endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200931conf.set10('HAVE_PAM', have)
932m4_defines += have ? ['-DHAVE_PAM'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400933
934want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500935if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400936 libmicrohttpd = dependency('libmicrohttpd',
937 version : '>= 0.9.33',
938 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200939 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400940else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200941 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400942 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400943endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200944conf.set10('HAVE_MICROHTTPD', have)
945m4_defines += have ? ['-DHAVE_MICROHTTPD'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400946
947want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500948if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400949 libcryptsetup = dependency('libcryptsetup',
950 version : '>= 1.6.0',
951 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200952 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400953else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200954 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400955 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400956endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200957conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400958
959want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500960if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400961 libcurl = dependency('libcurl',
962 version : '>= 7.32.0',
963 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200964 have = libcurl.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 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400968endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200969conf.set10('HAVE_LIBCURL', have)
970m4_defines += have ? ['-DHAVE_LIBCURL'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400971
972want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400973want_libidn2 = get_option('libidn2')
974if want_libidn == 'true' and want_libidn2 == 'true'
975 error('libidn and libidn2 cannot be requested simultaneously')
976endif
977
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500978if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400979 libidn = dependency('libidn',
980 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200981 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400982else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200983 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400984 libidn = []
985endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200986conf.set10('HAVE_LIBIDN', have)
987m4_defines += have ? ['-DHAVE_LIBIDN'] : []
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500988if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400989 # libidn is used for both libidn and libidn2 objects
990 libidn = dependency('libidn2',
991 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200992 have = libidn.found()
993else
994 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400995endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200996conf.set10('HAVE_LIBIDN2', have)
997m4_defines += have ? ['-DHAVE_LIBIDN2'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400998
999want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001000if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001001 libiptc = dependency('libiptc',
1002 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001003 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001004else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001005 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001006 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001007endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001008conf.set10('HAVE_LIBIPTC', have)
1009m4_defines += have ? ['-DHAVE_LIBIPTC'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001010
1011want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001012if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001013 libqrencode = dependency('libqrencode',
1014 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001015 have = libqrencode.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 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001019endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001020conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001021
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001022want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001023if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001024 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1025 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001026 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001027else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001028 have = false
1029endif
1030if not have
1031 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001032 libgcrypt = []
1033 libgpg_error = []
1034endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001035conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001036
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001037want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001038if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001039 libgnutls = dependency('gnutls',
1040 version : '>= 3.1.4',
1041 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001042 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001043else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001044 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001045 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001046endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001047conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001048
1049want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001050if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001051 libdw = dependency('libdw',
1052 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001053 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001054else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001055 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001056 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001057endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001058conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001059
1060want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001061if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001062 libz = dependency('zlib',
1063 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001064 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001065else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001066 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001067 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001068endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001069conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001070
1071want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001072if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001073 libbzip2 = cc.find_library('bz2',
1074 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001075 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001076else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001077 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001078 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001079endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001080conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001081
1082want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001083if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001084 libxz = dependency('liblzma',
1085 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001086 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001087else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001088 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001089 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001090endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001091conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001092
1093want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001094if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001095 liblz4 = dependency('liblz4',
1096 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001097 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001098else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001099 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001100 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001101endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001102conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001103
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001104want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001105if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001106 libxkbcommon = dependency('xkbcommon',
1107 version : '>= 0.3.0',
1108 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001109 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001110else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001111 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001112 libxkbcommon = []
1113endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001114conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001115
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001116want_pcre2 = get_option('pcre2')
1117if want_pcre2 != 'false'
1118 libpcre2 = dependency('libpcre2-8',
1119 required : want_pcre2 == 'true')
1120 have = libpcre2.found()
1121else
1122 have = false
1123 libpcre2 = []
1124endif
1125conf.set10('HAVE_PCRE2', have)
1126
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001127want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001128if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001129 libglib = dependency('glib-2.0',
1130 version : '>= 2.22.0',
1131 required : want_glib == 'true')
1132 libgobject = dependency('gobject-2.0',
1133 version : '>= 2.22.0',
1134 required : want_glib == 'true')
1135 libgio = dependency('gio-2.0',
1136 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001137 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001138else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001139 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001140 libglib = []
1141 libgobject = []
1142 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001143endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001144conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001145
1146want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001147if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001148 libdbus = dependency('dbus-1',
1149 version : '>= 1.3.2',
1150 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001151 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001152else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001153 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001154 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001155endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001156conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001157
Yu Watanabe42303dc2017-06-18 05:22:32 +09001158default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001159if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001160 default_dnssec = 'no'
1161endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001162if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001163 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1164 default_dnssec = 'no'
1165endif
1166conf.set('DEFAULT_DNSSEC_MODE',
1167 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1168substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1169
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001170want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001171if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001172 have = (conf.get('HAVE_LIBCURL') == 1 and
1173 conf.get('HAVE_ZLIB') == 1 and
1174 conf.get('HAVE_BZIP2') == 1 and
1175 conf.get('HAVE_XZ') == 1 and
1176 conf.get('HAVE_GCRYPT') == 1)
1177 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001178 error('importd support was requested, but dependencies are not available')
1179 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001180else
1181 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001182endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001183conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001184
1185want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001186if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001187 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1188 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001189 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1190 # it's possible to build one without the other. Complain only if
1191 # support was explictly requested. The auxiliary files like sysusers
1192 # config should be installed when any of the programs are built.
1193 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1194 error('remote support was requested, but dependencies are not available')
1195 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001196 have = have_deps[0] or have_deps[1]
1197else
1198 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001199endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001200conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001201
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001202foreach term : ['utmp',
1203 'hibernate',
1204 'environment-d',
1205 'binfmt',
1206 'coredump',
1207 'resolve',
1208 'logind',
1209 'hostnamed',
1210 'localed',
1211 'machined',
1212 'networkd',
1213 'timedated',
1214 'timesyncd',
1215 'myhostname',
1216 'firstboot',
1217 'randomseed',
1218 'backlight',
1219 'vconsole',
1220 'quotacheck',
1221 'sysusers',
1222 'tmpfiles',
1223 'hwdb',
1224 'rfkill',
1225 'ldconfig',
1226 'efi',
1227 'tpm',
1228 'ima',
1229 'smack',
1230 'gshadow',
1231 'idn',
1232 'nss-systemd']
1233 have = get_option(term)
1234 name = 'ENABLE_' + term.underscorify().to_upper()
1235 conf.set10(name, have)
1236 m4_defines += have ? ['-D' + name] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001237endforeach
1238
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001239want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001240install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001241slow_tests = get_option('slow-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001242tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001243fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001244
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001245conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001246
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001247#####################################################################
1248
1249if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001250 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001251
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001252 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001253 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001254 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001255 elif efi_arch == 'x86_64'
1256 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001257 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001258 elif efi_arch == 'arm'
1259 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001260 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001261 elif efi_arch == 'aarch64'
1262 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001263 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001264 else
1265 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001266 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001267 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001268
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001269 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001270 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001271
1272 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001273else
1274 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001275endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001276conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001277
1278#####################################################################
1279
1280config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001281 output : 'config.h',
1282 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001283
1284includes = include_directories('src/basic',
1285 'src/shared',
1286 'src/systemd',
1287 'src/journal',
1288 'src/resolve',
1289 'src/timesync',
1290 'src/login',
1291 'src/udev',
1292 'src/libudev',
1293 'src/core',
1294 'src/libsystemd/sd-bus',
1295 'src/libsystemd/sd-device',
1296 'src/libsystemd/sd-hwdb',
1297 'src/libsystemd/sd-id128',
1298 'src/libsystemd/sd-netlink',
1299 'src/libsystemd/sd-network',
1300 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001301 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001302
1303add_project_arguments('-include', 'config.h', language : 'c')
1304
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001305subdir('po')
1306subdir('catalog')
1307subdir('src/systemd')
1308subdir('src/basic')
1309subdir('src/libsystemd')
1310subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001311subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001312subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001313
1314libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001315 'journal-core',
1316 libjournal_core_sources,
1317 journald_gperf_c,
1318 include_directories : includes,
1319 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001320
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001321libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001322libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001323 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001324 '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 +02001325 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001326 include_directories : includes,
1327 link_args : ['-shared',
1328 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001329 link_with : [libbasic,
1330 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001331 link_whole : [libsystemd_static,
1332 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001333 dependencies : [threads,
1334 librt,
1335 libxz,
1336 liblz4],
1337 link_depends : libsystemd_sym,
1338 install : true,
1339 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001340
1341############################################################
1342
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001343# binaries that have --help and are intended for use by humans,
1344# usually, but not always, installed in /bin.
1345public_programs = []
1346
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001347subdir('src/libudev')
1348subdir('src/shared')
1349subdir('src/core')
1350subdir('src/udev')
1351subdir('src/network')
1352
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001353subdir('src/analyze')
1354subdir('src/journal-remote')
1355subdir('src/coredump')
1356subdir('src/hostname')
1357subdir('src/import')
1358subdir('src/kernel-install')
1359subdir('src/locale')
1360subdir('src/machine')
1361subdir('src/nspawn')
1362subdir('src/resolve')
1363subdir('src/timedate')
1364subdir('src/timesync')
1365subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001366subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001367
1368subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001369subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001370subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001371subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001372
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001373############################################################
1374
1375# only static linking apart from libdl, to make sure that the
1376# module is linked to all libraries that it uses.
1377test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001378 'test-dlopen',
1379 test_dlopen_c,
1380 include_directories : includes,
1381 link_with : [libbasic],
1382 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001383
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001384foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001385 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001386 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001387 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001388
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001389 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001390 if condition
1391 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001392
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001393 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1394 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001395
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001396 nss = shared_library(
1397 'nss_' + module,
1398 'src/nss-@0@/nss-@0@.c'.format(module),
1399 version : '2',
1400 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001401 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1402 link_args : ['-Wl,-z,nodelete',
1403 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001404 '-Wl,--version-script=' + version_script_arg,
1405 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001406 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001407 libbasic],
1408 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001409 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001410 link_depends : sym,
1411 install : true,
1412 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001413
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001414 # We cannot use shared_module because it does not support version suffix.
1415 # Unfortunately shared_library insists on creating the symlink…
1416 meson.add_install_script('sh', '-c',
1417 'rm $DESTDIR@0@/libnss_@1@.so'
1418 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001419
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001420 test('dlopen-nss_' + module,
1421 test_dlopen,
1422 args : [nss.full_path()]) # path to dlopen must include a slash
1423 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001424endforeach
1425
1426############################################################
1427
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001428executable('systemd',
1429 systemd_sources,
1430 include_directories : includes,
1431 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001432 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001433 dependencies : [threads,
1434 librt,
1435 libseccomp,
1436 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001437 libmount,
1438 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001439 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001440 install : true,
1441 install_dir : rootlibexecdir)
1442
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001443exe = executable('systemd-analyze',
1444 systemd_analyze_sources,
1445 include_directories : includes,
1446 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001447 libshared],
1448 dependencies : [threads,
1449 librt,
1450 libseccomp,
1451 libselinux,
1452 libmount,
1453 libblkid],
1454 install_rpath : rootlibexecdir,
1455 install : true)
1456public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001457
1458executable('systemd-journald',
1459 systemd_journald_sources,
1460 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001461 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001462 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001463 dependencies : [threads,
1464 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001465 liblz4,
1466 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001467 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001468 install : true,
1469 install_dir : rootlibexecdir)
1470
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001471exe = executable('systemd-cat',
1472 systemd_cat_sources,
1473 include_directories : includes,
1474 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001475 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001476 dependencies : [threads],
1477 install_rpath : rootlibexecdir,
1478 install : true)
1479public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001480
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001481exe = executable('journalctl',
1482 journalctl_sources,
1483 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001484 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001485 dependencies : [threads,
1486 libqrencode,
1487 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001488 liblz4,
1489 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001490 install_rpath : rootlibexecdir,
1491 install : true,
1492 install_dir : rootbindir)
1493public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001494
1495executable('systemd-getty-generator',
1496 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001497 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001498 link_with : [libshared],
1499 install_rpath : rootlibexecdir,
1500 install : true,
1501 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001502
1503executable('systemd-debug-generator',
1504 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001505 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001506 link_with : [libshared],
1507 install_rpath : rootlibexecdir,
1508 install : true,
1509 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001510
1511executable('systemd-fstab-generator',
1512 'src/fstab-generator/fstab-generator.c',
1513 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001514 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001515 link_with : [libshared],
1516 install_rpath : rootlibexecdir,
1517 install : true,
1518 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001519
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001520if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001521 executable('30-systemd-environment-d-generator',
1522 'src/environment-d-generator/environment-d-generator.c',
1523 include_directories : includes,
1524 link_with : [libshared],
1525 install_rpath : rootlibexecdir,
1526 install : true,
1527 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001528
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001529 meson.add_install_script(meson_make_symlink,
1530 join_paths(sysconfdir, 'environment'),
1531 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001532endif
1533
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001534if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001535 executable('systemd-hibernate-resume-generator',
1536 'src/hibernate-resume/hibernate-resume-generator.c',
1537 include_directories : includes,
1538 link_with : [libshared],
1539 install_rpath : rootlibexecdir,
1540 install : true,
1541 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001542
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001543 executable('systemd-hibernate-resume',
1544 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001545 include_directories : includes,
1546 link_with : [libshared],
1547 install_rpath : rootlibexecdir,
1548 install : true,
1549 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001550endif
1551
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001552if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001553 executable('systemd-gpt-auto-generator',
1554 'src/gpt-auto-generator/gpt-auto-generator.c',
1555 'src/basic/blkid-util.h',
1556 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001557 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001558 dependencies : libblkid,
1559 install_rpath : rootlibexecdir,
1560 install : true,
1561 install_dir : systemgeneratordir)
1562
1563 exe = executable('systemd-dissect',
1564 'src/dissect/dissect.c',
1565 include_directories : includes,
1566 link_with : [libshared],
1567 install_rpath : rootlibexecdir,
1568 install : true,
1569 install_dir : rootlibexecdir)
1570 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001571endif
1572
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001573if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001574 executable('systemd-resolved',
1575 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001576 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001577 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001578 libbasic_gcrypt,
1579 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001580 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001581 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001582 libm,
1583 libidn],
1584 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001585 install : true,
1586 install_dir : rootlibexecdir)
1587
1588 exe = executable('systemd-resolve',
1589 systemd_resolve_sources,
1590 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001591 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001592 libbasic_gcrypt,
1593 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001594 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001595 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001596 libm,
1597 libidn],
1598 install_rpath : rootlibexecdir,
1599 install : true)
1600 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001601endif
1602
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001603if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001604 executable('systemd-logind',
1605 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001606 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001607 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001608 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001609 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001610 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001611 install_rpath : rootlibexecdir,
1612 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001613 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001614
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001615 exe = executable('loginctl',
1616 loginctl_sources,
1617 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001618 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001619 dependencies : [threads,
1620 liblz4,
1621 libxz],
1622 install_rpath : rootlibexecdir,
1623 install : true,
1624 install_dir : rootbindir)
1625 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001626
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001627 exe = executable('systemd-inhibit',
1628 'src/login/inhibit.c',
1629 include_directories : includes,
1630 link_with : [libshared],
1631 install_rpath : rootlibexecdir,
1632 install : true,
1633 install_dir : rootbindir)
1634 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001635
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001636 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001637 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1638 pam_systemd = shared_library(
1639 'pam_systemd',
1640 pam_systemd_c,
1641 name_prefix : '',
1642 include_directories : includes,
1643 link_args : ['-shared',
1644 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001645 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001646 libshared_static],
1647 dependencies : [threads,
1648 libpam,
1649 libpam_misc],
1650 link_depends : pam_systemd_sym,
1651 install : true,
1652 install_dir : pamlibdir)
1653
1654 test('dlopen-pam_systemd',
1655 test_dlopen,
1656 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1657 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001658endif
1659
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001660if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001661 executable('systemd-user-sessions',
1662 'src/user-sessions/user-sessions.c',
1663 include_directories : includes,
1664 link_with : [libshared],
1665 install_rpath : rootlibexecdir,
1666 install : true,
1667 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001668endif
1669
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001670if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001671 exe = executable('bootctl',
1672 'src/boot/bootctl.c',
1673 include_directories : includes,
1674 link_with : [libshared],
1675 dependencies : [libblkid],
1676 install_rpath : rootlibexecdir,
1677 install : true)
1678 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001679endif
1680
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001681exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1682 include_directories : includes,
1683 link_with : [libshared],
1684 dependencies : [threads],
1685 install_rpath : rootlibexecdir,
1686 install : true)
1687public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001688
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001689exe = executable('systemctl', 'src/systemctl/systemctl.c',
1690 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001691 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001692 dependencies : [threads,
1693 libcap,
1694 libselinux,
1695 libxz,
1696 liblz4],
1697 install_rpath : rootlibexecdir,
1698 install : true,
1699 install_dir : rootbindir)
1700public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001701
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001702if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001703 executable('systemd-backlight',
1704 'src/backlight/backlight.c',
1705 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001706 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001707 install_rpath : rootlibexecdir,
1708 install : true,
1709 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001710endif
1711
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001712if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001713 executable('systemd-rfkill',
1714 'src/rfkill/rfkill.c',
1715 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001716 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001717 install_rpath : rootlibexecdir,
1718 install : true,
1719 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001720endif
1721
1722executable('systemd-system-update-generator',
1723 'src/system-update-generator/system-update-generator.c',
1724 include_directories : includes,
1725 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001726 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001727 install : true,
1728 install_dir : systemgeneratordir)
1729
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001730if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001731 executable('systemd-cryptsetup',
1732 'src/cryptsetup/cryptsetup.c',
1733 include_directories : includes,
1734 link_with : [libshared],
1735 dependencies : [libcryptsetup],
1736 install_rpath : rootlibexecdir,
1737 install : true,
1738 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001739
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001740 executable('systemd-cryptsetup-generator',
1741 'src/cryptsetup/cryptsetup-generator.c',
1742 include_directories : includes,
1743 link_with : [libshared],
1744 dependencies : [libcryptsetup],
1745 install_rpath : rootlibexecdir,
1746 install : true,
1747 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001748
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001749 executable('systemd-veritysetup',
1750 'src/veritysetup/veritysetup.c',
1751 include_directories : includes,
1752 link_with : [libshared],
1753 dependencies : [libcryptsetup],
1754 install_rpath : rootlibexecdir,
1755 install : true,
1756 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001757
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001758 executable('systemd-veritysetup-generator',
1759 'src/veritysetup/veritysetup-generator.c',
1760 include_directories : includes,
1761 link_with : [libshared],
1762 dependencies : [libcryptsetup],
1763 install_rpath : rootlibexecdir,
1764 install : true,
1765 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001766endif
1767
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001768if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001769 executable('systemd-sysv-generator',
1770 'src/sysv-generator/sysv-generator.c',
1771 include_directories : includes,
1772 link_with : [libshared],
1773 install_rpath : rootlibexecdir,
1774 install : true,
1775 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001776
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001777 executable('systemd-rc-local-generator',
1778 'src/rc-local-generator/rc-local-generator.c',
1779 include_directories : includes,
1780 link_with : [libshared],
1781 install_rpath : rootlibexecdir,
1782 install : true,
1783 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001784endif
1785
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001786if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001787 executable('systemd-hostnamed',
1788 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001789 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001790 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001791 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001792 install : true,
1793 install_dir : rootlibexecdir)
1794
1795 exe = executable('hostnamectl',
1796 'src/hostname/hostnamectl.c',
1797 include_directories : includes,
1798 link_with : [libshared],
1799 install_rpath : rootlibexecdir,
1800 install : true)
1801 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001802endif
1803
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001804if conf.get('ENABLE_LOCALED') == 1
1805 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001806 # logind will load libxkbcommon.so dynamically on its own
1807 deps = [libdl]
1808 else
1809 deps = []
1810 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001811
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001812 executable('systemd-localed',
1813 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001814 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001815 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001816 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001817 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001818 install : true,
1819 install_dir : rootlibexecdir)
1820
1821 exe = executable('localectl',
1822 localectl_sources,
1823 include_directories : includes,
1824 link_with : [libshared],
1825 install_rpath : rootlibexecdir,
1826 install : true)
1827 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001828endif
1829
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001830if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001831 executable('systemd-timedated',
1832 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001833 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001834 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001835 install_rpath : rootlibexecdir,
1836 install : true,
1837 install_dir : rootlibexecdir)
1838
1839 exe = executable('timedatectl',
1840 'src/timedate/timedatectl.c',
1841 include_directories : includes,
1842 install_rpath : rootlibexecdir,
1843 link_with : [libshared],
1844 install : true)
1845 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001846endif
1847
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001848if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001849 executable('systemd-timesyncd',
1850 systemd_timesyncd_sources,
1851 include_directories : includes,
1852 link_with : [libshared],
1853 dependencies : [threads,
1854 libm],
1855 install_rpath : rootlibexecdir,
1856 install : true,
1857 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001858endif
1859
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001860if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001861 executable('systemd-machined',
1862 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001863 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001864 link_with : [libmachine_core,
1865 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001866 install_rpath : rootlibexecdir,
1867 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001868 install_dir : rootlibexecdir)
1869
1870 exe = executable('machinectl',
1871 'src/machine/machinectl.c',
1872 include_directories : includes,
1873 link_with : [libshared],
1874 dependencies : [threads,
1875 libxz,
1876 liblz4],
1877 install_rpath : rootlibexecdir,
1878 install : true,
1879 install_dir : rootbindir)
1880 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001881endif
1882
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001883if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001884 executable('systemd-importd',
1885 systemd_importd_sources,
1886 include_directories : includes,
1887 link_with : [libshared],
1888 dependencies : [threads],
1889 install_rpath : rootlibexecdir,
1890 install : true,
1891 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001892
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001893 systemd_pull = executable('systemd-pull',
1894 systemd_pull_sources,
1895 include_directories : includes,
1896 link_with : [libshared],
1897 dependencies : [libcurl,
1898 libz,
1899 libbzip2,
1900 libxz,
1901 libgcrypt],
1902 install_rpath : rootlibexecdir,
1903 install : true,
1904 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001905
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001906 systemd_import = executable('systemd-import',
1907 systemd_import_sources,
1908 include_directories : includes,
1909 link_with : [libshared],
1910 dependencies : [libcurl,
1911 libz,
1912 libbzip2,
1913 libxz],
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_export = executable('systemd-export',
1919 systemd_export_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)
1929 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001930endif
1931
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001932if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001933 exe = executable('systemd-journal-upload',
1934 systemd_journal_upload_sources,
1935 include_directories : includes,
1936 link_with : [libshared],
1937 dependencies : [threads,
1938 libcurl,
1939 libgnutls,
1940 libxz,
1941 liblz4],
1942 install_rpath : rootlibexecdir,
1943 install : true,
1944 install_dir : rootlibexecdir)
1945 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001946endif
1947
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001948if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001949 s_j_remote = executable('systemd-journal-remote',
1950 systemd_journal_remote_sources,
1951 include_directories : includes,
1952 link_with : [libshared],
1953 dependencies : [threads,
1954 libmicrohttpd,
1955 libgnutls,
1956 libxz,
1957 liblz4],
1958 install_rpath : rootlibexecdir,
1959 install : true,
1960 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001961
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001962 s_j_gatewayd = executable('systemd-journal-gatewayd',
1963 systemd_journal_gatewayd_sources,
1964 include_directories : includes,
1965 link_with : [libshared],
1966 dependencies : [threads,
1967 libmicrohttpd,
1968 libgnutls,
1969 libxz,
1970 liblz4],
1971 install_rpath : rootlibexecdir,
1972 install : true,
1973 install_dir : rootlibexecdir)
1974 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001975endif
1976
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001977if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001978 executable('systemd-coredump',
1979 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001980 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001981 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001982 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001983 libacl,
1984 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001985 libxz,
1986 liblz4],
1987 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001988 install : true,
1989 install_dir : rootlibexecdir)
1990
1991 exe = executable('coredumpctl',
1992 coredumpctl_sources,
1993 include_directories : includes,
1994 link_with : [libshared],
1995 dependencies : [threads,
1996 libxz,
1997 liblz4],
1998 install_rpath : rootlibexecdir,
1999 install : true)
2000 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002001endif
2002
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002003if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002004 exe = executable('systemd-binfmt',
2005 'src/binfmt/binfmt.c',
2006 include_directories : includes,
2007 link_with : [libshared],
2008 install_rpath : rootlibexecdir,
2009 install : true,
2010 install_dir : rootlibexecdir)
2011 public_programs += [exe]
2012
2013 meson.add_install_script('sh', '-c',
2014 mkdir_p.format(binfmtdir))
2015 meson.add_install_script('sh', '-c',
2016 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2017endif
2018
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002019if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002020 executable('systemd-vconsole-setup',
2021 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002022 include_directories : includes,
2023 link_with : [libshared],
2024 install_rpath : rootlibexecdir,
2025 install : true,
2026 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002027endif
2028
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002029if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002030 executable('systemd-random-seed',
2031 'src/random-seed/random-seed.c',
2032 include_directories : includes,
2033 link_with : [libshared],
2034 install_rpath : rootlibexecdir,
2035 install : true,
2036 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002037endif
2038
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002039if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002040 executable('systemd-firstboot',
2041 'src/firstboot/firstboot.c',
2042 include_directories : includes,
2043 link_with : [libshared],
2044 dependencies : [libcrypt],
2045 install_rpath : rootlibexecdir,
2046 install : true,
2047 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002048endif
2049
2050executable('systemd-remount-fs',
2051 'src/remount-fs/remount-fs.c',
2052 'src/core/mount-setup.c',
2053 'src/core/mount-setup.h',
2054 include_directories : includes,
2055 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002056 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002057 install : true,
2058 install_dir : rootlibexecdir)
2059
2060executable('systemd-machine-id-setup',
2061 'src/machine-id-setup/machine-id-setup-main.c',
2062 'src/core/machine-id-setup.c',
2063 'src/core/machine-id-setup.h',
2064 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002065 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002066 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002067 install : true,
2068 install_dir : rootbindir)
2069
2070executable('systemd-fsck',
2071 'src/fsck/fsck.c',
2072 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002073 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002074 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002075 install : true,
2076 install_dir : rootlibexecdir)
2077
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002078executable('systemd-growfs',
2079 'src/partition/growfs.c',
2080 include_directories : includes,
2081 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002082 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002083 install_rpath : rootlibexecdir,
2084 install : true,
2085 install_dir : rootlibexecdir)
2086
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002087executable('systemd-makefs',
2088 'src/partition/makefs.c',
2089 include_directories : includes,
2090 link_with : [libshared],
2091 install_rpath : rootlibexecdir,
2092 install : true,
2093 install_dir : rootlibexecdir)
2094
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002095executable('systemd-sleep',
2096 'src/sleep/sleep.c',
2097 include_directories : includes,
2098 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002099 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002100 install : true,
2101 install_dir : rootlibexecdir)
2102
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002103exe = executable('systemd-sysctl',
2104 'src/sysctl/sysctl.c',
2105 include_directories : includes,
2106 link_with : [libshared],
2107 install_rpath : rootlibexecdir,
2108 install : true,
2109 install_dir : rootlibexecdir)
2110public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002111
2112executable('systemd-ac-power',
2113 'src/ac-power/ac-power.c',
2114 include_directories : includes,
2115 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002116 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002117 install : true,
2118 install_dir : rootlibexecdir)
2119
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002120exe = executable('systemd-detect-virt',
2121 'src/detect-virt/detect-virt.c',
2122 include_directories : includes,
2123 link_with : [libshared],
2124 install_rpath : rootlibexecdir,
2125 install : true)
2126public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002127
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002128exe = executable('systemd-delta',
2129 'src/delta/delta.c',
2130 include_directories : includes,
2131 link_with : [libshared],
2132 install_rpath : rootlibexecdir,
2133 install : true)
2134public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002135
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002136exe = executable('systemd-escape',
2137 'src/escape/escape.c',
2138 include_directories : includes,
2139 link_with : [libshared],
2140 install_rpath : rootlibexecdir,
2141 install : true,
2142 install_dir : rootbindir)
2143public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002144
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002145exe = executable('systemd-notify',
2146 'src/notify/notify.c',
2147 include_directories : includes,
2148 link_with : [libshared],
2149 install_rpath : rootlibexecdir,
2150 install : true,
2151 install_dir : rootbindir)
2152public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002153
2154executable('systemd-volatile-root',
2155 'src/volatile-root/volatile-root.c',
2156 include_directories : includes,
2157 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002158 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002159 install : true,
2160 install_dir : rootlibexecdir)
2161
2162executable('systemd-cgroups-agent',
2163 'src/cgroups-agent/cgroups-agent.c',
2164 include_directories : includes,
2165 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002166 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002167 install : true,
2168 install_dir : rootlibexecdir)
2169
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002170exe = executable('systemd-path',
2171 'src/path/path.c',
2172 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002173 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002174 install_rpath : rootlibexecdir,
2175 install : true)
2176public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002177
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002178exe = executable('systemd-ask-password',
2179 'src/ask-password/ask-password.c',
2180 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002181 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002182 install_rpath : rootlibexecdir,
2183 install : true,
2184 install_dir : rootbindir)
2185public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002186
2187executable('systemd-reply-password',
2188 'src/reply-password/reply-password.c',
2189 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002190 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002191 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002192 install : true,
2193 install_dir : rootlibexecdir)
2194
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002195exe = executable('systemd-tty-ask-password-agent',
2196 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2197 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002198 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002199 install_rpath : rootlibexecdir,
2200 install : true,
2201 install_dir : rootbindir)
2202public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002203
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002204exe = executable('systemd-cgls',
2205 'src/cgls/cgls.c',
2206 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002207 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002208 install_rpath : rootlibexecdir,
2209 install : true)
2210public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002211
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002212exe = executable('systemd-cgtop',
2213 'src/cgtop/cgtop.c',
2214 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002215 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002216 install_rpath : rootlibexecdir,
2217 install : true)
2218public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002219
2220executable('systemd-initctl',
2221 'src/initctl/initctl.c',
2222 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002223 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002224 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002225 install : true,
2226 install_dir : rootlibexecdir)
2227
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002228exe = executable('systemd-mount',
2229 'src/mount/mount-tool.c',
2230 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002231 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002232 install_rpath : rootlibexecdir,
2233 install : true)
2234public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002235
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002236meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002237 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002238
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002239exe = executable('systemd-run',
2240 'src/run/run.c',
2241 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002242 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002243 install_rpath : rootlibexecdir,
2244 install : true)
2245public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002246
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002247exe = executable('systemd-stdio-bridge',
2248 'src/stdio-bridge/stdio-bridge.c',
2249 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002250 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002251 install_rpath : rootlibexecdir,
2252 install : true)
2253public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002254
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002255exe = executable('busctl',
2256 'src/busctl/busctl.c',
2257 'src/busctl/busctl-introspect.c',
2258 'src/busctl/busctl-introspect.h',
2259 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002260 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002261 install_rpath : rootlibexecdir,
2262 install : true)
2263public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002264
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002265if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002266 exe = executable('systemd-sysusers',
2267 'src/sysusers/sysusers.c',
2268 include_directories : includes,
2269 link_with : [libshared],
2270 install_rpath : rootlibexecdir,
2271 install : true,
2272 install_dir : rootbindir)
2273 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002274endif
2275
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002276if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002277 exe = executable('systemd-tmpfiles',
2278 'src/tmpfiles/tmpfiles.c',
2279 include_directories : includes,
2280 link_with : [libshared],
2281 dependencies : [libacl],
2282 install_rpath : rootlibexecdir,
2283 install : true,
2284 install_dir : rootbindir)
2285 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002286
2287 test('test-systemd-tmpfiles',
2288 test_systemd_tmpfiles_py,
2289 args : exe.full_path())
2290 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002291endif
2292
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002293if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002294 exe = executable('systemd-hwdb',
2295 'src/hwdb/hwdb.c',
2296 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2297 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002298 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002299 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002300 install : true,
2301 install_dir : rootbindir)
2302 public_programs += [exe]
2303endif
2304
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002305if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002306 executable('systemd-quotacheck',
2307 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002308 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002309 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002310 install_rpath : rootlibexecdir,
2311 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002312 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002313endif
2314
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002315exe = executable('systemd-socket-proxyd',
2316 'src/socket-proxy/socket-proxyd.c',
2317 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002318 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002319 dependencies : [threads],
2320 install_rpath : rootlibexecdir,
2321 install : true,
2322 install_dir : rootlibexecdir)
2323public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002324
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002325exe = executable('systemd-udevd',
2326 systemd_udevd_sources,
2327 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002328 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002329 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002330 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002331 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002332 dependencies : [threads,
2333 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002334 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002335 libacl,
2336 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002337 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002338 install : true,
2339 install_dir : rootlibexecdir)
2340public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002341
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002342exe = executable('udevadm',
2343 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002344 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002345 include_directories : includes,
2346 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002347 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002348 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002349 dependencies : [threads,
2350 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002351 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002352 libacl,
2353 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002354 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002355 install : true,
2356 install_dir : rootbindir)
2357public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002358
2359executable('systemd-shutdown',
2360 systemd_shutdown_sources,
2361 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002362 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002363 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002364 install : true,
2365 install_dir : rootlibexecdir)
2366
2367executable('systemd-update-done',
2368 'src/update-done/update-done.c',
2369 include_directories : includes,
2370 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002371 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002372 install : true,
2373 install_dir : rootlibexecdir)
2374
2375executable('systemd-update-utmp',
2376 'src/update-utmp/update-utmp.c',
2377 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002378 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002379 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002380 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002381 install : true,
2382 install_dir : rootlibexecdir)
2383
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002384if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002385 executable('systemd-modules-load',
2386 'src/modules-load/modules-load.c',
2387 include_directories : includes,
2388 link_with : [libshared],
2389 dependencies : [libkmod],
2390 install_rpath : rootlibexecdir,
2391 install : true,
2392 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002393
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002394 meson.add_install_script('sh', '-c',
2395 mkdir_p.format(modulesloaddir))
2396 meson.add_install_script('sh', '-c',
2397 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002398endif
2399
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002400exe = executable('systemd-nspawn',
2401 systemd_nspawn_sources,
2402 'src/core/mount-setup.c', # FIXME: use a variable?
2403 'src/core/mount-setup.h',
2404 'src/core/loopback-setup.c',
2405 'src/core/loopback-setup.h',
2406 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002407 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002408 dependencies : [libacl,
2409 libblkid,
2410 libseccomp,
2411 libselinux],
2412 install_rpath : rootlibexecdir,
2413 install : true)
2414public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002415
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002416if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002417 executable('systemd-networkd',
2418 systemd_networkd_sources,
2419 include_directories : includes,
2420 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002421 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002422 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002423 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002424 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002425 install_rpath : rootlibexecdir,
2426 install : true,
2427 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002428
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002429 executable('systemd-networkd-wait-online',
2430 systemd_networkd_wait_online_sources,
2431 include_directories : includes,
2432 link_with : [libnetworkd_core,
2433 libshared],
2434 install_rpath : rootlibexecdir,
2435 install : true,
2436 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002437
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002438 exe = executable('networkctl',
2439 networkctl_sources,
2440 include_directories : includes,
2441 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002442 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002443 install_rpath : rootlibexecdir,
2444 install : true,
2445 install_dir : rootbindir)
2446 public_programs += [exe]
2447endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002448
2449executable('systemd-sulogin-shell',
2450 ['src/sulogin-shell/sulogin-shell.c'],
2451 include_directories : includes,
2452 link_with : [libshared],
2453 install_rpath : rootlibexecdir,
2454 install : true,
2455 install_dir : rootlibexecdir)
2456
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002457############################################################
2458
2459foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002460 sources = tuple[0]
2461 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2462 dependencies = tuple[2]
2463 condition = tuple.length() >= 4 ? tuple[3] : ''
2464 type = tuple.length() >= 5 ? tuple[4] : ''
2465 defs = tuple.length() >= 6 ? tuple[5] : []
2466 incs = tuple.length() >= 7 ? tuple[6] : includes
2467 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002468
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002469 name = sources[0].split('/')[-1].split('.')[0]
2470 if type.startswith('timeout=')
2471 timeout = type.split('=')[1].to_int()
2472 type = ''
2473 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002474 if want_tests == 'false'
2475 message('Not compiling @0@ because tests is set to false'.format(name))
2476 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002477 exe = executable(
2478 name,
2479 sources,
2480 include_directories : incs,
2481 link_with : link_with,
2482 dependencies : dependencies,
2483 c_args : defs,
2484 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002485 install : install_tests,
2486 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002487
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002488 if type == 'manual'
2489 message('@0@ is a manual test'.format(name))
2490 elif type == 'unsafe' and want_tests != 'unsafe'
2491 message('@0@ is an unsafe test'.format(name))
2492 else
2493 test(name, exe,
2494 env : test_env,
2495 timeout : timeout)
2496 endif
2497 else
2498 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2499 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002500endforeach
2501
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002502test_libsystemd_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002503 'test-libsystemd-sym',
2504 test_libsystemd_sym_c,
2505 include_directories : includes,
2506 link_with : [libsystemd],
2507 install : install_tests,
2508 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002509test('test-libsystemd-sym',
2510 test_libsystemd_sym)
2511
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002512test_libudev_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002513 'test-libudev-sym',
2514 test_libudev_sym_c,
2515 include_directories : includes,
2516 c_args : ['-Wno-deprecated-declarations'],
2517 link_with : [libudev],
2518 install : install_tests,
2519 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002520test('test-libudev-sym',
2521 test_libudev_sym)
2522
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002523############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002524
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002525fuzzer_exes = []
2526
2527foreach tuple : fuzzers
2528 sources = tuple[0]
2529 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2530 dependencies = tuple[2]
2531 defs = tuple.length() >= 4 ? tuple[3] : []
2532 incs = tuple.length() >= 5 ? tuple[4] : includes
2533
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002534 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002535 dependencies += fuzzing_engine
2536 else
2537 sources += 'src/fuzz/fuzz-main.c'
2538 endif
2539
2540 name = sources[0].split('/')[-1].split('.')[0]
2541
2542 fuzzer_exes += executable(
2543 name,
2544 sources,
2545 include_directories : [incs, include_directories('src/fuzz')],
2546 link_with : link_with,
2547 dependencies : dependencies,
2548 c_args : defs,
2549 install : false)
2550endforeach
2551
2552run_target('fuzzers',
2553 depends : fuzzer_exes,
2554 command : ['true'])
2555
2556############################################################
2557
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002558make_directive_index_py = find_program('tools/make-directive-index.py')
2559make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002560xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002561hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002562
2563subdir('units')
2564subdir('sysctl.d')
2565subdir('sysusers.d')
2566subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002567subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002568subdir('hwdb')
2569subdir('network')
2570subdir('man')
2571subdir('shell-completion/bash')
2572subdir('shell-completion/zsh')
2573subdir('docs/sysvinit')
2574subdir('docs/var-log')
2575
2576# FIXME: figure out if the warning is true:
2577# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2578install_subdir('factory/etc',
2579 install_dir : factorydir)
2580
2581
2582install_data('xorg/50-systemd-user.sh',
2583 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002584install_data('modprobe.d/systemd.conf',
2585 install_dir : modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002586install_data('README',
2587 'NEWS',
2588 'CODING_STYLE',
2589 'DISTRO_PORTING',
2590 'ENVIRONMENT.md',
2591 'LICENSE.GPL2',
2592 'LICENSE.LGPL2.1',
Felipe Satelerf9f54412017-12-18 10:58:13 -03002593 'TRANSIENT-SETTINGS.md',
2594 'UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002595 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2596 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002597
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002598meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2599meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2600
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002601############################################################
2602
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002603meson_check_help = find_program('tools/meson-check-help.sh')
2604
2605foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002606 name = exec.full_path().split('/')[-1]
2607 test('check-help-' + name,
2608 meson_check_help,
2609 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002610endforeach
2611
2612############################################################
2613
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002614prev = ''
2615foreach p : fuzz_regression_tests
2616 a = p.split('/')[-3]
2617 b = p.split('/')[-2]
2618 c = p.split('/')[-1]
2619
2620 if a == 'address'
2621 build = sanitize_address
2622 else
2623 error('unknown sanitizer @0@'.format(a))
2624 endif
2625
2626 name = '@1@:@0@'.format(a, b)
2627
2628 if name != prev
2629 if want_tests == 'false'
2630 message('Not compiling @0@ because tests is set to false'.format(name))
2631 elif not sanitizers.contains(a)
2632 message('Not compiling @0@ because @1@ sanitizer is not available'.format(name, a))
2633 elif slow_tests
2634 exe = custom_target(
2635 name,
2636 output : name,
2637 depends : build,
2638 command : [env, 'ln', '-fs',
2639 join_paths(build.full_path(), b),
2640 '@OUTPUT@'],
2641 build_by_default : true)
2642 else
2643 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2644 endif
2645 endif
2646 prev = name
2647
2648 if want_tests != 'false' and slow_tests
2649 test(c, env, args : [exe.full_path(),
2650 join_paths(meson.source_root(),
2651 'test/fuzz-regressions',
2652 p)])
2653 endif
2654endforeach
2655
2656############################################################
2657
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002658if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002659 all_files = run_command(
2660 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002661 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002662 'ls-files',
2663 ':/*.[ch]'])
2664 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002665
userwithuide85a6902017-08-09 13:41:44 +00002666 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002667 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002668 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002669 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002670 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002671 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002672 output : 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002673 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002674endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002675
2676if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002677 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002678 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002679 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002680 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002681endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002682
2683if git.found()
2684 git_head = run_command(
2685 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002686 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002687 'rev-parse', 'HEAD']).stdout().strip()
2688 git_head_short = run_command(
2689 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002690 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002691 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2692
2693 run_target(
2694 'git-snapshot',
2695 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002696 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002697 git_head_short),
2698 '--prefix', 'systemd-@0@/'.format(git_head),
2699 'HEAD'])
2700endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002701
2702############################################################
2703
Lennart Poettering51b13862017-12-20 12:51:14 +01002704meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2705run_target(
2706 'check-api-docs',
2707 depends : [man, libsystemd, libudev],
2708 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2709
2710############################################################
2711
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002712status = [
2713 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2714
Yu Watanabe359b4962017-11-25 20:35:24 +09002715 'prefix directory: @0@'.format(prefixdir),
2716 'rootprefix directory: @0@'.format(rootprefixdir),
2717 'sysconf directory: @0@'.format(sysconfdir),
2718 'include directory: @0@'.format(includedir),
2719 'lib directory: @0@'.format(libdir),
2720 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002721 'SysV init scripts: @0@'.format(sysvinit_path),
2722 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002723 'PAM modules directory: @0@'.format(pamlibdir),
2724 'PAM configuration directory: @0@'.format(pamconfdir),
2725 'RPM macros directory: @0@'.format(rpmmacrosdir),
2726 'modprobe.d directory: @0@'.format(modprobedir),
2727 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2728 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2729 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2730 'bash completions directory: @0@'.format(bashcompletiondir),
2731 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002732 'extra start script: @0@'.format(get_option('rc-local')),
2733 'extra stop script: @0@'.format(get_option('halt-local')),
2734 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2735 get_option('debug-tty')),
2736 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002737 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002738 'maximum system UID: @0@'.format(system_uid_max),
2739 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002740 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2741 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2742 'minimum container UID base: @0@'.format(container_uid_base_min),
2743 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002744 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002745 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002746 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002747 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002748 'nobody user name: @0@'.format(nobody_user),
2749 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002750 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002751 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002752
2753 'default DNSSEC mode: @0@'.format(default_dnssec),
2754 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2755 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2756
2757alt_dns_servers = '\n '.join(dns_servers.split(' '))
2758alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2759status += [
2760 'default DNS servers: @0@'.format(alt_dns_servers),
2761 'default NTP servers: @0@'.format(alt_ntp_servers)]
2762
2763alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2764 '@@0@'.format(time_epoch)).stdout().strip()
2765status += [
2766 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2767
2768# TODO:
2769# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2770# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2771# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2772
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002773if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002774 status += [
2775 'efi arch: @0@'.format(efi_arch)]
2776
2777 if have_gnu_efi
2778 status += [
2779 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2780 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002781 'EFI lib directory: @0@'.format(efi_libdir),
2782 'EFI lds directory: @0@'.format(efi_ldsdir),
2783 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002784 endif
2785endif
2786
2787found = []
2788missing = []
2789
2790foreach tuple : [
2791 ['libcryptsetup'],
2792 ['PAM'],
2793 ['AUDIT'],
2794 ['IMA'],
2795 ['AppArmor'],
2796 ['SELinux'],
2797 ['SECCOMP'],
2798 ['SMACK'],
2799 ['zlib'],
2800 ['xz'],
2801 ['lz4'],
2802 ['bzip2'],
2803 ['ACL'],
2804 ['gcrypt'],
2805 ['qrencode'],
2806 ['microhttpd'],
2807 ['gnutls'],
2808 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002809 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002810 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002811 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002812 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002813 ['libiptc'],
2814 ['elfutils'],
2815 ['binfmt'],
2816 ['vconsole'],
2817 ['quotacheck'],
2818 ['tmpfiles'],
2819 ['environment.d'],
2820 ['sysusers'],
2821 ['firstboot'],
2822 ['randomseed'],
2823 ['backlight'],
2824 ['rfkill'],
2825 ['logind'],
2826 ['machined'],
2827 ['importd'],
2828 ['hostnamed'],
2829 ['timedated'],
2830 ['timesyncd'],
2831 ['localed'],
2832 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002833 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002834 ['coredump'],
2835 ['polkit'],
2836 ['legacy pkla', install_polkit_pkla],
2837 ['efi'],
2838 ['gnu-efi', have_gnu_efi],
2839 ['kmod'],
2840 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01002841 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002842 ['blkid'],
2843 ['dbus'],
2844 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002845 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002846 ['hwdb'],
2847 ['tpm'],
2848 ['man pages', want_man],
2849 ['html pages', want_html],
2850 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002851 ['split /usr', conf.get('HAVE_SPLIT_USR') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002852 ['SysV compat'],
2853 ['utmp'],
2854 ['ldconfig'],
2855 ['hibernate'],
2856 ['adm group', get_option('adm-group')],
2857 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002858 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002859 ['debug hashmap'],
2860 ['debug mmap cache'],
2861]
2862
2863 cond = tuple.get(1, '')
2864 if cond == ''
2865 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2866 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002867 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002868 endif
2869 if cond
2870 found += [tuple[0]]
2871 else
2872 missing += [tuple[0]]
2873 endif
2874endforeach
2875
2876status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002877 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002878 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002879 '',
2880 'disabled features: @0@'.format(', '.join(missing)),
2881 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002882message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002883
2884if rootprefixdir != rootprefix_default
2885 message('WARNING:\n' +
2886 ' Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2887 ' systemd used fixed names for unit file directories and other paths, so anything\n' +
2888 ' except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
2889endif