blob: 6f1c44f8ca784ca6d386f6c9e9d567730c478da6 [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,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800659 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
660 '/etc/login.defs').stdout().strip()
661 if system_uid_max == ''
662 system_uid_max = '999'
663 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400664endif
665system_uid_max = system_uid_max.to_int()
666conf.set('SYSTEM_UID_MAX', system_uid_max)
667substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400668message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400669
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400670system_gid_max = get_option('system-gid-max')
671if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400672 system_gid_max = run_command(
673 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800674 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
675 '/etc/login.defs').stdout().strip()
676 if system_gid_max == ''
677 system_gid_max = '999'
678 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400679endif
680system_gid_max = system_gid_max.to_int()
681conf.set('SYSTEM_GID_MAX', system_gid_max)
682substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400683message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400684
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100685dynamic_uid_min = get_option('dynamic-uid-min').to_int()
686dynamic_uid_max = get_option('dynamic-uid-max').to_int()
687conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
688conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
689substs.set('dynamicuidmin', dynamic_uid_min)
690substs.set('dynamicuidmax', dynamic_uid_max)
691
692container_uid_base_min = get_option('container-uid-base-min').to_int()
693container_uid_base_max = get_option('container-uid-base-max').to_int()
694conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
695conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
696substs.set('containeruidbasemin', container_uid_base_min)
697substs.set('containeruidbasemax', container_uid_base_max)
698
Lennart Poetteringafde4572017-12-05 11:00:24 +0100699nobody_user = get_option('nobody-user')
700nobody_group = get_option('nobody-group')
701
702getent_result = run_command('getent', 'passwd', '65534')
703if getent_result.returncode() == 0
704 name = getent_result.stdout().split(':')[0]
705 if name != nobody_user
706 message('WARNING:\n' +
707 ' 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) +
708 ' Your build will result in an user table setup that is incompatible with the local system.')
709 endif
710endif
711id_result = run_command('id', '-u', nobody_user)
712if id_result.returncode() == 0
713 id = id_result.stdout().to_int()
714 if id != 65534
715 message('WARNING:\n' +
716 ' 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) +
717 ' Your build will result in an user table setup that is incompatible with the local system.')
718 endif
719endif
720
721getent_result = run_command('getent', 'group', '65534')
722if getent_result.returncode() == 0
723 name = getent_result.stdout().split(':')[0]
724 if name != nobody_group
725 message('WARNING:\n' +
726 ' 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) +
727 ' Your build will result in an group table setup that is incompatible with the local system.')
728 endif
729endif
730id_result = run_command('id', '-g', nobody_group)
731if id_result.returncode() == 0
732 id = id_result.stdout().to_int()
733 if id != 65534
734 message('WARNING:\n' +
735 ' 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) +
736 ' Your build will result in an group table setup that is incompatible with the local system.')
737 endif
738endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900739if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
740 message('WARNING:\n' +
741 ' The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
742 ' Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
743endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100744
745conf.set_quoted('NOBODY_USER_NAME', nobody_user)
746conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900747substs.set('NOBODY_USER_NAME', nobody_user)
748substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100749
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400750tty_gid = get_option('tty-gid')
751conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400752substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400753
Ikey Doherty84786b82017-12-03 12:28:23 +0000754# Ensure provided GID argument is numeric, otherwise fallback to default assignment
755if get_option('users-gid') != ''
Yu Watanabed6806872017-12-05 14:01:39 +0900756 users_gid = get_option('users-gid').to_int()
Ikey Doherty84786b82017-12-03 12:28:23 +0000757else
Yu Watanabed6806872017-12-05 14:01:39 +0900758 users_gid = '-'
Ikey Doherty84786b82017-12-03 12:28:23 +0000759endif
760substs.set('USERS_GID', users_gid)
761
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400762if get_option('adm-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400763 m4_defines += ['-DENABLE_ADM_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400764endif
765
766if get_option('wheel-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400767 m4_defines += ['-DENABLE_WHEEL_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400768endif
769
770substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700771substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400772
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400773kill_user_processes = get_option('default-kill-user-processes')
774conf.set10('KILL_USER_PROCESSES', kill_user_processes)
775substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400776
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400777dns_servers = get_option('dns-servers')
778conf.set_quoted('DNS_SERVERS', dns_servers)
779substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400780
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400781ntp_servers = get_option('ntp-servers')
782conf.set_quoted('NTP_SERVERS', ntp_servers)
783substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400784
785conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
786
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400787substs.set('SUSHELL', get_option('debug-shell'))
788substs.set('DEBUGTTY', get_option('debug-tty'))
789
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400790debug = get_option('debug')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200791enable_debug_hashmap = false
792enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400793if debug != ''
794 foreach name : debug.split(',')
795 if name == 'hashmap'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200796 enable_debug_hashmap = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400797 elif name == 'mmap-cache'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200798 enable_debug_mmap_cache = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400799 else
800 message('unknown debug option "@0@", ignoring'.format(name))
801 endif
802 endforeach
803endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200804conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
805conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400806
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400807#####################################################################
808
809threads = dependency('threads')
810librt = cc.find_library('rt')
811libm = cc.find_library('m')
812libdl = cc.find_library('dl')
813libcrypt = cc.find_library('crypt')
814
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400815libcap = dependency('libcap', required : false)
816if not libcap.found()
817 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
818 libcap = cc.find_library('cap')
819endif
820
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400821libmount = dependency('mount',
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -0500822 version : '>= 2.30',
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500823 required : not fuzzer_build)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400824
825want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500826if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400827 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400828 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400829 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200830 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400831else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200832 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400833 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400834endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200835conf.set10('HAVE_SECCOMP', have)
836m4_defines += have ? ['-DHAVE_SECCOMP'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400837
838want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500839if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400840 libselinux = dependency('libselinux',
841 version : '>= 2.1.9',
842 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200843 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400844else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200845 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400846 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400847endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200848conf.set10('HAVE_SELINUX', have)
849m4_defines += have ? ['-DHAVE_SELINUX'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400850
851want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500852if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400853 libapparmor = dependency('libapparmor',
854 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200855 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400856else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200857 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400858 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400859endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200860conf.set10('HAVE_APPARMOR', have)
861m4_defines += have ? ['-DHAVE_APPARMOR'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400862
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400863smack_run_label = get_option('smack-run-label')
864if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400865 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
866 m4_defines += ['-DHAVE_SMACK_RUN_LABEL']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400867endif
868
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400869want_polkit = get_option('polkit')
870install_polkit = false
871install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500872if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400873 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400874
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400875 libpolkit = dependency('polkit-gobject-1',
876 required : false)
877 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
878 message('Old polkit detected, will install pkla files')
879 install_polkit_pkla = true
880 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400881endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200882conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400883
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400884want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500885if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400886 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200887 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400888else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200889 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400890 libacl = []
891endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200892conf.set10('HAVE_ACL', have)
893m4_defines += have ? ['-DHAVE_ACL'] : []
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400894
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400895want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500896if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400897 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200898 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400899else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200900 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400901 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400902endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200903conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400904
905want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500906if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400907 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200908 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400909else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200910 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400911 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400912endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200913conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400914
915want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500916if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400917 libkmod = dependency('libkmod',
918 version : '>= 15',
919 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200920 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400921else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200922 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400923 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400924endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200925conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400926
927want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500928if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400929 libpam = cc.find_library('pam', required : want_pam == 'true')
930 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200931 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400932else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200933 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400934 libpam = []
935 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400936endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200937conf.set10('HAVE_PAM', have)
938m4_defines += have ? ['-DHAVE_PAM'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400939
940want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500941if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400942 libmicrohttpd = dependency('libmicrohttpd',
943 version : '>= 0.9.33',
944 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200945 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400946else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200947 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400948 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400949endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200950conf.set10('HAVE_MICROHTTPD', have)
951m4_defines += have ? ['-DHAVE_MICROHTTPD'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400952
953want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500954if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400955 libcryptsetup = dependency('libcryptsetup',
956 version : '>= 1.6.0',
957 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200958 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400959else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200960 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400961 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400962endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200963conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400964
965want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500966if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400967 libcurl = dependency('libcurl',
968 version : '>= 7.32.0',
969 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200970 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400971else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200972 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400973 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400974endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200975conf.set10('HAVE_LIBCURL', have)
976m4_defines += have ? ['-DHAVE_LIBCURL'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400977
978want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400979want_libidn2 = get_option('libidn2')
980if want_libidn == 'true' and want_libidn2 == 'true'
981 error('libidn and libidn2 cannot be requested simultaneously')
982endif
983
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500984if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400985 libidn = dependency('libidn',
986 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200987 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400988else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200989 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400990 libidn = []
991endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200992conf.set10('HAVE_LIBIDN', have)
993m4_defines += have ? ['-DHAVE_LIBIDN'] : []
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500994if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400995 # libidn is used for both libidn and libidn2 objects
996 libidn = dependency('libidn2',
997 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200998 have = libidn.found()
999else
1000 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001001endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001002conf.set10('HAVE_LIBIDN2', have)
1003m4_defines += have ? ['-DHAVE_LIBIDN2'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001004
1005want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001006if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001007 libiptc = dependency('libiptc',
1008 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001009 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001010else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001011 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001012 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001013endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001014conf.set10('HAVE_LIBIPTC', have)
1015m4_defines += have ? ['-DHAVE_LIBIPTC'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001016
1017want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001018if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001019 libqrencode = dependency('libqrencode',
1020 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001021 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001022else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001023 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001024 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001025endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001026conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001027
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001028want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001029if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001030 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1031 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001032 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001033else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001034 have = false
1035endif
1036if not have
1037 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001038 libgcrypt = []
1039 libgpg_error = []
1040endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001041conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001042
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001043want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001044if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001045 libgnutls = dependency('gnutls',
1046 version : '>= 3.1.4',
1047 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001048 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001049else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001050 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001051 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001052endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001053conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001054
1055want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001056if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001057 libdw = dependency('libdw',
1058 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001059 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001060else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001061 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001062 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001063endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001064conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001065
1066want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001067if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001068 libz = dependency('zlib',
1069 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001070 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001071else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001072 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001073 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001074endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001075conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001076
1077want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001078if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001079 libbzip2 = cc.find_library('bz2',
1080 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001081 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001082else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001083 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001084 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001085endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001086conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001087
1088want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001089if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001090 libxz = dependency('liblzma',
1091 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001092 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001093else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001094 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001095 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001096endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001097conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001098
1099want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001100if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001101 liblz4 = dependency('liblz4',
1102 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001103 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001104else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001105 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001106 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001107endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001108conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001109
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001110want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001111if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001112 libxkbcommon = dependency('xkbcommon',
1113 version : '>= 0.3.0',
1114 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001115 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001116else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001117 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001118 libxkbcommon = []
1119endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001120conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001121
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001122want_pcre2 = get_option('pcre2')
1123if want_pcre2 != 'false'
1124 libpcre2 = dependency('libpcre2-8',
1125 required : want_pcre2 == 'true')
1126 have = libpcre2.found()
1127else
1128 have = false
1129 libpcre2 = []
1130endif
1131conf.set10('HAVE_PCRE2', have)
1132
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001133want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001134if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001135 libglib = dependency('glib-2.0',
1136 version : '>= 2.22.0',
1137 required : want_glib == 'true')
1138 libgobject = dependency('gobject-2.0',
1139 version : '>= 2.22.0',
1140 required : want_glib == 'true')
1141 libgio = dependency('gio-2.0',
1142 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001143 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001144else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001145 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001146 libglib = []
1147 libgobject = []
1148 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001149endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001150conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001151
1152want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001153if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001154 libdbus = dependency('dbus-1',
1155 version : '>= 1.3.2',
1156 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001157 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001158else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001159 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001160 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001161endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001162conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001163
Yu Watanabe42303dc2017-06-18 05:22:32 +09001164default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001165if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001166 default_dnssec = 'no'
1167endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001168if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001169 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1170 default_dnssec = 'no'
1171endif
1172conf.set('DEFAULT_DNSSEC_MODE',
1173 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1174substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1175
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001176want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001177if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001178 have = (conf.get('HAVE_LIBCURL') == 1 and
1179 conf.get('HAVE_ZLIB') == 1 and
1180 conf.get('HAVE_BZIP2') == 1 and
1181 conf.get('HAVE_XZ') == 1 and
1182 conf.get('HAVE_GCRYPT') == 1)
1183 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001184 error('importd support was requested, but dependencies are not available')
1185 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001186else
1187 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001188endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001189conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001190
1191want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001192if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001193 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1194 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001195 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1196 # it's possible to build one without the other. Complain only if
1197 # support was explictly requested. The auxiliary files like sysusers
1198 # config should be installed when any of the programs are built.
1199 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1200 error('remote support was requested, but dependencies are not available')
1201 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001202 have = have_deps[0] or have_deps[1]
1203else
1204 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001205endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001206conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001207
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001208foreach term : ['utmp',
1209 'hibernate',
1210 'environment-d',
1211 'binfmt',
1212 'coredump',
1213 'resolve',
1214 'logind',
1215 'hostnamed',
1216 'localed',
1217 'machined',
1218 'networkd',
1219 'timedated',
1220 'timesyncd',
1221 'myhostname',
1222 'firstboot',
1223 'randomseed',
1224 'backlight',
1225 'vconsole',
1226 'quotacheck',
1227 'sysusers',
1228 'tmpfiles',
1229 'hwdb',
1230 'rfkill',
1231 'ldconfig',
1232 'efi',
1233 'tpm',
1234 'ima',
1235 'smack',
1236 'gshadow',
1237 'idn',
1238 'nss-systemd']
1239 have = get_option(term)
1240 name = 'ENABLE_' + term.underscorify().to_upper()
1241 conf.set10(name, have)
1242 m4_defines += have ? ['-D' + name] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001243endforeach
1244
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001245want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001246install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001247slow_tests = get_option('slow-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001248tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001249fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001250
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001251conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001252
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001253#####################################################################
1254
1255if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001256 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001257
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001258 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001259 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001260 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001261 elif efi_arch == 'x86_64'
1262 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001263 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001264 elif efi_arch == 'arm'
1265 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001266 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001267 elif efi_arch == 'aarch64'
1268 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001269 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001270 else
1271 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001272 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001273 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001274
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001275 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001276 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001277
1278 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001279else
1280 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001281endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001282conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001283
1284#####################################################################
1285
1286config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001287 output : 'config.h',
1288 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001289
1290includes = include_directories('src/basic',
1291 'src/shared',
1292 'src/systemd',
1293 'src/journal',
1294 'src/resolve',
1295 'src/timesync',
1296 'src/login',
1297 'src/udev',
1298 'src/libudev',
1299 'src/core',
1300 'src/libsystemd/sd-bus',
1301 'src/libsystemd/sd-device',
1302 'src/libsystemd/sd-hwdb',
1303 'src/libsystemd/sd-id128',
1304 'src/libsystemd/sd-netlink',
1305 'src/libsystemd/sd-network',
1306 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001307 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001308
1309add_project_arguments('-include', 'config.h', language : 'c')
1310
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001311subdir('po')
1312subdir('catalog')
1313subdir('src/systemd')
1314subdir('src/basic')
1315subdir('src/libsystemd')
1316subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001317subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001318subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001319
1320libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001321 'journal-core',
1322 libjournal_core_sources,
1323 journald_gperf_c,
1324 include_directories : includes,
1325 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001326
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001327libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001328libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001329 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001330 '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 +02001331 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001332 include_directories : includes,
1333 link_args : ['-shared',
1334 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001335 link_with : [libbasic,
1336 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001337 link_whole : [libsystemd_static,
1338 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001339 dependencies : [threads,
1340 librt,
1341 libxz,
1342 liblz4],
1343 link_depends : libsystemd_sym,
1344 install : true,
1345 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001346
1347############################################################
1348
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001349# binaries that have --help and are intended for use by humans,
1350# usually, but not always, installed in /bin.
1351public_programs = []
1352
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001353subdir('src/libudev')
1354subdir('src/shared')
1355subdir('src/core')
1356subdir('src/udev')
1357subdir('src/network')
1358
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001359subdir('src/analyze')
1360subdir('src/journal-remote')
1361subdir('src/coredump')
1362subdir('src/hostname')
1363subdir('src/import')
1364subdir('src/kernel-install')
1365subdir('src/locale')
1366subdir('src/machine')
1367subdir('src/nspawn')
1368subdir('src/resolve')
1369subdir('src/timedate')
1370subdir('src/timesync')
1371subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001372subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001373
1374subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001375subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001376subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001377subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001378
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001379############################################################
1380
1381# only static linking apart from libdl, to make sure that the
1382# module is linked to all libraries that it uses.
1383test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001384 'test-dlopen',
1385 test_dlopen_c,
1386 include_directories : includes,
1387 link_with : [libbasic],
1388 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001389
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001390foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001391 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001392 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001393 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001394
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001395 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001396 if condition
1397 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001398
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001399 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1400 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001401
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001402 nss = shared_library(
1403 'nss_' + module,
1404 'src/nss-@0@/nss-@0@.c'.format(module),
1405 version : '2',
1406 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001407 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1408 link_args : ['-Wl,-z,nodelete',
1409 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001410 '-Wl,--version-script=' + version_script_arg,
1411 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001412 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001413 libbasic],
1414 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001415 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001416 link_depends : sym,
1417 install : true,
1418 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001419
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001420 # We cannot use shared_module because it does not support version suffix.
1421 # Unfortunately shared_library insists on creating the symlink…
1422 meson.add_install_script('sh', '-c',
1423 'rm $DESTDIR@0@/libnss_@1@.so'
1424 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001425
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001426 test('dlopen-nss_' + module,
1427 test_dlopen,
1428 args : [nss.full_path()]) # path to dlopen must include a slash
1429 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001430endforeach
1431
1432############################################################
1433
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001434executable('systemd',
1435 systemd_sources,
1436 include_directories : includes,
1437 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001438 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001439 dependencies : [threads,
1440 librt,
1441 libseccomp,
1442 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001443 libmount,
1444 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001445 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001446 install : true,
1447 install_dir : rootlibexecdir)
1448
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001449exe = executable('systemd-analyze',
1450 systemd_analyze_sources,
1451 include_directories : includes,
1452 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001453 libshared],
1454 dependencies : [threads,
1455 librt,
1456 libseccomp,
1457 libselinux,
1458 libmount,
1459 libblkid],
1460 install_rpath : rootlibexecdir,
1461 install : true)
1462public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001463
1464executable('systemd-journald',
1465 systemd_journald_sources,
1466 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001467 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001468 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001469 dependencies : [threads,
1470 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001471 liblz4,
1472 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001473 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001474 install : true,
1475 install_dir : rootlibexecdir)
1476
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001477exe = executable('systemd-cat',
1478 systemd_cat_sources,
1479 include_directories : includes,
1480 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001481 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001482 dependencies : [threads],
1483 install_rpath : rootlibexecdir,
1484 install : true)
1485public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001486
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001487exe = executable('journalctl',
1488 journalctl_sources,
1489 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001490 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001491 dependencies : [threads,
1492 libqrencode,
1493 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001494 liblz4,
1495 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001496 install_rpath : rootlibexecdir,
1497 install : true,
1498 install_dir : rootbindir)
1499public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001500
1501executable('systemd-getty-generator',
1502 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001503 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001504 link_with : [libshared],
1505 install_rpath : rootlibexecdir,
1506 install : true,
1507 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001508
1509executable('systemd-debug-generator',
1510 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001511 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001512 link_with : [libshared],
1513 install_rpath : rootlibexecdir,
1514 install : true,
1515 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001516
1517executable('systemd-fstab-generator',
1518 'src/fstab-generator/fstab-generator.c',
1519 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001520 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001521 link_with : [libshared],
1522 install_rpath : rootlibexecdir,
1523 install : true,
1524 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001525
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001526if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001527 executable('30-systemd-environment-d-generator',
1528 'src/environment-d-generator/environment-d-generator.c',
1529 include_directories : includes,
1530 link_with : [libshared],
1531 install_rpath : rootlibexecdir,
1532 install : true,
1533 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001534
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001535 meson.add_install_script(meson_make_symlink,
1536 join_paths(sysconfdir, 'environment'),
1537 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001538endif
1539
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001540if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001541 executable('systemd-hibernate-resume-generator',
1542 'src/hibernate-resume/hibernate-resume-generator.c',
1543 include_directories : includes,
1544 link_with : [libshared],
1545 install_rpath : rootlibexecdir,
1546 install : true,
1547 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001548
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001549 executable('systemd-hibernate-resume',
1550 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001551 include_directories : includes,
1552 link_with : [libshared],
1553 install_rpath : rootlibexecdir,
1554 install : true,
1555 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001556endif
1557
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001558if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001559 executable('systemd-gpt-auto-generator',
1560 'src/gpt-auto-generator/gpt-auto-generator.c',
1561 'src/basic/blkid-util.h',
1562 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001563 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001564 dependencies : libblkid,
1565 install_rpath : rootlibexecdir,
1566 install : true,
1567 install_dir : systemgeneratordir)
1568
1569 exe = executable('systemd-dissect',
1570 'src/dissect/dissect.c',
1571 include_directories : includes,
1572 link_with : [libshared],
1573 install_rpath : rootlibexecdir,
1574 install : true,
1575 install_dir : rootlibexecdir)
1576 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001577endif
1578
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001579if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001580 executable('systemd-resolved',
1581 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001582 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001583 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001584 libbasic_gcrypt,
1585 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001586 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001587 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001588 libm,
1589 libidn],
1590 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001591 install : true,
1592 install_dir : rootlibexecdir)
1593
1594 exe = executable('systemd-resolve',
1595 systemd_resolve_sources,
1596 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001597 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001598 libbasic_gcrypt,
1599 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001600 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001601 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001602 libm,
1603 libidn],
1604 install_rpath : rootlibexecdir,
1605 install : true)
1606 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001607endif
1608
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001609if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001610 executable('systemd-logind',
1611 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001612 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001613 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001614 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001615 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001616 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001617 install_rpath : rootlibexecdir,
1618 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001619 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001620
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001621 exe = executable('loginctl',
1622 loginctl_sources,
1623 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001624 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001625 dependencies : [threads,
1626 liblz4,
1627 libxz],
1628 install_rpath : rootlibexecdir,
1629 install : true,
1630 install_dir : rootbindir)
1631 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001632
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001633 exe = executable('systemd-inhibit',
1634 'src/login/inhibit.c',
1635 include_directories : includes,
1636 link_with : [libshared],
1637 install_rpath : rootlibexecdir,
1638 install : true,
1639 install_dir : rootbindir)
1640 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001641
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001642 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001643 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1644 pam_systemd = shared_library(
1645 'pam_systemd',
1646 pam_systemd_c,
1647 name_prefix : '',
1648 include_directories : includes,
1649 link_args : ['-shared',
1650 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001651 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001652 libshared_static],
1653 dependencies : [threads,
1654 libpam,
1655 libpam_misc],
1656 link_depends : pam_systemd_sym,
1657 install : true,
1658 install_dir : pamlibdir)
1659
1660 test('dlopen-pam_systemd',
1661 test_dlopen,
1662 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1663 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001664endif
1665
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001666if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001667 executable('systemd-user-sessions',
1668 'src/user-sessions/user-sessions.c',
1669 include_directories : includes,
1670 link_with : [libshared],
1671 install_rpath : rootlibexecdir,
1672 install : true,
1673 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001674endif
1675
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001676if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001677 exe = executable('bootctl',
1678 'src/boot/bootctl.c',
1679 include_directories : includes,
1680 link_with : [libshared],
1681 dependencies : [libblkid],
1682 install_rpath : rootlibexecdir,
1683 install : true)
1684 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001685endif
1686
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001687exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1688 include_directories : includes,
1689 link_with : [libshared],
1690 dependencies : [threads],
1691 install_rpath : rootlibexecdir,
1692 install : true)
1693public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001694
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001695exe = executable('systemctl', 'src/systemctl/systemctl.c',
1696 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001697 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001698 dependencies : [threads,
1699 libcap,
1700 libselinux,
1701 libxz,
1702 liblz4],
1703 install_rpath : rootlibexecdir,
1704 install : true,
1705 install_dir : rootbindir)
1706public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001707
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001708if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001709 executable('systemd-backlight',
1710 'src/backlight/backlight.c',
1711 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001712 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001713 install_rpath : rootlibexecdir,
1714 install : true,
1715 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001716endif
1717
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001718if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001719 executable('systemd-rfkill',
1720 'src/rfkill/rfkill.c',
1721 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001722 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001723 install_rpath : rootlibexecdir,
1724 install : true,
1725 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001726endif
1727
1728executable('systemd-system-update-generator',
1729 'src/system-update-generator/system-update-generator.c',
1730 include_directories : includes,
1731 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001732 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001733 install : true,
1734 install_dir : systemgeneratordir)
1735
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001736if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001737 executable('systemd-cryptsetup',
1738 'src/cryptsetup/cryptsetup.c',
1739 include_directories : includes,
1740 link_with : [libshared],
1741 dependencies : [libcryptsetup],
1742 install_rpath : rootlibexecdir,
1743 install : true,
1744 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001745
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001746 executable('systemd-cryptsetup-generator',
1747 'src/cryptsetup/cryptsetup-generator.c',
1748 include_directories : includes,
1749 link_with : [libshared],
1750 dependencies : [libcryptsetup],
1751 install_rpath : rootlibexecdir,
1752 install : true,
1753 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001754
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001755 executable('systemd-veritysetup',
1756 'src/veritysetup/veritysetup.c',
1757 include_directories : includes,
1758 link_with : [libshared],
1759 dependencies : [libcryptsetup],
1760 install_rpath : rootlibexecdir,
1761 install : true,
1762 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001763
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001764 executable('systemd-veritysetup-generator',
1765 'src/veritysetup/veritysetup-generator.c',
1766 include_directories : includes,
1767 link_with : [libshared],
1768 dependencies : [libcryptsetup],
1769 install_rpath : rootlibexecdir,
1770 install : true,
1771 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001772endif
1773
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001774if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001775 executable('systemd-sysv-generator',
1776 'src/sysv-generator/sysv-generator.c',
1777 include_directories : includes,
1778 link_with : [libshared],
1779 install_rpath : rootlibexecdir,
1780 install : true,
1781 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001782
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001783 executable('systemd-rc-local-generator',
1784 'src/rc-local-generator/rc-local-generator.c',
1785 include_directories : includes,
1786 link_with : [libshared],
1787 install_rpath : rootlibexecdir,
1788 install : true,
1789 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001790endif
1791
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001792if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001793 executable('systemd-hostnamed',
1794 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001795 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001796 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001797 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001798 install : true,
1799 install_dir : rootlibexecdir)
1800
1801 exe = executable('hostnamectl',
1802 'src/hostname/hostnamectl.c',
1803 include_directories : includes,
1804 link_with : [libshared],
1805 install_rpath : rootlibexecdir,
1806 install : true)
1807 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001808endif
1809
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001810if conf.get('ENABLE_LOCALED') == 1
1811 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001812 # logind will load libxkbcommon.so dynamically on its own
1813 deps = [libdl]
1814 else
1815 deps = []
1816 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001817
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001818 executable('systemd-localed',
1819 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001820 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001821 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001822 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001823 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001824 install : true,
1825 install_dir : rootlibexecdir)
1826
1827 exe = executable('localectl',
1828 localectl_sources,
1829 include_directories : includes,
1830 link_with : [libshared],
1831 install_rpath : rootlibexecdir,
1832 install : true)
1833 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001834endif
1835
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001836if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001837 executable('systemd-timedated',
1838 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001839 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001840 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001841 install_rpath : rootlibexecdir,
1842 install : true,
1843 install_dir : rootlibexecdir)
1844
1845 exe = executable('timedatectl',
1846 'src/timedate/timedatectl.c',
1847 include_directories : includes,
1848 install_rpath : rootlibexecdir,
1849 link_with : [libshared],
1850 install : true)
1851 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001852endif
1853
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001854if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001855 executable('systemd-timesyncd',
1856 systemd_timesyncd_sources,
1857 include_directories : includes,
1858 link_with : [libshared],
1859 dependencies : [threads,
1860 libm],
1861 install_rpath : rootlibexecdir,
1862 install : true,
1863 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001864endif
1865
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001866if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001867 executable('systemd-machined',
1868 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001869 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001870 link_with : [libmachine_core,
1871 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001872 install_rpath : rootlibexecdir,
1873 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001874 install_dir : rootlibexecdir)
1875
1876 exe = executable('machinectl',
1877 'src/machine/machinectl.c',
1878 include_directories : includes,
1879 link_with : [libshared],
1880 dependencies : [threads,
1881 libxz,
1882 liblz4],
1883 install_rpath : rootlibexecdir,
1884 install : true,
1885 install_dir : rootbindir)
1886 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001887endif
1888
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001889if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001890 executable('systemd-importd',
1891 systemd_importd_sources,
1892 include_directories : includes,
1893 link_with : [libshared],
1894 dependencies : [threads],
1895 install_rpath : rootlibexecdir,
1896 install : true,
1897 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001898
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001899 systemd_pull = executable('systemd-pull',
1900 systemd_pull_sources,
1901 include_directories : includes,
1902 link_with : [libshared],
1903 dependencies : [libcurl,
1904 libz,
1905 libbzip2,
1906 libxz,
1907 libgcrypt],
1908 install_rpath : rootlibexecdir,
1909 install : true,
1910 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001911
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001912 systemd_import = executable('systemd-import',
1913 systemd_import_sources,
1914 include_directories : includes,
1915 link_with : [libshared],
1916 dependencies : [libcurl,
1917 libz,
1918 libbzip2,
1919 libxz],
1920 install_rpath : rootlibexecdir,
1921 install : true,
1922 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001923
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001924 systemd_export = executable('systemd-export',
1925 systemd_export_sources,
1926 include_directories : includes,
1927 link_with : [libshared],
1928 dependencies : [libcurl,
1929 libz,
1930 libbzip2,
1931 libxz],
1932 install_rpath : rootlibexecdir,
1933 install : true,
1934 install_dir : rootlibexecdir)
1935 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001936endif
1937
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001938if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001939 exe = executable('systemd-journal-upload',
1940 systemd_journal_upload_sources,
1941 include_directories : includes,
1942 link_with : [libshared],
1943 dependencies : [threads,
1944 libcurl,
1945 libgnutls,
1946 libxz,
1947 liblz4],
1948 install_rpath : rootlibexecdir,
1949 install : true,
1950 install_dir : rootlibexecdir)
1951 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001952endif
1953
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001954if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001955 s_j_remote = executable('systemd-journal-remote',
1956 systemd_journal_remote_sources,
1957 include_directories : includes,
1958 link_with : [libshared],
1959 dependencies : [threads,
1960 libmicrohttpd,
1961 libgnutls,
1962 libxz,
1963 liblz4],
1964 install_rpath : rootlibexecdir,
1965 install : true,
1966 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001967
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001968 s_j_gatewayd = executable('systemd-journal-gatewayd',
1969 systemd_journal_gatewayd_sources,
1970 include_directories : includes,
1971 link_with : [libshared],
1972 dependencies : [threads,
1973 libmicrohttpd,
1974 libgnutls,
1975 libxz,
1976 liblz4],
1977 install_rpath : rootlibexecdir,
1978 install : true,
1979 install_dir : rootlibexecdir)
1980 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001981endif
1982
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001983if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001984 executable('systemd-coredump',
1985 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001986 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001987 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001988 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001989 libacl,
1990 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001991 libxz,
1992 liblz4],
1993 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001994 install : true,
1995 install_dir : rootlibexecdir)
1996
1997 exe = executable('coredumpctl',
1998 coredumpctl_sources,
1999 include_directories : includes,
2000 link_with : [libshared],
2001 dependencies : [threads,
2002 libxz,
2003 liblz4],
2004 install_rpath : rootlibexecdir,
2005 install : true)
2006 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002007endif
2008
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002009if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002010 exe = executable('systemd-binfmt',
2011 'src/binfmt/binfmt.c',
2012 include_directories : includes,
2013 link_with : [libshared],
2014 install_rpath : rootlibexecdir,
2015 install : true,
2016 install_dir : rootlibexecdir)
2017 public_programs += [exe]
2018
2019 meson.add_install_script('sh', '-c',
2020 mkdir_p.format(binfmtdir))
2021 meson.add_install_script('sh', '-c',
2022 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2023endif
2024
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002025if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002026 executable('systemd-vconsole-setup',
2027 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002028 include_directories : includes,
2029 link_with : [libshared],
2030 install_rpath : rootlibexecdir,
2031 install : true,
2032 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002033endif
2034
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002035if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002036 executable('systemd-random-seed',
2037 'src/random-seed/random-seed.c',
2038 include_directories : includes,
2039 link_with : [libshared],
2040 install_rpath : rootlibexecdir,
2041 install : true,
2042 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002043endif
2044
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002045if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002046 executable('systemd-firstboot',
2047 'src/firstboot/firstboot.c',
2048 include_directories : includes,
2049 link_with : [libshared],
2050 dependencies : [libcrypt],
2051 install_rpath : rootlibexecdir,
2052 install : true,
2053 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002054endif
2055
2056executable('systemd-remount-fs',
2057 'src/remount-fs/remount-fs.c',
2058 'src/core/mount-setup.c',
2059 'src/core/mount-setup.h',
2060 include_directories : includes,
2061 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002062 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002063 install : true,
2064 install_dir : rootlibexecdir)
2065
2066executable('systemd-machine-id-setup',
2067 'src/machine-id-setup/machine-id-setup-main.c',
2068 'src/core/machine-id-setup.c',
2069 'src/core/machine-id-setup.h',
2070 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002071 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002072 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002073 install : true,
2074 install_dir : rootbindir)
2075
2076executable('systemd-fsck',
2077 'src/fsck/fsck.c',
2078 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002079 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002080 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002081 install : true,
2082 install_dir : rootlibexecdir)
2083
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002084executable('systemd-growfs',
2085 'src/partition/growfs.c',
2086 include_directories : includes,
2087 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002088 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002089 install_rpath : rootlibexecdir,
2090 install : true,
2091 install_dir : rootlibexecdir)
2092
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002093executable('systemd-makefs',
2094 'src/partition/makefs.c',
2095 include_directories : includes,
2096 link_with : [libshared],
2097 install_rpath : rootlibexecdir,
2098 install : true,
2099 install_dir : rootlibexecdir)
2100
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002101executable('systemd-sleep',
2102 'src/sleep/sleep.c',
2103 include_directories : includes,
2104 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002105 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002106 install : true,
2107 install_dir : rootlibexecdir)
2108
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002109exe = executable('systemd-sysctl',
2110 'src/sysctl/sysctl.c',
2111 include_directories : includes,
2112 link_with : [libshared],
2113 install_rpath : rootlibexecdir,
2114 install : true,
2115 install_dir : rootlibexecdir)
2116public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002117
2118executable('systemd-ac-power',
2119 'src/ac-power/ac-power.c',
2120 include_directories : includes,
2121 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002122 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002123 install : true,
2124 install_dir : rootlibexecdir)
2125
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002126exe = executable('systemd-detect-virt',
2127 'src/detect-virt/detect-virt.c',
2128 include_directories : includes,
2129 link_with : [libshared],
2130 install_rpath : rootlibexecdir,
2131 install : true)
2132public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002133
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002134exe = executable('systemd-delta',
2135 'src/delta/delta.c',
2136 include_directories : includes,
2137 link_with : [libshared],
2138 install_rpath : rootlibexecdir,
2139 install : true)
2140public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002141
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002142exe = executable('systemd-escape',
2143 'src/escape/escape.c',
2144 include_directories : includes,
2145 link_with : [libshared],
2146 install_rpath : rootlibexecdir,
2147 install : true,
2148 install_dir : rootbindir)
2149public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002150
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002151exe = executable('systemd-notify',
2152 'src/notify/notify.c',
2153 include_directories : includes,
2154 link_with : [libshared],
2155 install_rpath : rootlibexecdir,
2156 install : true,
2157 install_dir : rootbindir)
2158public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002159
2160executable('systemd-volatile-root',
2161 'src/volatile-root/volatile-root.c',
2162 include_directories : includes,
2163 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002164 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002165 install : true,
2166 install_dir : rootlibexecdir)
2167
2168executable('systemd-cgroups-agent',
2169 'src/cgroups-agent/cgroups-agent.c',
2170 include_directories : includes,
2171 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002172 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002173 install : true,
2174 install_dir : rootlibexecdir)
2175
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002176exe = executable('systemd-path',
2177 'src/path/path.c',
2178 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002179 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002180 install_rpath : rootlibexecdir,
2181 install : true)
2182public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002183
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002184exe = executable('systemd-ask-password',
2185 'src/ask-password/ask-password.c',
2186 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002187 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002188 install_rpath : rootlibexecdir,
2189 install : true,
2190 install_dir : rootbindir)
2191public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002192
2193executable('systemd-reply-password',
2194 'src/reply-password/reply-password.c',
2195 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002196 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002197 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002198 install : true,
2199 install_dir : rootlibexecdir)
2200
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002201exe = executable('systemd-tty-ask-password-agent',
2202 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2203 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002204 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002205 install_rpath : rootlibexecdir,
2206 install : true,
2207 install_dir : rootbindir)
2208public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002209
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002210exe = executable('systemd-cgls',
2211 'src/cgls/cgls.c',
2212 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002213 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002214 install_rpath : rootlibexecdir,
2215 install : true)
2216public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002217
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002218exe = executable('systemd-cgtop',
2219 'src/cgtop/cgtop.c',
2220 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002221 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002222 install_rpath : rootlibexecdir,
2223 install : true)
2224public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002225
2226executable('systemd-initctl',
2227 'src/initctl/initctl.c',
2228 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002229 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002230 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002231 install : true,
2232 install_dir : rootlibexecdir)
2233
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002234exe = executable('systemd-mount',
2235 'src/mount/mount-tool.c',
2236 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002237 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002238 install_rpath : rootlibexecdir,
2239 install : true)
2240public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002241
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002242meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002243 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002244
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002245exe = executable('systemd-run',
2246 'src/run/run.c',
2247 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002248 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002249 install_rpath : rootlibexecdir,
2250 install : true)
2251public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002252
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002253exe = executable('systemd-stdio-bridge',
2254 'src/stdio-bridge/stdio-bridge.c',
2255 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002256 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002257 install_rpath : rootlibexecdir,
2258 install : true)
2259public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002260
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002261exe = executable('busctl',
2262 'src/busctl/busctl.c',
2263 'src/busctl/busctl-introspect.c',
2264 'src/busctl/busctl-introspect.h',
2265 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002266 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002267 install_rpath : rootlibexecdir,
2268 install : true)
2269public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002270
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002271if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002272 exe = executable('systemd-sysusers',
2273 'src/sysusers/sysusers.c',
2274 include_directories : includes,
2275 link_with : [libshared],
2276 install_rpath : rootlibexecdir,
2277 install : true,
2278 install_dir : rootbindir)
2279 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002280endif
2281
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002282if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002283 exe = executable('systemd-tmpfiles',
2284 'src/tmpfiles/tmpfiles.c',
2285 include_directories : includes,
2286 link_with : [libshared],
2287 dependencies : [libacl],
2288 install_rpath : rootlibexecdir,
2289 install : true,
2290 install_dir : rootbindir)
2291 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002292
2293 test('test-systemd-tmpfiles',
2294 test_systemd_tmpfiles_py,
2295 args : exe.full_path())
2296 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002297endif
2298
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002299if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002300 exe = executable('systemd-hwdb',
2301 'src/hwdb/hwdb.c',
2302 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2303 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002304 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002305 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002306 install : true,
2307 install_dir : rootbindir)
2308 public_programs += [exe]
2309endif
2310
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002311if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002312 executable('systemd-quotacheck',
2313 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002314 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002315 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002316 install_rpath : rootlibexecdir,
2317 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002318 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002319endif
2320
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002321exe = executable('systemd-socket-proxyd',
2322 'src/socket-proxy/socket-proxyd.c',
2323 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002324 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002325 dependencies : [threads],
2326 install_rpath : rootlibexecdir,
2327 install : true,
2328 install_dir : rootlibexecdir)
2329public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002330
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002331exe = executable('systemd-udevd',
2332 systemd_udevd_sources,
2333 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002334 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002335 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002336 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002337 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002338 dependencies : [threads,
2339 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002340 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002341 libacl,
2342 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002343 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002344 install : true,
2345 install_dir : rootlibexecdir)
2346public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002347
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002348exe = executable('udevadm',
2349 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002350 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002351 include_directories : includes,
2352 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002353 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002354 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002355 dependencies : [threads,
2356 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002357 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002358 libacl,
2359 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002360 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002361 install : true,
2362 install_dir : rootbindir)
2363public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002364
2365executable('systemd-shutdown',
2366 systemd_shutdown_sources,
2367 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002368 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002369 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002370 install : true,
2371 install_dir : rootlibexecdir)
2372
2373executable('systemd-update-done',
2374 'src/update-done/update-done.c',
2375 include_directories : includes,
2376 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002377 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002378 install : true,
2379 install_dir : rootlibexecdir)
2380
2381executable('systemd-update-utmp',
2382 'src/update-utmp/update-utmp.c',
2383 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002384 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002385 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002386 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002387 install : true,
2388 install_dir : rootlibexecdir)
2389
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002390if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002391 executable('systemd-modules-load',
2392 'src/modules-load/modules-load.c',
2393 include_directories : includes,
2394 link_with : [libshared],
2395 dependencies : [libkmod],
2396 install_rpath : rootlibexecdir,
2397 install : true,
2398 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002399
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002400 meson.add_install_script('sh', '-c',
2401 mkdir_p.format(modulesloaddir))
2402 meson.add_install_script('sh', '-c',
2403 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002404endif
2405
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002406exe = executable('systemd-nspawn',
2407 systemd_nspawn_sources,
2408 'src/core/mount-setup.c', # FIXME: use a variable?
2409 'src/core/mount-setup.h',
2410 'src/core/loopback-setup.c',
2411 'src/core/loopback-setup.h',
2412 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002413 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002414 dependencies : [libacl,
2415 libblkid,
2416 libseccomp,
2417 libselinux],
2418 install_rpath : rootlibexecdir,
2419 install : true)
2420public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002421
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002422if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002423 executable('systemd-networkd',
2424 systemd_networkd_sources,
2425 include_directories : includes,
2426 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002427 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002428 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002429 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002430 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002431 install_rpath : rootlibexecdir,
2432 install : true,
2433 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002434
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002435 executable('systemd-networkd-wait-online',
2436 systemd_networkd_wait_online_sources,
2437 include_directories : includes,
2438 link_with : [libnetworkd_core,
2439 libshared],
2440 install_rpath : rootlibexecdir,
2441 install : true,
2442 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002443
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002444 exe = executable('networkctl',
2445 networkctl_sources,
2446 include_directories : includes,
2447 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002448 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002449 install_rpath : rootlibexecdir,
2450 install : true,
2451 install_dir : rootbindir)
2452 public_programs += [exe]
2453endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002454
2455executable('systemd-sulogin-shell',
2456 ['src/sulogin-shell/sulogin-shell.c'],
2457 include_directories : includes,
2458 link_with : [libshared],
2459 install_rpath : rootlibexecdir,
2460 install : true,
2461 install_dir : rootlibexecdir)
2462
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002463############################################################
2464
2465foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002466 sources = tuple[0]
2467 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2468 dependencies = tuple[2]
2469 condition = tuple.length() >= 4 ? tuple[3] : ''
2470 type = tuple.length() >= 5 ? tuple[4] : ''
2471 defs = tuple.length() >= 6 ? tuple[5] : []
2472 incs = tuple.length() >= 7 ? tuple[6] : includes
2473 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002474
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002475 name = sources[0].split('/')[-1].split('.')[0]
2476 if type.startswith('timeout=')
2477 timeout = type.split('=')[1].to_int()
2478 type = ''
2479 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002480 if want_tests == 'false'
2481 message('Not compiling @0@ because tests is set to false'.format(name))
2482 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002483 exe = executable(
2484 name,
2485 sources,
2486 include_directories : incs,
2487 link_with : link_with,
2488 dependencies : dependencies,
2489 c_args : defs,
2490 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002491 install : install_tests,
2492 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002493
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002494 if type == 'manual'
2495 message('@0@ is a manual test'.format(name))
2496 elif type == 'unsafe' and want_tests != 'unsafe'
2497 message('@0@ is an unsafe test'.format(name))
2498 else
2499 test(name, exe,
2500 env : test_env,
2501 timeout : timeout)
2502 endif
2503 else
2504 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2505 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002506endforeach
2507
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002508test_libsystemd_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002509 'test-libsystemd-sym',
2510 test_libsystemd_sym_c,
2511 include_directories : includes,
2512 link_with : [libsystemd],
2513 install : install_tests,
2514 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002515test('test-libsystemd-sym',
2516 test_libsystemd_sym)
2517
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002518test_libudev_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002519 'test-libudev-sym',
2520 test_libudev_sym_c,
2521 include_directories : includes,
2522 c_args : ['-Wno-deprecated-declarations'],
2523 link_with : [libudev],
2524 install : install_tests,
2525 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002526test('test-libudev-sym',
2527 test_libudev_sym)
2528
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002529############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002530
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002531fuzzer_exes = []
2532
2533foreach tuple : fuzzers
2534 sources = tuple[0]
2535 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2536 dependencies = tuple[2]
2537 defs = tuple.length() >= 4 ? tuple[3] : []
2538 incs = tuple.length() >= 5 ? tuple[4] : includes
2539
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002540 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002541 dependencies += fuzzing_engine
2542 else
2543 sources += 'src/fuzz/fuzz-main.c'
2544 endif
2545
2546 name = sources[0].split('/')[-1].split('.')[0]
2547
2548 fuzzer_exes += executable(
2549 name,
2550 sources,
2551 include_directories : [incs, include_directories('src/fuzz')],
2552 link_with : link_with,
2553 dependencies : dependencies,
2554 c_args : defs,
2555 install : false)
2556endforeach
2557
2558run_target('fuzzers',
2559 depends : fuzzer_exes,
2560 command : ['true'])
2561
2562############################################################
2563
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002564make_directive_index_py = find_program('tools/make-directive-index.py')
2565make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002566xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002567hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002568
2569subdir('units')
2570subdir('sysctl.d')
2571subdir('sysusers.d')
2572subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002573subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002574subdir('hwdb')
2575subdir('network')
2576subdir('man')
2577subdir('shell-completion/bash')
2578subdir('shell-completion/zsh')
2579subdir('docs/sysvinit')
2580subdir('docs/var-log')
2581
2582# FIXME: figure out if the warning is true:
2583# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2584install_subdir('factory/etc',
2585 install_dir : factorydir)
2586
2587
2588install_data('xorg/50-systemd-user.sh',
2589 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002590install_data('modprobe.d/systemd.conf',
2591 install_dir : modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002592install_data('README',
2593 'NEWS',
2594 'CODING_STYLE',
2595 'DISTRO_PORTING',
2596 'ENVIRONMENT.md',
2597 'LICENSE.GPL2',
2598 'LICENSE.LGPL2.1',
Felipe Satelerf9f54412017-12-18 10:58:13 -03002599 'TRANSIENT-SETTINGS.md',
2600 'UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002601 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2602 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002603
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002604meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2605meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2606
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002607############################################################
2608
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002609meson_check_help = find_program('tools/meson-check-help.sh')
2610
2611foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002612 name = exec.full_path().split('/')[-1]
2613 test('check-help-' + name,
2614 meson_check_help,
2615 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002616endforeach
2617
2618############################################################
2619
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002620prev = ''
2621foreach p : fuzz_regression_tests
2622 a = p.split('/')[-3]
2623 b = p.split('/')[-2]
2624 c = p.split('/')[-1]
2625
2626 if a == 'address'
2627 build = sanitize_address
2628 else
2629 error('unknown sanitizer @0@'.format(a))
2630 endif
2631
2632 name = '@1@:@0@'.format(a, b)
2633
2634 if name != prev
2635 if want_tests == 'false'
2636 message('Not compiling @0@ because tests is set to false'.format(name))
2637 elif not sanitizers.contains(a)
2638 message('Not compiling @0@ because @1@ sanitizer is not available'.format(name, a))
2639 elif slow_tests
2640 exe = custom_target(
2641 name,
2642 output : name,
2643 depends : build,
2644 command : [env, 'ln', '-fs',
2645 join_paths(build.full_path(), b),
2646 '@OUTPUT@'],
2647 build_by_default : true)
2648 else
2649 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2650 endif
2651 endif
2652 prev = name
2653
2654 if want_tests != 'false' and slow_tests
2655 test(c, env, args : [exe.full_path(),
2656 join_paths(meson.source_root(),
2657 'test/fuzz-regressions',
2658 p)])
2659 endif
2660endforeach
2661
2662############################################################
2663
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002664if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002665 all_files = run_command(
2666 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002667 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002668 'ls-files',
2669 ':/*.[ch]'])
2670 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002671
userwithuide85a6902017-08-09 13:41:44 +00002672 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002673 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002674 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002675 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002676 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002677 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002678 output : 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002679 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002680endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002681
2682if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002683 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002684 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002685 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002686 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002687endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002688
2689if git.found()
2690 git_head = run_command(
2691 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002692 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002693 'rev-parse', 'HEAD']).stdout().strip()
2694 git_head_short = run_command(
2695 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002696 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002697 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2698
2699 run_target(
2700 'git-snapshot',
2701 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002702 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002703 git_head_short),
2704 '--prefix', 'systemd-@0@/'.format(git_head),
2705 'HEAD'])
2706endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002707
2708############################################################
2709
Lennart Poettering51b13862017-12-20 12:51:14 +01002710meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2711run_target(
2712 'check-api-docs',
2713 depends : [man, libsystemd, libudev],
2714 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2715
2716############################################################
2717
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002718status = [
2719 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2720
Yu Watanabe359b4962017-11-25 20:35:24 +09002721 'prefix directory: @0@'.format(prefixdir),
2722 'rootprefix directory: @0@'.format(rootprefixdir),
2723 'sysconf directory: @0@'.format(sysconfdir),
2724 'include directory: @0@'.format(includedir),
2725 'lib directory: @0@'.format(libdir),
2726 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002727 'SysV init scripts: @0@'.format(sysvinit_path),
2728 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002729 'PAM modules directory: @0@'.format(pamlibdir),
2730 'PAM configuration directory: @0@'.format(pamconfdir),
2731 'RPM macros directory: @0@'.format(rpmmacrosdir),
2732 'modprobe.d directory: @0@'.format(modprobedir),
2733 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2734 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2735 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2736 'bash completions directory: @0@'.format(bashcompletiondir),
2737 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002738 'extra start script: @0@'.format(get_option('rc-local')),
2739 'extra stop script: @0@'.format(get_option('halt-local')),
2740 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2741 get_option('debug-tty')),
2742 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002743 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002744 'maximum system UID: @0@'.format(system_uid_max),
2745 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002746 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2747 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2748 'minimum container UID base: @0@'.format(container_uid_base_min),
2749 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002750 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002751 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002752 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002753 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002754 'nobody user name: @0@'.format(nobody_user),
2755 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002756 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002757 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002758
2759 'default DNSSEC mode: @0@'.format(default_dnssec),
2760 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2761 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2762
2763alt_dns_servers = '\n '.join(dns_servers.split(' '))
2764alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2765status += [
2766 'default DNS servers: @0@'.format(alt_dns_servers),
2767 'default NTP servers: @0@'.format(alt_ntp_servers)]
2768
2769alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2770 '@@0@'.format(time_epoch)).stdout().strip()
2771status += [
2772 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2773
2774# TODO:
2775# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2776# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2777# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2778
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002779if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002780 status += [
2781 'efi arch: @0@'.format(efi_arch)]
2782
2783 if have_gnu_efi
2784 status += [
2785 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2786 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002787 'EFI lib directory: @0@'.format(efi_libdir),
2788 'EFI lds directory: @0@'.format(efi_ldsdir),
2789 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002790 endif
2791endif
2792
2793found = []
2794missing = []
2795
2796foreach tuple : [
2797 ['libcryptsetup'],
2798 ['PAM'],
2799 ['AUDIT'],
2800 ['IMA'],
2801 ['AppArmor'],
2802 ['SELinux'],
2803 ['SECCOMP'],
2804 ['SMACK'],
2805 ['zlib'],
2806 ['xz'],
2807 ['lz4'],
2808 ['bzip2'],
2809 ['ACL'],
2810 ['gcrypt'],
2811 ['qrencode'],
2812 ['microhttpd'],
2813 ['gnutls'],
2814 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002815 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002816 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002817 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002818 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002819 ['libiptc'],
2820 ['elfutils'],
2821 ['binfmt'],
2822 ['vconsole'],
2823 ['quotacheck'],
2824 ['tmpfiles'],
2825 ['environment.d'],
2826 ['sysusers'],
2827 ['firstboot'],
2828 ['randomseed'],
2829 ['backlight'],
2830 ['rfkill'],
2831 ['logind'],
2832 ['machined'],
2833 ['importd'],
2834 ['hostnamed'],
2835 ['timedated'],
2836 ['timesyncd'],
2837 ['localed'],
2838 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002839 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002840 ['coredump'],
2841 ['polkit'],
2842 ['legacy pkla', install_polkit_pkla],
2843 ['efi'],
2844 ['gnu-efi', have_gnu_efi],
2845 ['kmod'],
2846 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01002847 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002848 ['blkid'],
2849 ['dbus'],
2850 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002851 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002852 ['hwdb'],
2853 ['tpm'],
2854 ['man pages', want_man],
2855 ['html pages', want_html],
2856 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002857 ['split /usr', conf.get('HAVE_SPLIT_USR') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002858 ['SysV compat'],
2859 ['utmp'],
2860 ['ldconfig'],
2861 ['hibernate'],
2862 ['adm group', get_option('adm-group')],
2863 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002864 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002865 ['debug hashmap'],
2866 ['debug mmap cache'],
2867]
2868
2869 cond = tuple.get(1, '')
2870 if cond == ''
2871 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2872 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002873 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002874 endif
2875 if cond
2876 found += [tuple[0]]
2877 else
2878 missing += [tuple[0]]
2879 endif
2880endforeach
2881
2882status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002883 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002884 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002885 '',
2886 'disabled features: @0@'.format(', '.join(missing)),
2887 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002888message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002889
2890if rootprefixdir != rootprefix_default
2891 message('WARNING:\n' +
2892 ' Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2893 ' systemd used fixed names for unit file directories and other paths, so anything\n' +
2894 ' except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
2895endif