blob: 45e5cdb8ff9477d49e63493908fa1a3d57b6c96e [file] [log] [blame]
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01001# SPDX-License-Identifier: LGPL-2.1+
2#
3# Copyright 2017 Zbigniew Jędrzejewski-Szmek
4#
5# systemd is free software; you can redistribute it and/or modify it
6# under the terms of the GNU Lesser General Public License as published by
7# the Free Software Foundation; either version 2.1 of the License, or
8# (at your option) any later version.
9#
10# systemd is distributed in the hope that it will be useful, but
11# WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13# Lesser General Public License for more details.
14#
15# You should have received a copy of the GNU Lesser General Public License
16# along with systemd; If not, see <http://www.gnu.org/licenses/>.
17
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040018project('systemd', 'c',
Lennart Poettering69cd51d2018-01-25 14:18:14 +010019 version : '237',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040020 license : 'LGPLv2+',
21 default_options: [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040022 'c_std=gnu99',
23 'prefix=/usr',
24 'sysconfdir=/etc',
25 'localstatedir=/var',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040026 ],
Zbigniew Jędrzejewski-Szmek86ea8d72017-11-20 08:08:43 +010027 meson_version : '>= 0.41',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040028 )
29
Lennart Poettering69cd51d2018-01-25 14:18:14 +010030libsystemd_version = '0.21.0'
31libudev_version = '1.6.9'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020032
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040033# We need the same data in three different formats, ugh!
34# Also, for hysterical reasons, we use different variable
35# names, sometimes. Not all variables are included in every
36# set. Ugh, ugh, ugh!
37conf = configuration_data()
38conf.set_quoted('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version())
39conf.set_quoted('PACKAGE_VERSION', meson.project_version())
40
41substs = configuration_data()
42substs.set('PACKAGE_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
43substs.set('PACKAGE_VERSION', meson.project_version())
44
45m4_defines = []
46
47#####################################################################
48
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040049# Try to install the git pre-commit hook
50git_hook = run_command(join_paths(meson.source_root(), 'tools/add-git-hook.sh'))
51if git_hook.returncode() == 0
52 message(git_hook.stdout().strip())
53endif
54
55#####################################################################
56
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010057split_usr = get_option('split-usr')
58conf.set10('HAVE_SPLIT_USR', split_usr)
59
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010060rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010061# Unusual rootprefixdir values are used by some distros
62# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010063rootprefix_default = get_option('split-usr') ? '/' : '/usr'
64if rootprefixdir == ''
65 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010066endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040067
68sysvinit_path = get_option('sysvinit-path')
69sysvrcnd_path = get_option('sysvrcnd-path')
Max Harmathy54248242017-12-15 16:05:25 +010070have = sysvinit_path != '' and sysvrcnd_path != ''
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020071conf.set10('HAVE_SYSV_COMPAT', have,
72 description : 'SysV init scripts and rcN.d links are supported')
73m4_defines += have ? ['-DHAVE_SYSV_COMPAT'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040074
75# join_paths ignore the preceding arguments if an absolute component is
76# encountered, so this should canonicalize various paths when they are
77# absolute or relative.
78prefixdir = get_option('prefix')
79if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040080 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040081endif
82bindir = join_paths(prefixdir, get_option('bindir'))
83libdir = join_paths(prefixdir, get_option('libdir'))
84sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
85includedir = join_paths(prefixdir, get_option('includedir'))
86datadir = join_paths(prefixdir, get_option('datadir'))
87localstatedir = join_paths('/', get_option('localstatedir'))
88
89rootbindir = join_paths(rootprefixdir, 'bin')
90rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
91
92rootlibdir = get_option('rootlibdir')
93if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040094 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040095endif
96
97# Dirs of external packages
Michael Bieble17e5ba2017-04-13 10:30:56 -040098pkgconfigdatadir = join_paths(datadir, 'pkgconfig')
99pkgconfiglibdir = join_paths(libdir, 'pkgconfig')
100polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
101polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
102polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
103varlogdir = join_paths(localstatedir, 'log')
104xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900105rpmmacrosdir = get_option('rpmmacrosdir')
106if rpmmacrosdir != 'no'
107 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
108endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200109modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400110
111# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400112pkgdatadir = join_paths(datadir, 'systemd')
113environmentdir = join_paths(prefixdir, 'lib/environment.d')
114pkgsysconfdir = join_paths(sysconfdir, 'systemd')
115userunitdir = join_paths(prefixdir, 'lib/systemd/user')
116userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
117tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
118sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
119sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
120binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
121modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
122networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
123pkgincludedir = join_paths(includedir, 'systemd')
124systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
125usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
126systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
127userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
128systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
129systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
130systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
131systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
132udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
133udevhomedir = udevlibexecdir
134udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
135udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
136catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
137kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
138factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400139bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
140testsdir = join_paths(prefixdir, 'lib/systemd/tests')
141systemdstatedir = join_paths(localstatedir, 'lib/systemd')
142catalogstatedir = join_paths(systemdstatedir, 'catalog')
143randomseeddir = join_paths(localstatedir, 'lib/systemd')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400144
tblume75aaade2018-02-01 22:46:15 +0100145docdir = get_option('docdir')
146if docdir == ''
147 docdir = join_paths(datadir, 'doc/systemd')
148endif
149
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400150dbuspolicydir = get_option('dbuspolicydir')
151if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400152 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400153endif
154
155dbussessionservicedir = get_option('dbussessionservicedir')
156if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400157 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400158endif
159
160dbussystemservicedir = get_option('dbussystemservicedir')
161if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400162 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400163endif
164
165pamlibdir = get_option('pamlibdir')
166if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400167 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400168endif
169
170pamconfdir = get_option('pamconfdir')
171if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400172 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400173endif
174
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100175memory_accounting_default = get_option('memory-accounting-default')
176
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400177conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400178conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400179conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
180conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
181conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400182conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
183conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400184conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400185conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
186conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400187conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
188conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
189conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
190conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100191conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100192conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400193conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
194conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
195conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
196conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
197conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100198conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400199conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400200conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
201conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400202conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
203conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
204conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
205conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
206conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
207conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400208conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
209conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400210conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400211conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400212conf.set_quoted('LIBDIR', libdir)
213conf.set_quoted('ROOTLIBDIR', rootlibdir)
214conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
215conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400216conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
217conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
218conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
219conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
220conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
221conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100222conf.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'true' : 'false')
223conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_ON_OFF', memory_accounting_default ? 'on' : 'off')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400224
225conf.set_quoted('ABS_BUILD_DIR', meson.build_root())
226conf.set_quoted('ABS_SRC_DIR', meson.source_root())
227
228substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400229substs.set('exec_prefix', prefixdir)
230substs.set('libdir', libdir)
231substs.set('rootlibdir', rootlibdir)
232substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400233substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400234substs.set('bindir', bindir)
235substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400236substs.set('rootlibexecdir', rootlibexecdir)
237substs.set('systemunitdir', systemunitdir)
238substs.set('userunitdir', userunitdir)
239substs.set('systempresetdir', systempresetdir)
240substs.set('userpresetdir', userpresetdir)
241substs.set('udevhwdbdir', udevhwdbdir)
242substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400243substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400244substs.set('catalogdir', catalogdir)
245substs.set('tmpfilesdir', tmpfilesdir)
246substs.set('sysusersdir', sysusersdir)
247substs.set('sysctldir', sysctldir)
248substs.set('binfmtdir', binfmtdir)
249substs.set('modulesloaddir', modulesloaddir)
250substs.set('systemgeneratordir', systemgeneratordir)
251substs.set('usergeneratordir', usergeneratordir)
252substs.set('systemenvgeneratordir', systemenvgeneratordir)
253substs.set('userenvgeneratordir', userenvgeneratordir)
254substs.set('systemshutdowndir', systemshutdowndir)
255substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400256substs.set('VARLOGDIR', varlogdir)
257substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400258substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
259substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400260substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
261substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
262substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
263substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100264substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400265
266#####################################################################
267
268cc = meson.get_compiler('c')
269pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400270check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100271meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400272
Adam Duskett08318a22018-01-15 06:25:46 -0500273if get_option('tests') != 'false'
274 cxx = find_program('c++', required : false)
275 if cxx.found()
276 # Used only for tests
277 add_languages('cpp')
278 endif
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400279endif
280
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500281want_ossfuzz = get_option('oss-fuzz')
282want_libfuzzer = get_option('llvm-fuzz')
283fuzzer_build = want_ossfuzz or want_libfuzzer
284if want_ossfuzz and want_libfuzzer
285 error('only one of oss-fuzz and llvm-fuzz can be specified')
286endif
287if want_libfuzzer
288 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
289endif
290if want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500291 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
292endif
293
Zbigniew Jędrzejewski-Szmek75cf1d62017-07-04 17:59:15 -0400294foreach arg : ['-Wextra',
Zbigniew Jędrzejewski-Szmek70160ce2017-10-03 12:11:49 +0200295 '-Werror=undef',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400296 '-Wlogical-op',
297 '-Wmissing-include-dirs',
298 '-Wold-style-definition',
299 '-Wpointer-arith',
300 '-Winit-self',
301 '-Wdeclaration-after-statement',
302 '-Wfloat-equal',
303 '-Wsuggest-attribute=noreturn',
304 '-Werror=missing-prototypes',
305 '-Werror=implicit-function-declaration',
306 '-Werror=missing-declarations',
307 '-Werror=return-type',
308 '-Werror=incompatible-pointer-types',
309 '-Werror=format=2',
310 '-Wstrict-prototypes',
311 '-Wredundant-decls',
312 '-Wmissing-noreturn',
Zbigniew Jędrzejewski-Szmek97279d82017-11-20 14:23:40 +0100313 '-Wimplicit-fallthrough=5',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400314 '-Wshadow',
315 '-Wendif-labels',
316 '-Wstrict-aliasing=2',
317 '-Wwrite-strings',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400318 '-Werror=overflow',
319 '-Wdate-time',
320 '-Wnested-externs',
321 '-ffast-math',
322 '-fno-common',
323 '-fdiagnostics-show-option',
324 '-fno-strict-aliasing',
325 '-fvisibility=hidden',
326 '-fstack-protector',
327 '-fstack-protector-strong',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400328 '--param=ssp-buffer-size=4',
329 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400330 if cc.has_argument(arg)
331 add_project_arguments(arg, language : 'c')
332 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400333endforeach
334
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500335# the oss-fuzz fuzzers are not built with -fPIE, so don't
336# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500337if not fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500338 if cc.has_argument('-fPIE')
339 add_project_arguments('-fPIE', language : 'c')
340 endif
341endif
342
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400343# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
344# arguments, just emits a warnings. So test for the "positive" version instead.
345foreach arg : ['unused-parameter',
346 'missing-field-initializers',
347 'unused-result',
Zbigniew Jędrzejewski-Szmekfb1b5882017-09-04 19:49:12 +0300348 'format-signedness',
349 'error=nonnull', # work-around for gcc 7.1 turning this on on its own
350 ]
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400351 if cc.has_argument('-W' + arg)
352 add_project_arguments('-Wno-' + arg, language : 'c')
353 endif
354endforeach
355
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800356if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400357 #include <time.h>
358 #include <inttypes.h>
359 typedef uint64_t usec_t;
360 usec_t now(clockid_t clock);
361 int main(void) {
362 struct timespec now;
363 return 0;
364 }
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800365''', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400366 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400367endif
368
369if cc.get_id() == 'clang'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400370 foreach arg : ['-Wno-typedef-redefinition',
371 '-Wno-gnu-variable-sized-type-not-at-end',
372 ]
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400373 if cc.has_argument(arg,
374 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400375 add_project_arguments(arg, language : 'c')
376 endif
377 endforeach
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400378endif
379
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400380link_test_c = files('tools/meson-link-test.c')
381
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400382# --as-needed and --no-undefined are provided by meson by default,
383# run mesonconf to see what is enabled
384foreach arg : ['-Wl,-z,relro',
385 '-Wl,-z,now',
386 '-pie',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400387 ]
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400388
389 have = run_command(check_compilation_sh,
390 cc.cmd_array(), '-x', 'c', arg,
391 '-include', link_test_c).returncode() == 0
392 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500393 if have and (arg != '-pie' or not fuzzer_build)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400394 add_project_link_arguments(arg, language : 'c')
395 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400396endforeach
397
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100398# Check if various sanitizers are supported
399sanitizers = []
400foreach arg : ['address']
401
402 have = run_command(check_compilation_sh,
403 cc.cmd_array(), '-x', 'c',
404 '-fsanitize=@0@'.format(arg),
405 '-include', link_test_c).returncode() == 0
406 message('@0@ sanitizer supported: @1@'.format(arg, have ? 'yes' : 'no'))
407 if have
408 sanitizers += arg
409 endif
410endforeach
411
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400412if get_option('buildtype') != 'debug'
413 foreach arg : ['-ffunction-sections',
414 '-fdata-sections']
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400415 if cc.has_argument(arg,
416 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400417 add_project_arguments(arg, language : 'c')
418 endif
419 endforeach
420
421 foreach arg : ['-Wl,--gc-sections']
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400422 have = run_command(check_compilation_sh,
423 cc.cmd_array(), '-x', 'c', arg,
424 '-include', link_test_c).returncode() == 0
425 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
426 if have
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400427 add_project_link_arguments(arg, language : 'c')
428 endif
429 endforeach
430endif
431
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400432cpp = ' '.join(cc.cmd_array()) + ' -E'
433
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400434#####################################################################
435# compilation result tests
436
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400437conf.set('_GNU_SOURCE', true)
438conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400439
440conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
441conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
442conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
443conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
444conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
445conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
446conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
447
448decl_headers = '''
449#include <uchar.h>
450#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000451#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100452#include <linux/stat.h>
453#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400454'''
455# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
456
457foreach decl : ['char16_t',
458 'char32_t',
459 'key_serial_t',
460 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000461 'struct fib_rule_uid_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100462 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400463 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400464
465 # We get -1 if the size cannot be determined
466 have = cc.sizeof(decl, prefix : decl_headers) > 0
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200467 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400468endforeach
469
470foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
471 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
472 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
473 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530474 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400475 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
476 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
477 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
478 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
479 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530480 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400481 # if_tunnel.h is buggy and cannot be included on its own
482 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
483 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
484 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
485 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
486 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
487 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
488 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530489 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400490 ['NDA_IFINDEX', 'linux/neighbour.h'],
491 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000492 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400493 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530494 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400495 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400496 prefix = decl.length() > 2 ? decl[2] : ''
497 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200498 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400499endforeach
500
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400501foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200502 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400503endforeach
504
505foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100506 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100507 ['gettid', '''#include <sys/types.h>
508 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100509 ['pivot_root', '''#include <stdlib.h>
510 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100511 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400512 #include <sys/stat.h>
513 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100514 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100515 ['renameat2', '''#include <stdio.h>
516 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400517 ['kcmp', '''#include <linux/kcmp.h>'''],
518 ['keyctl', '''#include <sys/types.h>
519 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100520 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400521 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200522 ['bpf', '''#include <sys/syscall.h>
523 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100524 ['statx', '''#include <sys/types.h>
525 #include <sys/stat.h>
526 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100527 ['explicit_bzero' , '''#include <string.h>'''],
528 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400529]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400530
Lennart Poettering85db59b2017-12-25 12:01:14 +0100531 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200532 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400533endforeach
534
Lennart Poettering85db59b2017-12-25 12:01:14 +0100535if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200536 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200537 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400538else
539 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200540 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200541 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400542endif
543
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400544#####################################################################
545
546sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400547awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400548m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400549stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400550git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100551env = find_program('env')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400552
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400553meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400554mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400555test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
556splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400557
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400558# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
559# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500560progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400561 ['quotacheck', '/usr/sbin/quotacheck' ],
562 ['kill', '/usr/bin/kill' ],
563 ['kmod', '/usr/bin/kmod' ],
564 ['kexec', '/usr/sbin/kexec' ],
565 ['sulogin', '/usr/sbin/sulogin' ],
566 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
567 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
568 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
569 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
570 ]
571foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400572 path = get_option(prog[0] + '-path')
573 if path != ''
574 message('Using @1@ for @0@'.format(prog[0], path))
575 else
576 exe = find_program(prog[0],
577 '/usr/sbin/' + prog[0],
578 '/sbin/' + prog[0],
579 required: false)
580 path = exe.found() ? exe.path() : prog[1]
581 endif
582 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
583 conf.set_quoted(name, path)
584 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400585endforeach
586
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500587conf.set_quoted('TELINIT', get_option('telinit-path'))
588
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400589if run_command('ln', '--relative', '--help').returncode() != 0
590 error('ln does not support --relative')
591endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400592
593############################################################
594
595gperf = find_program('gperf')
596
597gperf_test_format = '''
598#include <string.h>
599const char * in_word_set(const char *, @0@);
600@1@
601'''
602gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
603gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
604gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
605if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400606 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400607else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400608 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
609 if cc.compiles(gperf_test)
610 gperf_len_type = 'unsigned'
611 else
612 error('unable to determine gperf len type')
613 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400614endif
615message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400616conf.set('GPERF_LEN_TYPE', gperf_len_type,
617 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400618
619############################################################
620
621if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400622 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400623endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100624foreach header : ['crypt.h',
625 'linux/btrfs.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400626 'linux/memfd.h',
627 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200628 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400629 'valgrind/memcheck.h',
630 'valgrind/valgrind.h',
631 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400632
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200633 conf.set10('HAVE_' + header.underscorify().to_upper(),
634 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400635endforeach
636
637############################################################
638
639conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400640conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
641gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400642
643default_hierarchy = get_option('default-hierarchy')
644conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
645 description : 'default cgroup hierarchy as string')
646if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400647 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400648elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400649 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400650else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400651 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400652endif
653
654time_epoch = get_option('time-epoch')
655if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400656 NEWS = files('NEWS')
657 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400658endif
659time_epoch = time_epoch.to_int()
660conf.set('TIME_EPOCH', time_epoch)
661
662system_uid_max = get_option('system-uid-max')
663if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400664 system_uid_max = run_command(
665 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800666 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
667 '/etc/login.defs').stdout().strip()
668 if system_uid_max == ''
669 system_uid_max = '999'
670 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400671endif
672system_uid_max = system_uid_max.to_int()
673conf.set('SYSTEM_UID_MAX', system_uid_max)
674substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400675message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400676
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400677system_gid_max = get_option('system-gid-max')
678if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400679 system_gid_max = run_command(
680 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800681 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
682 '/etc/login.defs').stdout().strip()
683 if system_gid_max == ''
684 system_gid_max = '999'
685 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400686endif
687system_gid_max = system_gid_max.to_int()
688conf.set('SYSTEM_GID_MAX', system_gid_max)
689substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400690message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400691
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100692dynamic_uid_min = get_option('dynamic-uid-min').to_int()
693dynamic_uid_max = get_option('dynamic-uid-max').to_int()
694conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
695conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
696substs.set('dynamicuidmin', dynamic_uid_min)
697substs.set('dynamicuidmax', dynamic_uid_max)
698
699container_uid_base_min = get_option('container-uid-base-min').to_int()
700container_uid_base_max = get_option('container-uid-base-max').to_int()
701conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
702conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
703substs.set('containeruidbasemin', container_uid_base_min)
704substs.set('containeruidbasemax', container_uid_base_max)
705
Lennart Poetteringafde4572017-12-05 11:00:24 +0100706nobody_user = get_option('nobody-user')
707nobody_group = get_option('nobody-group')
708
709getent_result = run_command('getent', 'passwd', '65534')
710if getent_result.returncode() == 0
711 name = getent_result.stdout().split(':')[0]
712 if name != nobody_user
713 message('WARNING:\n' +
714 ' 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) +
715 ' Your build will result in an user table setup that is incompatible with the local system.')
716 endif
717endif
718id_result = run_command('id', '-u', nobody_user)
719if id_result.returncode() == 0
720 id = id_result.stdout().to_int()
721 if id != 65534
722 message('WARNING:\n' +
723 ' 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) +
724 ' Your build will result in an user table setup that is incompatible with the local system.')
725 endif
726endif
727
728getent_result = run_command('getent', 'group', '65534')
729if getent_result.returncode() == 0
730 name = getent_result.stdout().split(':')[0]
731 if name != nobody_group
732 message('WARNING:\n' +
733 ' 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) +
734 ' Your build will result in an group table setup that is incompatible with the local system.')
735 endif
736endif
737id_result = run_command('id', '-g', nobody_group)
738if id_result.returncode() == 0
739 id = id_result.stdout().to_int()
740 if id != 65534
741 message('WARNING:\n' +
742 ' 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) +
743 ' Your build will result in an group table setup that is incompatible with the local system.')
744 endif
745endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900746if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
747 message('WARNING:\n' +
748 ' The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
749 ' Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
750endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100751
752conf.set_quoted('NOBODY_USER_NAME', nobody_user)
753conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900754substs.set('NOBODY_USER_NAME', nobody_user)
755substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100756
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400757tty_gid = get_option('tty-gid')
758conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400759substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400760
Ikey Doherty84786b82017-12-03 12:28:23 +0000761# Ensure provided GID argument is numeric, otherwise fallback to default assignment
762if get_option('users-gid') != ''
Yu Watanabed6806872017-12-05 14:01:39 +0900763 users_gid = get_option('users-gid').to_int()
Ikey Doherty84786b82017-12-03 12:28:23 +0000764else
Yu Watanabed6806872017-12-05 14:01:39 +0900765 users_gid = '-'
Ikey Doherty84786b82017-12-03 12:28:23 +0000766endif
767substs.set('USERS_GID', users_gid)
768
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400769if get_option('adm-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400770 m4_defines += ['-DENABLE_ADM_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400771endif
772
773if get_option('wheel-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400774 m4_defines += ['-DENABLE_WHEEL_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400775endif
776
777substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700778substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400779
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400780kill_user_processes = get_option('default-kill-user-processes')
781conf.set10('KILL_USER_PROCESSES', kill_user_processes)
782substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400783
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400784dns_servers = get_option('dns-servers')
785conf.set_quoted('DNS_SERVERS', dns_servers)
786substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400787
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400788ntp_servers = get_option('ntp-servers')
789conf.set_quoted('NTP_SERVERS', ntp_servers)
790substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400791
792conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
793
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400794substs.set('SUSHELL', get_option('debug-shell'))
795substs.set('DEBUGTTY', get_option('debug-tty'))
796
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400797debug = get_option('debug')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200798enable_debug_hashmap = false
799enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400800if debug != ''
801 foreach name : debug.split(',')
802 if name == 'hashmap'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200803 enable_debug_hashmap = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400804 elif name == 'mmap-cache'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200805 enable_debug_mmap_cache = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400806 else
807 message('unknown debug option "@0@", ignoring'.format(name))
808 endif
809 endforeach
810endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200811conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
812conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400813
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400814#####################################################################
815
816threads = dependency('threads')
817librt = cc.find_library('rt')
818libm = cc.find_library('m')
819libdl = cc.find_library('dl')
820libcrypt = cc.find_library('crypt')
821
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400822libcap = dependency('libcap', required : false)
823if not libcap.found()
824 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
825 libcap = cc.find_library('cap')
826endif
827
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400828libmount = dependency('mount',
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -0500829 version : '>= 2.30',
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500830 required : not fuzzer_build)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400831
832want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500833if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400834 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400835 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400836 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200837 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400838else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200839 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400840 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400841endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200842conf.set10('HAVE_SECCOMP', have)
843m4_defines += have ? ['-DHAVE_SECCOMP'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400844
845want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500846if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400847 libselinux = dependency('libselinux',
848 version : '>= 2.1.9',
849 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200850 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400851else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200852 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400853 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400854endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200855conf.set10('HAVE_SELINUX', have)
856m4_defines += have ? ['-DHAVE_SELINUX'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400857
858want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500859if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400860 libapparmor = dependency('libapparmor',
861 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200862 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400863else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200864 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400865 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400866endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200867conf.set10('HAVE_APPARMOR', have)
868m4_defines += have ? ['-DHAVE_APPARMOR'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400869
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400870smack_run_label = get_option('smack-run-label')
871if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400872 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
873 m4_defines += ['-DHAVE_SMACK_RUN_LABEL']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400874endif
875
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400876want_polkit = get_option('polkit')
877install_polkit = false
878install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500879if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400880 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400881
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400882 libpolkit = dependency('polkit-gobject-1',
883 required : false)
884 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
885 message('Old polkit detected, will install pkla files')
886 install_polkit_pkla = true
887 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400888endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200889conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400890
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400891want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500892if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400893 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200894 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400895else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200896 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400897 libacl = []
898endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200899conf.set10('HAVE_ACL', have)
900m4_defines += have ? ['-DHAVE_ACL'] : []
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400901
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400902want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500903if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400904 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200905 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400906else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200907 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400908 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400909endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200910conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400911
912want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500913if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400914 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200915 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400916else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200917 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400918 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400919endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200920conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400921
922want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500923if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400924 libkmod = dependency('libkmod',
925 version : '>= 15',
926 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200927 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400928else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200929 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400930 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400931endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200932conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400933
934want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500935if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400936 libpam = cc.find_library('pam', required : want_pam == 'true')
937 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200938 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400939else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200940 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400941 libpam = []
942 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400943endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200944conf.set10('HAVE_PAM', have)
945m4_defines += have ? ['-DHAVE_PAM'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400946
947want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500948if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400949 libmicrohttpd = dependency('libmicrohttpd',
950 version : '>= 0.9.33',
951 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200952 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400953else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200954 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400955 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400956endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200957conf.set10('HAVE_MICROHTTPD', have)
958m4_defines += have ? ['-DHAVE_MICROHTTPD'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400959
960want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500961if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400962 libcryptsetup = dependency('libcryptsetup',
963 version : '>= 1.6.0',
964 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200965 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400966else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200967 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400968 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400969endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200970conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400971
972want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500973if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400974 libcurl = dependency('libcurl',
975 version : '>= 7.32.0',
976 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200977 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400978else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200979 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400980 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400981endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200982conf.set10('HAVE_LIBCURL', have)
983m4_defines += have ? ['-DHAVE_LIBCURL'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400984
985want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400986want_libidn2 = get_option('libidn2')
987if want_libidn == 'true' and want_libidn2 == 'true'
988 error('libidn and libidn2 cannot be requested simultaneously')
989endif
990
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500991if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400992 libidn = dependency('libidn',
993 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200994 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400995else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200996 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400997 libidn = []
998endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200999conf.set10('HAVE_LIBIDN', have)
1000m4_defines += have ? ['-DHAVE_LIBIDN'] : []
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001001if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001002 # libidn is used for both libidn and libidn2 objects
1003 libidn = dependency('libidn2',
1004 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001005 have = libidn.found()
1006else
1007 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001008endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001009conf.set10('HAVE_LIBIDN2', have)
1010m4_defines += have ? ['-DHAVE_LIBIDN2'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001011
1012want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001013if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001014 libiptc = dependency('libiptc',
1015 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001016 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001017else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001018 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001019 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001020endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001021conf.set10('HAVE_LIBIPTC', have)
1022m4_defines += have ? ['-DHAVE_LIBIPTC'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001023
1024want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001025if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001026 libqrencode = dependency('libqrencode',
1027 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001028 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001029else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001030 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001031 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001032endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001033conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001034
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001035want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001036if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001037 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1038 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001039 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001040else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001041 have = false
1042endif
1043if not have
1044 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001045 libgcrypt = []
1046 libgpg_error = []
1047endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001048conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001049
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001050want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001051if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001052 libgnutls = dependency('gnutls',
1053 version : '>= 3.1.4',
1054 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001055 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001056else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001057 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001058 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001059endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001060conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001061
1062want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001063if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001064 libdw = dependency('libdw',
1065 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001066 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001067else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001068 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001069 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001070endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001071conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001072
1073want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001074if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001075 libz = dependency('zlib',
1076 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001077 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001078else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001079 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001080 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001081endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001082conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001083
1084want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001085if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001086 libbzip2 = cc.find_library('bz2',
1087 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001088 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001089else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001090 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001091 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001092endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001093conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001094
1095want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001096if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001097 libxz = dependency('liblzma',
1098 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001099 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001100else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001101 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001102 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001103endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001104conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001105
1106want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001107if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001108 liblz4 = dependency('liblz4',
1109 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001110 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001111else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001112 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001113 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001114endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001115conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001116
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001117want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001118if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001119 libxkbcommon = dependency('xkbcommon',
1120 version : '>= 0.3.0',
1121 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001122 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001123else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001124 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001125 libxkbcommon = []
1126endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001127conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001128
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001129want_pcre2 = get_option('pcre2')
1130if want_pcre2 != 'false'
1131 libpcre2 = dependency('libpcre2-8',
1132 required : want_pcre2 == 'true')
1133 have = libpcre2.found()
1134else
1135 have = false
1136 libpcre2 = []
1137endif
1138conf.set10('HAVE_PCRE2', have)
1139
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001140want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001141if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001142 libglib = dependency('glib-2.0',
1143 version : '>= 2.22.0',
1144 required : want_glib == 'true')
1145 libgobject = dependency('gobject-2.0',
1146 version : '>= 2.22.0',
1147 required : want_glib == 'true')
1148 libgio = dependency('gio-2.0',
1149 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001150 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001151else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001152 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001153 libglib = []
1154 libgobject = []
1155 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001156endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001157conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001158
1159want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001160if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001161 libdbus = dependency('dbus-1',
1162 version : '>= 1.3.2',
1163 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001164 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001165else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001166 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001167 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001168endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001169conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001170
Yu Watanabe42303dc2017-06-18 05:22:32 +09001171default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001172if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001173 default_dnssec = 'no'
1174endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001175if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001176 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1177 default_dnssec = 'no'
1178endif
1179conf.set('DEFAULT_DNSSEC_MODE',
1180 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1181substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1182
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001183want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001184if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001185 have = (conf.get('HAVE_LIBCURL') == 1 and
1186 conf.get('HAVE_ZLIB') == 1 and
1187 conf.get('HAVE_BZIP2') == 1 and
1188 conf.get('HAVE_XZ') == 1 and
1189 conf.get('HAVE_GCRYPT') == 1)
1190 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001191 error('importd support was requested, but dependencies are not available')
1192 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001193else
1194 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001195endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001196conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001197
1198want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001199if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001200 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1201 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001202 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1203 # it's possible to build one without the other. Complain only if
1204 # support was explictly requested. The auxiliary files like sysusers
1205 # config should be installed when any of the programs are built.
1206 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1207 error('remote support was requested, but dependencies are not available')
1208 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001209 have = have_deps[0] or have_deps[1]
1210else
1211 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001212endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001213conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001214
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001215foreach term : ['utmp',
1216 'hibernate',
1217 'environment-d',
1218 'binfmt',
1219 'coredump',
1220 'resolve',
1221 'logind',
1222 'hostnamed',
1223 'localed',
1224 'machined',
1225 'networkd',
1226 'timedated',
1227 'timesyncd',
1228 'myhostname',
1229 'firstboot',
1230 'randomseed',
1231 'backlight',
1232 'vconsole',
1233 'quotacheck',
1234 'sysusers',
1235 'tmpfiles',
1236 'hwdb',
1237 'rfkill',
1238 'ldconfig',
1239 'efi',
1240 'tpm',
1241 'ima',
1242 'smack',
1243 'gshadow',
1244 'idn',
1245 'nss-systemd']
1246 have = get_option(term)
1247 name = 'ENABLE_' + term.underscorify().to_upper()
1248 conf.set10(name, have)
1249 m4_defines += have ? ['-D' + name] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001250endforeach
1251
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001252want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001253install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001254slow_tests = get_option('slow-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001255tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001256fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001257
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001258conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001259
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001260#####################################################################
1261
1262if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001263 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001264
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001265 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001266 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001267 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001268 elif efi_arch == 'x86_64'
1269 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001270 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001271 elif efi_arch == 'arm'
1272 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001273 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001274 elif efi_arch == 'aarch64'
1275 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001276 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001277 else
1278 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001279 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001280 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001281
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001282 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001283 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001284
1285 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001286else
1287 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001288endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001289conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001290
1291#####################################################################
1292
1293config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001294 output : 'config.h',
1295 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001296
1297includes = include_directories('src/basic',
1298 'src/shared',
1299 'src/systemd',
1300 'src/journal',
1301 'src/resolve',
1302 'src/timesync',
1303 'src/login',
1304 'src/udev',
1305 'src/libudev',
1306 'src/core',
1307 'src/libsystemd/sd-bus',
1308 'src/libsystemd/sd-device',
1309 'src/libsystemd/sd-hwdb',
1310 'src/libsystemd/sd-id128',
1311 'src/libsystemd/sd-netlink',
1312 'src/libsystemd/sd-network',
1313 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001314 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001315
1316add_project_arguments('-include', 'config.h', language : 'c')
1317
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001318subdir('po')
1319subdir('catalog')
1320subdir('src/systemd')
1321subdir('src/basic')
1322subdir('src/libsystemd')
1323subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001324subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001325subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001326
1327libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001328 'journal-core',
1329 libjournal_core_sources,
1330 journald_gperf_c,
1331 include_directories : includes,
1332 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001333
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001334libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001335libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001336 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001337 '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 +02001338 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001339 include_directories : includes,
1340 link_args : ['-shared',
1341 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001342 link_with : [libbasic,
1343 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001344 link_whole : [libsystemd_static,
1345 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001346 dependencies : [threads,
1347 librt,
1348 libxz,
1349 liblz4],
1350 link_depends : libsystemd_sym,
1351 install : true,
1352 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001353
1354############################################################
1355
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001356# binaries that have --help and are intended for use by humans,
1357# usually, but not always, installed in /bin.
1358public_programs = []
1359
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001360subdir('src/libudev')
1361subdir('src/shared')
1362subdir('src/core')
1363subdir('src/udev')
1364subdir('src/network')
1365
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001366subdir('src/analyze')
1367subdir('src/journal-remote')
1368subdir('src/coredump')
1369subdir('src/hostname')
1370subdir('src/import')
1371subdir('src/kernel-install')
1372subdir('src/locale')
1373subdir('src/machine')
1374subdir('src/nspawn')
1375subdir('src/resolve')
1376subdir('src/timedate')
1377subdir('src/timesync')
1378subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001379subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001380
1381subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001382subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001383subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001384subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001385
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001386############################################################
1387
1388# only static linking apart from libdl, to make sure that the
1389# module is linked to all libraries that it uses.
1390test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001391 'test-dlopen',
1392 test_dlopen_c,
1393 include_directories : includes,
1394 link_with : [libbasic],
1395 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001396
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001397foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001398 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001399 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001400 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001401
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001402 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001403 if condition
1404 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001405
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001406 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1407 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001408
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001409 nss = shared_library(
1410 'nss_' + module,
1411 'src/nss-@0@/nss-@0@.c'.format(module),
1412 version : '2',
1413 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001414 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1415 link_args : ['-Wl,-z,nodelete',
1416 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001417 '-Wl,--version-script=' + version_script_arg,
1418 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001419 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001420 libbasic],
1421 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001422 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001423 link_depends : sym,
1424 install : true,
1425 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001426
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001427 # We cannot use shared_module because it does not support version suffix.
1428 # Unfortunately shared_library insists on creating the symlink…
1429 meson.add_install_script('sh', '-c',
1430 'rm $DESTDIR@0@/libnss_@1@.so'
1431 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001432
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001433 test('dlopen-nss_' + module,
1434 test_dlopen,
1435 args : [nss.full_path()]) # path to dlopen must include a slash
1436 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001437endforeach
1438
1439############################################################
1440
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001441executable('systemd',
1442 systemd_sources,
1443 include_directories : includes,
1444 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001445 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001446 dependencies : [threads,
1447 librt,
1448 libseccomp,
1449 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001450 libmount,
1451 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001452 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001453 install : true,
1454 install_dir : rootlibexecdir)
1455
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001456exe = executable('systemd-analyze',
1457 systemd_analyze_sources,
1458 include_directories : includes,
1459 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001460 libshared],
1461 dependencies : [threads,
1462 librt,
1463 libseccomp,
1464 libselinux,
1465 libmount,
1466 libblkid],
1467 install_rpath : rootlibexecdir,
1468 install : true)
1469public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001470
1471executable('systemd-journald',
1472 systemd_journald_sources,
1473 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001474 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001475 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001476 dependencies : [threads,
1477 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001478 liblz4,
1479 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001480 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001481 install : true,
1482 install_dir : rootlibexecdir)
1483
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001484exe = executable('systemd-cat',
1485 systemd_cat_sources,
1486 include_directories : includes,
1487 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001488 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001489 dependencies : [threads],
1490 install_rpath : rootlibexecdir,
1491 install : true)
1492public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001493
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001494exe = executable('journalctl',
1495 journalctl_sources,
1496 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001497 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001498 dependencies : [threads,
1499 libqrencode,
1500 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001501 liblz4,
1502 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001503 install_rpath : rootlibexecdir,
1504 install : true,
1505 install_dir : rootbindir)
1506public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001507
1508executable('systemd-getty-generator',
1509 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001510 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001511 link_with : [libshared],
1512 install_rpath : rootlibexecdir,
1513 install : true,
1514 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001515
1516executable('systemd-debug-generator',
1517 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001518 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001519 link_with : [libshared],
1520 install_rpath : rootlibexecdir,
1521 install : true,
1522 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001523
1524executable('systemd-fstab-generator',
1525 'src/fstab-generator/fstab-generator.c',
1526 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001527 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001528 link_with : [libshared],
1529 install_rpath : rootlibexecdir,
1530 install : true,
1531 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001532
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001533if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001534 executable('30-systemd-environment-d-generator',
1535 'src/environment-d-generator/environment-d-generator.c',
1536 include_directories : includes,
1537 link_with : [libshared],
1538 install_rpath : rootlibexecdir,
1539 install : true,
1540 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001541
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001542 meson.add_install_script(meson_make_symlink,
1543 join_paths(sysconfdir, 'environment'),
1544 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001545endif
1546
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001547if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001548 executable('systemd-hibernate-resume-generator',
1549 'src/hibernate-resume/hibernate-resume-generator.c',
1550 include_directories : includes,
1551 link_with : [libshared],
1552 install_rpath : rootlibexecdir,
1553 install : true,
1554 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001555
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001556 executable('systemd-hibernate-resume',
1557 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001558 include_directories : includes,
1559 link_with : [libshared],
1560 install_rpath : rootlibexecdir,
1561 install : true,
1562 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001563endif
1564
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001565if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001566 executable('systemd-gpt-auto-generator',
1567 'src/gpt-auto-generator/gpt-auto-generator.c',
1568 'src/basic/blkid-util.h',
1569 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001570 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001571 dependencies : libblkid,
1572 install_rpath : rootlibexecdir,
1573 install : true,
1574 install_dir : systemgeneratordir)
1575
1576 exe = executable('systemd-dissect',
1577 'src/dissect/dissect.c',
1578 include_directories : includes,
1579 link_with : [libshared],
1580 install_rpath : rootlibexecdir,
1581 install : true,
1582 install_dir : rootlibexecdir)
1583 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001584endif
1585
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001586if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001587 executable('systemd-resolved',
1588 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001589 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001590 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001591 libbasic_gcrypt,
1592 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001593 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001594 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001595 libm,
1596 libidn],
1597 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001598 install : true,
1599 install_dir : rootlibexecdir)
1600
1601 exe = executable('systemd-resolve',
1602 systemd_resolve_sources,
1603 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001604 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001605 libbasic_gcrypt,
1606 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001607 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001608 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001609 libm,
1610 libidn],
1611 install_rpath : rootlibexecdir,
1612 install : true)
1613 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001614endif
1615
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001616if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001617 executable('systemd-logind',
1618 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001619 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001620 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001621 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001622 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001623 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001624 install_rpath : rootlibexecdir,
1625 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001626 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001627
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001628 exe = executable('loginctl',
1629 loginctl_sources,
1630 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001631 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001632 dependencies : [threads,
1633 liblz4,
1634 libxz],
1635 install_rpath : rootlibexecdir,
1636 install : true,
1637 install_dir : rootbindir)
1638 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001639
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001640 exe = executable('systemd-inhibit',
1641 'src/login/inhibit.c',
1642 include_directories : includes,
1643 link_with : [libshared],
1644 install_rpath : rootlibexecdir,
1645 install : true,
1646 install_dir : rootbindir)
1647 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001648
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001649 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001650 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1651 pam_systemd = shared_library(
1652 'pam_systemd',
1653 pam_systemd_c,
1654 name_prefix : '',
1655 include_directories : includes,
1656 link_args : ['-shared',
1657 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001658 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001659 libshared_static],
1660 dependencies : [threads,
1661 libpam,
1662 libpam_misc],
1663 link_depends : pam_systemd_sym,
1664 install : true,
1665 install_dir : pamlibdir)
1666
1667 test('dlopen-pam_systemd',
1668 test_dlopen,
1669 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1670 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001671endif
1672
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001673if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001674 executable('systemd-user-sessions',
1675 'src/user-sessions/user-sessions.c',
1676 include_directories : includes,
1677 link_with : [libshared],
1678 install_rpath : rootlibexecdir,
1679 install : true,
1680 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001681endif
1682
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001683if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001684 exe = executable('bootctl',
1685 'src/boot/bootctl.c',
1686 include_directories : includes,
1687 link_with : [libshared],
1688 dependencies : [libblkid],
1689 install_rpath : rootlibexecdir,
1690 install : true)
1691 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001692endif
1693
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001694exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1695 include_directories : includes,
1696 link_with : [libshared],
1697 dependencies : [threads],
1698 install_rpath : rootlibexecdir,
1699 install : true)
1700public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001701
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001702exe = executable('systemctl', 'src/systemctl/systemctl.c',
1703 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001704 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001705 dependencies : [threads,
1706 libcap,
1707 libselinux,
1708 libxz,
1709 liblz4],
1710 install_rpath : rootlibexecdir,
1711 install : true,
1712 install_dir : rootbindir)
1713public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001714
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001715if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001716 executable('systemd-backlight',
1717 'src/backlight/backlight.c',
1718 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001719 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001720 install_rpath : rootlibexecdir,
1721 install : true,
1722 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001723endif
1724
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001725if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001726 executable('systemd-rfkill',
1727 'src/rfkill/rfkill.c',
1728 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001729 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001730 install_rpath : rootlibexecdir,
1731 install : true,
1732 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001733endif
1734
1735executable('systemd-system-update-generator',
1736 'src/system-update-generator/system-update-generator.c',
1737 include_directories : includes,
1738 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001739 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001740 install : true,
1741 install_dir : systemgeneratordir)
1742
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001743if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001744 executable('systemd-cryptsetup',
1745 'src/cryptsetup/cryptsetup.c',
1746 include_directories : includes,
1747 link_with : [libshared],
1748 dependencies : [libcryptsetup],
1749 install_rpath : rootlibexecdir,
1750 install : true,
1751 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001752
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001753 executable('systemd-cryptsetup-generator',
1754 'src/cryptsetup/cryptsetup-generator.c',
1755 include_directories : includes,
1756 link_with : [libshared],
1757 dependencies : [libcryptsetup],
1758 install_rpath : rootlibexecdir,
1759 install : true,
1760 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001761
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001762 executable('systemd-veritysetup',
1763 'src/veritysetup/veritysetup.c',
1764 include_directories : includes,
1765 link_with : [libshared],
1766 dependencies : [libcryptsetup],
1767 install_rpath : rootlibexecdir,
1768 install : true,
1769 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001770
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001771 executable('systemd-veritysetup-generator',
1772 'src/veritysetup/veritysetup-generator.c',
1773 include_directories : includes,
1774 link_with : [libshared],
1775 dependencies : [libcryptsetup],
1776 install_rpath : rootlibexecdir,
1777 install : true,
1778 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001779endif
1780
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001781if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001782 executable('systemd-sysv-generator',
1783 'src/sysv-generator/sysv-generator.c',
1784 include_directories : includes,
1785 link_with : [libshared],
1786 install_rpath : rootlibexecdir,
1787 install : true,
1788 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001789
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001790 executable('systemd-rc-local-generator',
1791 'src/rc-local-generator/rc-local-generator.c',
1792 include_directories : includes,
1793 link_with : [libshared],
1794 install_rpath : rootlibexecdir,
1795 install : true,
1796 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001797endif
1798
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001799if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001800 executable('systemd-hostnamed',
1801 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001802 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001803 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001804 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001805 install : true,
1806 install_dir : rootlibexecdir)
1807
1808 exe = executable('hostnamectl',
1809 'src/hostname/hostnamectl.c',
1810 include_directories : includes,
1811 link_with : [libshared],
1812 install_rpath : rootlibexecdir,
1813 install : true)
1814 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001815endif
1816
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001817if conf.get('ENABLE_LOCALED') == 1
1818 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001819 # logind will load libxkbcommon.so dynamically on its own
1820 deps = [libdl]
1821 else
1822 deps = []
1823 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001824
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001825 executable('systemd-localed',
1826 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001827 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001828 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001829 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001830 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001831 install : true,
1832 install_dir : rootlibexecdir)
1833
1834 exe = executable('localectl',
1835 localectl_sources,
1836 include_directories : includes,
1837 link_with : [libshared],
1838 install_rpath : rootlibexecdir,
1839 install : true)
1840 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001841endif
1842
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001843if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001844 executable('systemd-timedated',
1845 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001846 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001847 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001848 install_rpath : rootlibexecdir,
1849 install : true,
1850 install_dir : rootlibexecdir)
1851
1852 exe = executable('timedatectl',
1853 'src/timedate/timedatectl.c',
1854 include_directories : includes,
1855 install_rpath : rootlibexecdir,
1856 link_with : [libshared],
1857 install : true)
1858 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001859endif
1860
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001861if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001862 executable('systemd-timesyncd',
1863 systemd_timesyncd_sources,
1864 include_directories : includes,
1865 link_with : [libshared],
1866 dependencies : [threads,
1867 libm],
1868 install_rpath : rootlibexecdir,
1869 install : true,
1870 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001871endif
1872
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001873if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001874 executable('systemd-machined',
1875 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001876 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001877 link_with : [libmachine_core,
1878 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001879 install_rpath : rootlibexecdir,
1880 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001881 install_dir : rootlibexecdir)
1882
1883 exe = executable('machinectl',
1884 'src/machine/machinectl.c',
1885 include_directories : includes,
1886 link_with : [libshared],
1887 dependencies : [threads,
1888 libxz,
1889 liblz4],
1890 install_rpath : rootlibexecdir,
1891 install : true,
1892 install_dir : rootbindir)
1893 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001894endif
1895
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001896if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001897 executable('systemd-importd',
1898 systemd_importd_sources,
1899 include_directories : includes,
1900 link_with : [libshared],
1901 dependencies : [threads],
1902 install_rpath : rootlibexecdir,
1903 install : true,
1904 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001905
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001906 systemd_pull = executable('systemd-pull',
1907 systemd_pull_sources,
1908 include_directories : includes,
1909 link_with : [libshared],
1910 dependencies : [libcurl,
1911 libz,
1912 libbzip2,
1913 libxz,
1914 libgcrypt],
1915 install_rpath : rootlibexecdir,
1916 install : true,
1917 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001918
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001919 systemd_import = executable('systemd-import',
1920 systemd_import_sources,
1921 include_directories : includes,
1922 link_with : [libshared],
1923 dependencies : [libcurl,
1924 libz,
1925 libbzip2,
1926 libxz],
1927 install_rpath : rootlibexecdir,
1928 install : true,
1929 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001930
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001931 systemd_export = executable('systemd-export',
1932 systemd_export_sources,
1933 include_directories : includes,
1934 link_with : [libshared],
1935 dependencies : [libcurl,
1936 libz,
1937 libbzip2,
1938 libxz],
1939 install_rpath : rootlibexecdir,
1940 install : true,
1941 install_dir : rootlibexecdir)
1942 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001943endif
1944
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001945if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001946 exe = executable('systemd-journal-upload',
1947 systemd_journal_upload_sources,
1948 include_directories : includes,
1949 link_with : [libshared],
1950 dependencies : [threads,
1951 libcurl,
1952 libgnutls,
1953 libxz,
1954 liblz4],
1955 install_rpath : rootlibexecdir,
1956 install : true,
1957 install_dir : rootlibexecdir)
1958 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001959endif
1960
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001961if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001962 s_j_remote = executable('systemd-journal-remote',
1963 systemd_journal_remote_sources,
1964 include_directories : includes,
1965 link_with : [libshared],
1966 dependencies : [threads,
1967 libmicrohttpd,
1968 libgnutls,
1969 libxz,
1970 liblz4],
1971 install_rpath : rootlibexecdir,
1972 install : true,
1973 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001974
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001975 s_j_gatewayd = executable('systemd-journal-gatewayd',
1976 systemd_journal_gatewayd_sources,
1977 include_directories : includes,
1978 link_with : [libshared],
1979 dependencies : [threads,
1980 libmicrohttpd,
1981 libgnutls,
1982 libxz,
1983 liblz4],
1984 install_rpath : rootlibexecdir,
1985 install : true,
1986 install_dir : rootlibexecdir)
1987 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001988endif
1989
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001990if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001991 executable('systemd-coredump',
1992 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001993 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001994 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001995 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001996 libacl,
1997 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001998 libxz,
1999 liblz4],
2000 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002001 install : true,
2002 install_dir : rootlibexecdir)
2003
2004 exe = executable('coredumpctl',
2005 coredumpctl_sources,
2006 include_directories : includes,
2007 link_with : [libshared],
2008 dependencies : [threads,
2009 libxz,
2010 liblz4],
2011 install_rpath : rootlibexecdir,
2012 install : true)
2013 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002014endif
2015
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002016if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002017 exe = executable('systemd-binfmt',
2018 'src/binfmt/binfmt.c',
2019 include_directories : includes,
2020 link_with : [libshared],
2021 install_rpath : rootlibexecdir,
2022 install : true,
2023 install_dir : rootlibexecdir)
2024 public_programs += [exe]
2025
2026 meson.add_install_script('sh', '-c',
2027 mkdir_p.format(binfmtdir))
2028 meson.add_install_script('sh', '-c',
2029 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2030endif
2031
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002032if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002033 executable('systemd-vconsole-setup',
2034 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002035 include_directories : includes,
2036 link_with : [libshared],
2037 install_rpath : rootlibexecdir,
2038 install : true,
2039 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002040endif
2041
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002042if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002043 executable('systemd-random-seed',
2044 'src/random-seed/random-seed.c',
2045 include_directories : includes,
2046 link_with : [libshared],
2047 install_rpath : rootlibexecdir,
2048 install : true,
2049 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002050endif
2051
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002052if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002053 executable('systemd-firstboot',
2054 'src/firstboot/firstboot.c',
2055 include_directories : includes,
2056 link_with : [libshared],
2057 dependencies : [libcrypt],
2058 install_rpath : rootlibexecdir,
2059 install : true,
2060 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002061endif
2062
2063executable('systemd-remount-fs',
2064 'src/remount-fs/remount-fs.c',
2065 'src/core/mount-setup.c',
2066 'src/core/mount-setup.h',
2067 include_directories : includes,
2068 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002069 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002070 install : true,
2071 install_dir : rootlibexecdir)
2072
2073executable('systemd-machine-id-setup',
2074 'src/machine-id-setup/machine-id-setup-main.c',
2075 'src/core/machine-id-setup.c',
2076 'src/core/machine-id-setup.h',
2077 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002078 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002079 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002080 install : true,
2081 install_dir : rootbindir)
2082
2083executable('systemd-fsck',
2084 'src/fsck/fsck.c',
2085 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002086 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002087 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002088 install : true,
2089 install_dir : rootlibexecdir)
2090
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002091executable('systemd-growfs',
2092 'src/partition/growfs.c',
2093 include_directories : includes,
2094 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002095 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002096 install_rpath : rootlibexecdir,
2097 install : true,
2098 install_dir : rootlibexecdir)
2099
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002100executable('systemd-makefs',
2101 'src/partition/makefs.c',
2102 include_directories : includes,
2103 link_with : [libshared],
2104 install_rpath : rootlibexecdir,
2105 install : true,
2106 install_dir : rootlibexecdir)
2107
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002108executable('systemd-sleep',
2109 'src/sleep/sleep.c',
2110 include_directories : includes,
2111 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002112 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002113 install : true,
2114 install_dir : rootlibexecdir)
2115
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002116exe = executable('systemd-sysctl',
2117 'src/sysctl/sysctl.c',
2118 include_directories : includes,
2119 link_with : [libshared],
2120 install_rpath : rootlibexecdir,
2121 install : true,
2122 install_dir : rootlibexecdir)
2123public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002124
2125executable('systemd-ac-power',
2126 'src/ac-power/ac-power.c',
2127 include_directories : includes,
2128 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002129 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002130 install : true,
2131 install_dir : rootlibexecdir)
2132
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002133exe = executable('systemd-detect-virt',
2134 'src/detect-virt/detect-virt.c',
2135 include_directories : includes,
2136 link_with : [libshared],
2137 install_rpath : rootlibexecdir,
2138 install : true)
2139public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002140
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002141exe = executable('systemd-delta',
2142 'src/delta/delta.c',
2143 include_directories : includes,
2144 link_with : [libshared],
2145 install_rpath : rootlibexecdir,
2146 install : true)
2147public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002148
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002149exe = executable('systemd-escape',
2150 'src/escape/escape.c',
2151 include_directories : includes,
2152 link_with : [libshared],
2153 install_rpath : rootlibexecdir,
2154 install : true,
2155 install_dir : rootbindir)
2156public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002157
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002158exe = executable('systemd-notify',
2159 'src/notify/notify.c',
2160 include_directories : includes,
2161 link_with : [libshared],
2162 install_rpath : rootlibexecdir,
2163 install : true,
2164 install_dir : rootbindir)
2165public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002166
2167executable('systemd-volatile-root',
2168 'src/volatile-root/volatile-root.c',
2169 include_directories : includes,
2170 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002171 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002172 install : true,
2173 install_dir : rootlibexecdir)
2174
2175executable('systemd-cgroups-agent',
2176 'src/cgroups-agent/cgroups-agent.c',
2177 include_directories : includes,
2178 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002179 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002180 install : true,
2181 install_dir : rootlibexecdir)
2182
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002183exe = executable('systemd-path',
2184 'src/path/path.c',
2185 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002186 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002187 install_rpath : rootlibexecdir,
2188 install : true)
2189public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002190
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002191exe = executable('systemd-ask-password',
2192 'src/ask-password/ask-password.c',
2193 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002194 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002195 install_rpath : rootlibexecdir,
2196 install : true,
2197 install_dir : rootbindir)
2198public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002199
2200executable('systemd-reply-password',
2201 'src/reply-password/reply-password.c',
2202 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002203 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002204 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002205 install : true,
2206 install_dir : rootlibexecdir)
2207
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002208exe = executable('systemd-tty-ask-password-agent',
2209 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2210 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002211 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002212 install_rpath : rootlibexecdir,
2213 install : true,
2214 install_dir : rootbindir)
2215public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002216
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002217exe = executable('systemd-cgls',
2218 'src/cgls/cgls.c',
2219 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002220 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002221 install_rpath : rootlibexecdir,
2222 install : true)
2223public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002224
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002225exe = executable('systemd-cgtop',
2226 'src/cgtop/cgtop.c',
2227 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002228 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002229 install_rpath : rootlibexecdir,
2230 install : true)
2231public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002232
2233executable('systemd-initctl',
2234 'src/initctl/initctl.c',
2235 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002236 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002237 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002238 install : true,
2239 install_dir : rootlibexecdir)
2240
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002241exe = executable('systemd-mount',
2242 'src/mount/mount-tool.c',
2243 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002244 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002245 install_rpath : rootlibexecdir,
2246 install : true)
2247public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002248
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002249meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002250 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002251
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002252exe = executable('systemd-run',
2253 'src/run/run.c',
2254 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002255 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002256 install_rpath : rootlibexecdir,
2257 install : true)
2258public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002259
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002260exe = executable('systemd-stdio-bridge',
2261 'src/stdio-bridge/stdio-bridge.c',
2262 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002263 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002264 install_rpath : rootlibexecdir,
2265 install : true)
2266public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002267
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002268exe = executable('busctl',
2269 'src/busctl/busctl.c',
2270 'src/busctl/busctl-introspect.c',
2271 'src/busctl/busctl-introspect.h',
2272 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002273 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002274 install_rpath : rootlibexecdir,
2275 install : true)
2276public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002277
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002278if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002279 exe = executable('systemd-sysusers',
2280 'src/sysusers/sysusers.c',
2281 include_directories : includes,
2282 link_with : [libshared],
2283 install_rpath : rootlibexecdir,
2284 install : true,
2285 install_dir : rootbindir)
2286 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002287endif
2288
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002289if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002290 exe = executable('systemd-tmpfiles',
2291 'src/tmpfiles/tmpfiles.c',
2292 include_directories : includes,
2293 link_with : [libshared],
2294 dependencies : [libacl],
2295 install_rpath : rootlibexecdir,
2296 install : true,
2297 install_dir : rootbindir)
2298 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002299
2300 test('test-systemd-tmpfiles',
2301 test_systemd_tmpfiles_py,
2302 args : exe.full_path())
2303 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002304endif
2305
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002306if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002307 exe = executable('systemd-hwdb',
2308 'src/hwdb/hwdb.c',
2309 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2310 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002311 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002312 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002313 install : true,
2314 install_dir : rootbindir)
2315 public_programs += [exe]
2316endif
2317
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002318if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002319 executable('systemd-quotacheck',
2320 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002321 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002322 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002323 install_rpath : rootlibexecdir,
2324 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002325 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002326endif
2327
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002328exe = executable('systemd-socket-proxyd',
2329 'src/socket-proxy/socket-proxyd.c',
2330 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002331 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002332 dependencies : [threads],
2333 install_rpath : rootlibexecdir,
2334 install : true,
2335 install_dir : rootlibexecdir)
2336public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002337
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002338exe = executable('systemd-udevd',
2339 systemd_udevd_sources,
2340 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002341 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002342 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002343 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002344 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002345 dependencies : [threads,
2346 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002347 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002348 libacl,
2349 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002350 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002351 install : true,
2352 install_dir : rootlibexecdir)
2353public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002354
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002355exe = executable('udevadm',
2356 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002357 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002358 include_directories : includes,
2359 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002360 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002361 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002362 dependencies : [threads,
2363 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002364 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002365 libacl,
2366 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002367 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002368 install : true,
2369 install_dir : rootbindir)
2370public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002371
2372executable('systemd-shutdown',
2373 systemd_shutdown_sources,
2374 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002375 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002376 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002377 install : true,
2378 install_dir : rootlibexecdir)
2379
2380executable('systemd-update-done',
2381 'src/update-done/update-done.c',
2382 include_directories : includes,
2383 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002384 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002385 install : true,
2386 install_dir : rootlibexecdir)
2387
2388executable('systemd-update-utmp',
2389 'src/update-utmp/update-utmp.c',
2390 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002391 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002392 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002393 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002394 install : true,
2395 install_dir : rootlibexecdir)
2396
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002397if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002398 executable('systemd-modules-load',
2399 'src/modules-load/modules-load.c',
2400 include_directories : includes,
2401 link_with : [libshared],
2402 dependencies : [libkmod],
2403 install_rpath : rootlibexecdir,
2404 install : true,
2405 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002406
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002407 meson.add_install_script('sh', '-c',
2408 mkdir_p.format(modulesloaddir))
2409 meson.add_install_script('sh', '-c',
2410 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002411endif
2412
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002413exe = executable('systemd-nspawn',
2414 systemd_nspawn_sources,
2415 'src/core/mount-setup.c', # FIXME: use a variable?
2416 'src/core/mount-setup.h',
2417 'src/core/loopback-setup.c',
2418 'src/core/loopback-setup.h',
2419 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002420 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002421 dependencies : [libacl,
2422 libblkid,
2423 libseccomp,
2424 libselinux],
2425 install_rpath : rootlibexecdir,
2426 install : true)
2427public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002428
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002429if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002430 executable('systemd-networkd',
2431 systemd_networkd_sources,
2432 include_directories : includes,
2433 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002434 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002435 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002436 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002437 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002438 install_rpath : rootlibexecdir,
2439 install : true,
2440 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002441
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002442 executable('systemd-networkd-wait-online',
2443 systemd_networkd_wait_online_sources,
2444 include_directories : includes,
2445 link_with : [libnetworkd_core,
2446 libshared],
2447 install_rpath : rootlibexecdir,
2448 install : true,
2449 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002450
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002451 exe = executable('networkctl',
2452 networkctl_sources,
2453 include_directories : includes,
2454 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002455 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002456 install_rpath : rootlibexecdir,
2457 install : true,
2458 install_dir : rootbindir)
2459 public_programs += [exe]
2460endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002461
2462executable('systemd-sulogin-shell',
2463 ['src/sulogin-shell/sulogin-shell.c'],
2464 include_directories : includes,
2465 link_with : [libshared],
2466 install_rpath : rootlibexecdir,
2467 install : true,
2468 install_dir : rootlibexecdir)
2469
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002470############################################################
2471
2472foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002473 sources = tuple[0]
2474 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2475 dependencies = tuple[2]
2476 condition = tuple.length() >= 4 ? tuple[3] : ''
2477 type = tuple.length() >= 5 ? tuple[4] : ''
2478 defs = tuple.length() >= 6 ? tuple[5] : []
2479 incs = tuple.length() >= 7 ? tuple[6] : includes
2480 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002481
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002482 name = sources[0].split('/')[-1].split('.')[0]
2483 if type.startswith('timeout=')
2484 timeout = type.split('=')[1].to_int()
2485 type = ''
2486 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002487 if want_tests == 'false'
2488 message('Not compiling @0@ because tests is set to false'.format(name))
2489 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002490 exe = executable(
2491 name,
2492 sources,
2493 include_directories : incs,
2494 link_with : link_with,
2495 dependencies : dependencies,
2496 c_args : defs,
2497 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002498 install : install_tests,
2499 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002500
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002501 if type == 'manual'
2502 message('@0@ is a manual test'.format(name))
2503 elif type == 'unsafe' and want_tests != 'unsafe'
2504 message('@0@ is an unsafe test'.format(name))
2505 else
2506 test(name, exe,
2507 env : test_env,
2508 timeout : timeout)
2509 endif
2510 else
2511 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2512 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002513endforeach
2514
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002515test_libsystemd_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002516 'test-libsystemd-sym',
2517 test_libsystemd_sym_c,
2518 include_directories : includes,
2519 link_with : [libsystemd],
2520 install : install_tests,
2521 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002522test('test-libsystemd-sym',
2523 test_libsystemd_sym)
2524
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002525test_libudev_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002526 'test-libudev-sym',
2527 test_libudev_sym_c,
2528 include_directories : includes,
2529 c_args : ['-Wno-deprecated-declarations'],
2530 link_with : [libudev],
2531 install : install_tests,
2532 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002533test('test-libudev-sym',
2534 test_libudev_sym)
2535
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002536############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002537
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002538fuzzer_exes = []
2539
2540foreach tuple : fuzzers
2541 sources = tuple[0]
2542 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2543 dependencies = tuple[2]
2544 defs = tuple.length() >= 4 ? tuple[3] : []
2545 incs = tuple.length() >= 5 ? tuple[4] : includes
2546
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002547 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002548 dependencies += fuzzing_engine
2549 else
2550 sources += 'src/fuzz/fuzz-main.c'
2551 endif
2552
2553 name = sources[0].split('/')[-1].split('.')[0]
2554
2555 fuzzer_exes += executable(
2556 name,
2557 sources,
2558 include_directories : [incs, include_directories('src/fuzz')],
2559 link_with : link_with,
2560 dependencies : dependencies,
2561 c_args : defs,
2562 install : false)
2563endforeach
2564
2565run_target('fuzzers',
2566 depends : fuzzer_exes,
2567 command : ['true'])
2568
2569############################################################
2570
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002571make_directive_index_py = find_program('tools/make-directive-index.py')
2572make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002573xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002574hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002575
2576subdir('units')
2577subdir('sysctl.d')
2578subdir('sysusers.d')
2579subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002580subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002581subdir('hwdb')
2582subdir('network')
2583subdir('man')
2584subdir('shell-completion/bash')
2585subdir('shell-completion/zsh')
2586subdir('docs/sysvinit')
2587subdir('docs/var-log')
2588
2589# FIXME: figure out if the warning is true:
2590# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2591install_subdir('factory/etc',
2592 install_dir : factorydir)
2593
2594
2595install_data('xorg/50-systemd-user.sh',
2596 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002597install_data('modprobe.d/systemd.conf',
2598 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002599install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002600 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002601 'NEWS',
2602 'README',
2603 'doc/CODING_STYLE',
2604 'doc/DISTRO_PORTING',
2605 'doc/ENVIRONMENT.md',
2606 'doc/HACKING',
2607 'doc/TRANSIENT-SETTINGS.md',
2608 'doc/TRANSLATORS',
2609 'doc/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002610 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2611 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002612
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002613meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2614meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2615
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002616############################################################
2617
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002618meson_check_help = find_program('tools/meson-check-help.sh')
2619
2620foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002621 name = exec.full_path().split('/')[-1]
2622 test('check-help-' + name,
2623 meson_check_help,
2624 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002625endforeach
2626
2627############################################################
2628
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002629prev = ''
2630foreach p : fuzz_regression_tests
2631 a = p.split('/')[-3]
2632 b = p.split('/')[-2]
2633 c = p.split('/')[-1]
2634
2635 if a == 'address'
2636 build = sanitize_address
2637 else
2638 error('unknown sanitizer @0@'.format(a))
2639 endif
2640
2641 name = '@1@:@0@'.format(a, b)
2642
2643 if name != prev
2644 if want_tests == 'false'
2645 message('Not compiling @0@ because tests is set to false'.format(name))
2646 elif not sanitizers.contains(a)
2647 message('Not compiling @0@ because @1@ sanitizer is not available'.format(name, a))
2648 elif slow_tests
2649 exe = custom_target(
2650 name,
2651 output : name,
2652 depends : build,
2653 command : [env, 'ln', '-fs',
2654 join_paths(build.full_path(), b),
2655 '@OUTPUT@'],
2656 build_by_default : true)
2657 else
2658 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2659 endif
2660 endif
2661 prev = name
2662
2663 if want_tests != 'false' and slow_tests
2664 test(c, env, args : [exe.full_path(),
2665 join_paths(meson.source_root(),
2666 'test/fuzz-regressions',
2667 p)])
2668 endif
2669endforeach
2670
2671############################################################
2672
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002673if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002674 all_files = run_command(
2675 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002676 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002677 'ls-files',
2678 ':/*.[ch]'])
2679 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002680
userwithuide85a6902017-08-09 13:41:44 +00002681 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002682 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002683 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002684 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002685 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002686 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002687 output : 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002688 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002689endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002690
2691if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002692 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002693 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002694 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002695 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002696endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002697
2698if git.found()
2699 git_head = run_command(
2700 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002701 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002702 'rev-parse', 'HEAD']).stdout().strip()
2703 git_head_short = run_command(
2704 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002705 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002706 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2707
2708 run_target(
2709 'git-snapshot',
2710 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002711 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002712 git_head_short),
2713 '--prefix', 'systemd-@0@/'.format(git_head),
2714 'HEAD'])
2715endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002716
2717############################################################
2718
Lennart Poettering51b13862017-12-20 12:51:14 +01002719meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2720run_target(
2721 'check-api-docs',
2722 depends : [man, libsystemd, libudev],
2723 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2724
2725############################################################
2726
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002727status = [
2728 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2729
Yu Watanabe359b4962017-11-25 20:35:24 +09002730 'prefix directory: @0@'.format(prefixdir),
2731 'rootprefix directory: @0@'.format(rootprefixdir),
2732 'sysconf directory: @0@'.format(sysconfdir),
2733 'include directory: @0@'.format(includedir),
2734 'lib directory: @0@'.format(libdir),
2735 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002736 'SysV init scripts: @0@'.format(sysvinit_path),
2737 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002738 'PAM modules directory: @0@'.format(pamlibdir),
2739 'PAM configuration directory: @0@'.format(pamconfdir),
2740 'RPM macros directory: @0@'.format(rpmmacrosdir),
2741 'modprobe.d directory: @0@'.format(modprobedir),
2742 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2743 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2744 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2745 'bash completions directory: @0@'.format(bashcompletiondir),
2746 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002747 'extra start script: @0@'.format(get_option('rc-local')),
2748 'extra stop script: @0@'.format(get_option('halt-local')),
2749 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2750 get_option('debug-tty')),
2751 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002752 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002753 'maximum system UID: @0@'.format(system_uid_max),
2754 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002755 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2756 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2757 'minimum container UID base: @0@'.format(container_uid_base_min),
2758 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002759 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002760 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002761 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002762 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002763 'nobody user name: @0@'.format(nobody_user),
2764 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002765 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002766 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002767
2768 'default DNSSEC mode: @0@'.format(default_dnssec),
2769 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2770 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2771
2772alt_dns_servers = '\n '.join(dns_servers.split(' '))
2773alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2774status += [
2775 'default DNS servers: @0@'.format(alt_dns_servers),
2776 'default NTP servers: @0@'.format(alt_ntp_servers)]
2777
2778alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2779 '@@0@'.format(time_epoch)).stdout().strip()
2780status += [
2781 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2782
2783# TODO:
2784# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2785# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2786# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2787
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002788if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002789 status += [
2790 'efi arch: @0@'.format(efi_arch)]
2791
2792 if have_gnu_efi
2793 status += [
2794 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2795 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002796 'EFI lib directory: @0@'.format(efi_libdir),
2797 'EFI lds directory: @0@'.format(efi_ldsdir),
2798 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002799 endif
2800endif
2801
2802found = []
2803missing = []
2804
2805foreach tuple : [
2806 ['libcryptsetup'],
2807 ['PAM'],
2808 ['AUDIT'],
2809 ['IMA'],
2810 ['AppArmor'],
2811 ['SELinux'],
2812 ['SECCOMP'],
2813 ['SMACK'],
2814 ['zlib'],
2815 ['xz'],
2816 ['lz4'],
2817 ['bzip2'],
2818 ['ACL'],
2819 ['gcrypt'],
2820 ['qrencode'],
2821 ['microhttpd'],
2822 ['gnutls'],
2823 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002824 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002825 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002826 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002827 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002828 ['libiptc'],
2829 ['elfutils'],
2830 ['binfmt'],
2831 ['vconsole'],
2832 ['quotacheck'],
2833 ['tmpfiles'],
2834 ['environment.d'],
2835 ['sysusers'],
2836 ['firstboot'],
2837 ['randomseed'],
2838 ['backlight'],
2839 ['rfkill'],
2840 ['logind'],
2841 ['machined'],
2842 ['importd'],
2843 ['hostnamed'],
2844 ['timedated'],
2845 ['timesyncd'],
2846 ['localed'],
2847 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002848 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002849 ['coredump'],
2850 ['polkit'],
2851 ['legacy pkla', install_polkit_pkla],
2852 ['efi'],
2853 ['gnu-efi', have_gnu_efi],
2854 ['kmod'],
2855 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01002856 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002857 ['blkid'],
2858 ['dbus'],
2859 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002860 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002861 ['hwdb'],
2862 ['tpm'],
2863 ['man pages', want_man],
2864 ['html pages', want_html],
2865 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002866 ['split /usr', conf.get('HAVE_SPLIT_USR') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002867 ['SysV compat'],
2868 ['utmp'],
2869 ['ldconfig'],
2870 ['hibernate'],
2871 ['adm group', get_option('adm-group')],
2872 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002873 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002874 ['debug hashmap'],
2875 ['debug mmap cache'],
2876]
2877
2878 cond = tuple.get(1, '')
2879 if cond == ''
2880 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2881 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002882 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002883 endif
2884 if cond
2885 found += [tuple[0]]
2886 else
2887 missing += [tuple[0]]
2888 endif
2889endforeach
2890
2891status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002892 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002893 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002894 '',
2895 'disabled features: @0@'.format(', '.join(missing)),
2896 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002897message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002898
2899if rootprefixdir != rootprefix_default
2900 message('WARNING:\n' +
2901 ' Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2902 ' systemd used fixed names for unit file directories and other paths, so anything\n' +
2903 ' except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
2904endif