blob: def2351f210349affdf6f6f79979a601dcb56d70 [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-Szmekba7f4ae2018-02-28 10:20:48 +010063rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010064if 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')
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010090rootsbindir = join_paths(rootprefixdir, 'sbin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040091rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
92
93rootlibdir = get_option('rootlibdir')
94if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040095 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040096endif
97
98# Dirs of external packages
Michael Bieble17e5ba2017-04-13 10:30:56 -040099pkgconfigdatadir = join_paths(datadir, 'pkgconfig')
100pkgconfiglibdir = join_paths(libdir, 'pkgconfig')
101polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
102polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
103polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
104varlogdir = join_paths(localstatedir, 'log')
105xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900106rpmmacrosdir = get_option('rpmmacrosdir')
107if rpmmacrosdir != 'no'
108 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
109endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200110modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400111
112# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400113pkgdatadir = join_paths(datadir, 'systemd')
114environmentdir = join_paths(prefixdir, 'lib/environment.d')
115pkgsysconfdir = join_paths(sysconfdir, 'systemd')
116userunitdir = join_paths(prefixdir, 'lib/systemd/user')
117userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
118tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
119sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
120sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
121binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
122modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
123networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
124pkgincludedir = join_paths(includedir, 'systemd')
125systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
126usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
127systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
128userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
129systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
130systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
131systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
132systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
133udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
134udevhomedir = udevlibexecdir
135udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
136udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
137catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
138kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
139factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400140bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
141testsdir = join_paths(prefixdir, 'lib/systemd/tests')
142systemdstatedir = join_paths(localstatedir, 'lib/systemd')
143catalogstatedir = join_paths(systemdstatedir, 'catalog')
144randomseeddir = join_paths(localstatedir, 'lib/systemd')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400145
tblume75aaade2018-02-01 22:46:15 +0100146docdir = get_option('docdir')
147if docdir == ''
148 docdir = join_paths(datadir, 'doc/systemd')
149endif
150
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400151dbuspolicydir = get_option('dbuspolicydir')
152if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400153 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400154endif
155
156dbussessionservicedir = get_option('dbussessionservicedir')
157if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400158 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400159endif
160
161dbussystemservicedir = get_option('dbussystemservicedir')
162if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400163 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400164endif
165
166pamlibdir = get_option('pamlibdir')
167if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400168 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400169endif
170
171pamconfdir = get_option('pamconfdir')
172if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400173 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400174endif
175
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100176memory_accounting_default = get_option('memory-accounting-default')
177
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400178conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400179conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400180conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
181conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
182conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400183conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
184conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400185conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400186conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
187conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400188conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
189conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
190conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
191conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100192conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100193conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400194conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
195conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
196conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
197conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
198conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100199conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400200conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400201conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
202conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400203conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
204conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
205conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
206conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
207conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
208conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400209conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
210conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400211conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400212conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400213conf.set_quoted('LIBDIR', libdir)
214conf.set_quoted('ROOTLIBDIR', rootlibdir)
215conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
216conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400217conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
218conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
219conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
220conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
221conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
222conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100223conf.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'true' : 'false')
224conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_ON_OFF', memory_accounting_default ? 'on' : 'off')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400225
226conf.set_quoted('ABS_BUILD_DIR', meson.build_root())
227conf.set_quoted('ABS_SRC_DIR', meson.source_root())
228
229substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400230substs.set('exec_prefix', prefixdir)
231substs.set('libdir', libdir)
232substs.set('rootlibdir', rootlibdir)
233substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400234substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400235substs.set('bindir', bindir)
236substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400237substs.set('rootlibexecdir', rootlibexecdir)
238substs.set('systemunitdir', systemunitdir)
239substs.set('userunitdir', userunitdir)
240substs.set('systempresetdir', systempresetdir)
241substs.set('userpresetdir', userpresetdir)
242substs.set('udevhwdbdir', udevhwdbdir)
243substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400244substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400245substs.set('catalogdir', catalogdir)
246substs.set('tmpfilesdir', tmpfilesdir)
247substs.set('sysusersdir', sysusersdir)
248substs.set('sysctldir', sysctldir)
249substs.set('binfmtdir', binfmtdir)
250substs.set('modulesloaddir', modulesloaddir)
251substs.set('systemgeneratordir', systemgeneratordir)
252substs.set('usergeneratordir', usergeneratordir)
253substs.set('systemenvgeneratordir', systemenvgeneratordir)
254substs.set('userenvgeneratordir', userenvgeneratordir)
255substs.set('systemshutdowndir', systemshutdowndir)
256substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400257substs.set('VARLOGDIR', varlogdir)
258substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400259substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
260substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400261substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
262substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
263substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
264substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100265substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400266
267#####################################################################
268
269cc = meson.get_compiler('c')
270pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400271check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100272meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400273
Adam Duskett08318a22018-01-15 06:25:46 -0500274if get_option('tests') != 'false'
275 cxx = find_program('c++', required : false)
276 if cxx.found()
277 # Used only for tests
278 add_languages('cpp')
279 endif
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400280endif
281
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500282want_ossfuzz = get_option('oss-fuzz')
283want_libfuzzer = get_option('llvm-fuzz')
284fuzzer_build = want_ossfuzz or want_libfuzzer
285if want_ossfuzz and want_libfuzzer
286 error('only one of oss-fuzz and llvm-fuzz can be specified')
287endif
288if want_libfuzzer
289 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
290endif
291if want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500292 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
293endif
294
Zbigniew Jędrzejewski-Szmek75cf1d62017-07-04 17:59:15 -0400295foreach arg : ['-Wextra',
Zbigniew Jędrzejewski-Szmek70160ce2017-10-03 12:11:49 +0200296 '-Werror=undef',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400297 '-Wlogical-op',
298 '-Wmissing-include-dirs',
299 '-Wold-style-definition',
300 '-Wpointer-arith',
301 '-Winit-self',
302 '-Wdeclaration-after-statement',
303 '-Wfloat-equal',
304 '-Wsuggest-attribute=noreturn',
305 '-Werror=missing-prototypes',
306 '-Werror=implicit-function-declaration',
307 '-Werror=missing-declarations',
308 '-Werror=return-type',
309 '-Werror=incompatible-pointer-types',
310 '-Werror=format=2',
311 '-Wstrict-prototypes',
312 '-Wredundant-decls',
313 '-Wmissing-noreturn',
Zbigniew Jędrzejewski-Szmek97279d82017-11-20 14:23:40 +0100314 '-Wimplicit-fallthrough=5',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400315 '-Wshadow',
316 '-Wendif-labels',
317 '-Wstrict-aliasing=2',
318 '-Wwrite-strings',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400319 '-Werror=overflow',
320 '-Wdate-time',
321 '-Wnested-externs',
322 '-ffast-math',
323 '-fno-common',
324 '-fdiagnostics-show-option',
325 '-fno-strict-aliasing',
326 '-fvisibility=hidden',
327 '-fstack-protector',
328 '-fstack-protector-strong',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400329 '--param=ssp-buffer-size=4',
330 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400331 if cc.has_argument(arg)
332 add_project_arguments(arg, language : 'c')
333 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400334endforeach
335
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500336# the oss-fuzz fuzzers are not built with -fPIE, so don't
337# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500338if not fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500339 if cc.has_argument('-fPIE')
340 add_project_arguments('-fPIE', language : 'c')
341 endif
342endif
343
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400344# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
345# arguments, just emits a warnings. So test for the "positive" version instead.
346foreach arg : ['unused-parameter',
347 'missing-field-initializers',
348 'unused-result',
Zbigniew Jędrzejewski-Szmekfb1b5882017-09-04 19:49:12 +0300349 'format-signedness',
350 'error=nonnull', # work-around for gcc 7.1 turning this on on its own
351 ]
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400352 if cc.has_argument('-W' + arg)
353 add_project_arguments('-Wno-' + arg, language : 'c')
354 endif
355endforeach
356
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800357if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400358 #include <time.h>
359 #include <inttypes.h>
360 typedef uint64_t usec_t;
361 usec_t now(clockid_t clock);
362 int main(void) {
363 struct timespec now;
364 return 0;
365 }
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800366''', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400367 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400368endif
369
370if cc.get_id() == 'clang'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400371 foreach arg : ['-Wno-typedef-redefinition',
372 '-Wno-gnu-variable-sized-type-not-at-end',
373 ]
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400374 if cc.has_argument(arg,
375 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400376 add_project_arguments(arg, language : 'c')
377 endif
378 endforeach
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400379endif
380
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400381link_test_c = files('tools/meson-link-test.c')
382
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400383# --as-needed and --no-undefined are provided by meson by default,
384# run mesonconf to see what is enabled
385foreach arg : ['-Wl,-z,relro',
386 '-Wl,-z,now',
387 '-pie',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400388 ]
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400389
390 have = run_command(check_compilation_sh,
391 cc.cmd_array(), '-x', 'c', arg,
392 '-include', link_test_c).returncode() == 0
393 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500394 if have and (arg != '-pie' or not fuzzer_build)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400395 add_project_link_arguments(arg, language : 'c')
396 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400397endforeach
398
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100399# Check if various sanitizers are supported
400sanitizers = []
401foreach arg : ['address']
402
403 have = run_command(check_compilation_sh,
404 cc.cmd_array(), '-x', 'c',
405 '-fsanitize=@0@'.format(arg),
406 '-include', link_test_c).returncode() == 0
407 message('@0@ sanitizer supported: @1@'.format(arg, have ? 'yes' : 'no'))
408 if have
409 sanitizers += arg
410 endif
411endforeach
412
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400413if get_option('buildtype') != 'debug'
414 foreach arg : ['-ffunction-sections',
415 '-fdata-sections']
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400416 if cc.has_argument(arg,
417 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400418 add_project_arguments(arg, language : 'c')
419 endif
420 endforeach
421
422 foreach arg : ['-Wl,--gc-sections']
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400423 have = run_command(check_compilation_sh,
424 cc.cmd_array(), '-x', 'c', arg,
425 '-include', link_test_c).returncode() == 0
426 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
427 if have
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400428 add_project_link_arguments(arg, language : 'c')
429 endif
430 endforeach
431endif
432
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400433cpp = ' '.join(cc.cmd_array()) + ' -E'
434
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400435#####################################################################
436# compilation result tests
437
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400438conf.set('_GNU_SOURCE', true)
439conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400440
441conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
442conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
443conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
444conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
445conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
446conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
447conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
448
449decl_headers = '''
450#include <uchar.h>
451#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000452#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100453#include <linux/stat.h>
454#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400455'''
456# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
457
458foreach decl : ['char16_t',
459 'char32_t',
460 'key_serial_t',
461 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000462 'struct fib_rule_uid_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100463 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400464 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400465
466 # We get -1 if the size cannot be determined
467 have = cc.sizeof(decl, prefix : decl_headers) > 0
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200468 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400469endforeach
470
471foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
472 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
473 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
474 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530475 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400476 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
477 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
478 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
479 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
480 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530481 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400482 # if_tunnel.h is buggy and cannot be included on its own
483 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
484 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
485 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
486 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
487 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
488 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
489 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530490 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400491 ['NDA_IFINDEX', 'linux/neighbour.h'],
492 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000493 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400494 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530495 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400496 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400497 prefix = decl.length() > 2 ? decl[2] : ''
498 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200499 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400500endforeach
501
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400502foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200503 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400504endforeach
505
506foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100507 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100508 ['gettid', '''#include <sys/types.h>
509 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100510 ['pivot_root', '''#include <stdlib.h>
511 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100512 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400513 #include <sys/stat.h>
514 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100515 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100516 ['renameat2', '''#include <stdio.h>
517 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400518 ['kcmp', '''#include <linux/kcmp.h>'''],
519 ['keyctl', '''#include <sys/types.h>
520 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100521 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400522 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200523 ['bpf', '''#include <sys/syscall.h>
524 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100525 ['statx', '''#include <sys/types.h>
526 #include <sys/stat.h>
527 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100528 ['explicit_bzero' , '''#include <string.h>'''],
529 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400530]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400531
Lennart Poettering85db59b2017-12-25 12:01:14 +0100532 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200533 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400534endforeach
535
Lennart Poettering85db59b2017-12-25 12:01:14 +0100536if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200537 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200538 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400539else
540 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200541 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200542 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400543endif
544
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400545#####################################################################
546
547sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400548awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400549m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400550stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400551git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100552env = find_program('env')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400553
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400554meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400555mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400556test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
557splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400558
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400559# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
560# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500561progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400562 ['quotacheck', '/usr/sbin/quotacheck' ],
563 ['kill', '/usr/bin/kill' ],
564 ['kmod', '/usr/bin/kmod' ],
565 ['kexec', '/usr/sbin/kexec' ],
566 ['sulogin', '/usr/sbin/sulogin' ],
567 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
568 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
569 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
570 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
571 ]
572foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400573 path = get_option(prog[0] + '-path')
574 if path != ''
575 message('Using @1@ for @0@'.format(prog[0], path))
576 else
577 exe = find_program(prog[0],
578 '/usr/sbin/' + prog[0],
579 '/sbin/' + prog[0],
580 required: false)
581 path = exe.found() ? exe.path() : prog[1]
582 endif
583 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
584 conf.set_quoted(name, path)
585 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400586endforeach
587
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500588conf.set_quoted('TELINIT', get_option('telinit-path'))
589
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400590if run_command('ln', '--relative', '--help').returncode() != 0
591 error('ln does not support --relative')
592endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400593
594############################################################
595
596gperf = find_program('gperf')
597
598gperf_test_format = '''
599#include <string.h>
600const char * in_word_set(const char *, @0@);
601@1@
602'''
603gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
604gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
605gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
606if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400607 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400608else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400609 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
610 if cc.compiles(gperf_test)
611 gperf_len_type = 'unsigned'
612 else
613 error('unable to determine gperf len type')
614 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400615endif
616message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400617conf.set('GPERF_LEN_TYPE', gperf_len_type,
618 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400619
620############################################################
621
622if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400623 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400624endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100625foreach header : ['crypt.h',
626 'linux/btrfs.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400627 'linux/memfd.h',
628 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200629 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400630 'valgrind/memcheck.h',
631 'valgrind/valgrind.h',
632 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400633
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200634 conf.set10('HAVE_' + header.underscorify().to_upper(),
635 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400636endforeach
637
638############################################################
639
640conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400641conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
642gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400643
644default_hierarchy = get_option('default-hierarchy')
645conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
646 description : 'default cgroup hierarchy as string')
647if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400648 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400649elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400650 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400651else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400652 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400653endif
654
655time_epoch = get_option('time-epoch')
656if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400657 NEWS = files('NEWS')
658 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400659endif
660time_epoch = time_epoch.to_int()
661conf.set('TIME_EPOCH', time_epoch)
662
663system_uid_max = get_option('system-uid-max')
664if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400665 system_uid_max = run_command(
666 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800667 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
668 '/etc/login.defs').stdout().strip()
669 if system_uid_max == ''
670 system_uid_max = '999'
671 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400672endif
673system_uid_max = system_uid_max.to_int()
674conf.set('SYSTEM_UID_MAX', system_uid_max)
675substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400676message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400677
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400678system_gid_max = get_option('system-gid-max')
679if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400680 system_gid_max = run_command(
681 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800682 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
683 '/etc/login.defs').stdout().strip()
684 if system_gid_max == ''
685 system_gid_max = '999'
686 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400687endif
688system_gid_max = system_gid_max.to_int()
689conf.set('SYSTEM_GID_MAX', system_gid_max)
690substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400691message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400692
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100693dynamic_uid_min = get_option('dynamic-uid-min').to_int()
694dynamic_uid_max = get_option('dynamic-uid-max').to_int()
695conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
696conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
697substs.set('dynamicuidmin', dynamic_uid_min)
698substs.set('dynamicuidmax', dynamic_uid_max)
699
700container_uid_base_min = get_option('container-uid-base-min').to_int()
701container_uid_base_max = get_option('container-uid-base-max').to_int()
702conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
703conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
704substs.set('containeruidbasemin', container_uid_base_min)
705substs.set('containeruidbasemax', container_uid_base_max)
706
Lennart Poetteringafde4572017-12-05 11:00:24 +0100707nobody_user = get_option('nobody-user')
708nobody_group = get_option('nobody-group')
709
710getent_result = run_command('getent', 'passwd', '65534')
711if getent_result.returncode() == 0
712 name = getent_result.stdout().split(':')[0]
713 if name != nobody_user
714 message('WARNING:\n' +
715 ' 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) +
716 ' Your build will result in an user table setup that is incompatible with the local system.')
717 endif
718endif
719id_result = run_command('id', '-u', nobody_user)
720if id_result.returncode() == 0
721 id = id_result.stdout().to_int()
722 if id != 65534
723 message('WARNING:\n' +
724 ' 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) +
725 ' Your build will result in an user table setup that is incompatible with the local system.')
726 endif
727endif
728
729getent_result = run_command('getent', 'group', '65534')
730if getent_result.returncode() == 0
731 name = getent_result.stdout().split(':')[0]
732 if name != nobody_group
733 message('WARNING:\n' +
734 ' 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) +
735 ' Your build will result in an group table setup that is incompatible with the local system.')
736 endif
737endif
738id_result = run_command('id', '-g', nobody_group)
739if id_result.returncode() == 0
740 id = id_result.stdout().to_int()
741 if id != 65534
742 message('WARNING:\n' +
743 ' 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) +
744 ' Your build will result in an group table setup that is incompatible with the local system.')
745 endif
746endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900747if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
748 message('WARNING:\n' +
749 ' The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
750 ' Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
751endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100752
753conf.set_quoted('NOBODY_USER_NAME', nobody_user)
754conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900755substs.set('NOBODY_USER_NAME', nobody_user)
756substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100757
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400758tty_gid = get_option('tty-gid')
759conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400760substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400761
Ikey Doherty84786b82017-12-03 12:28:23 +0000762# Ensure provided GID argument is numeric, otherwise fallback to default assignment
763if get_option('users-gid') != ''
Yu Watanabed6806872017-12-05 14:01:39 +0900764 users_gid = get_option('users-gid').to_int()
Ikey Doherty84786b82017-12-03 12:28:23 +0000765else
Yu Watanabed6806872017-12-05 14:01:39 +0900766 users_gid = '-'
Ikey Doherty84786b82017-12-03 12:28:23 +0000767endif
768substs.set('USERS_GID', users_gid)
769
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400770if get_option('adm-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400771 m4_defines += ['-DENABLE_ADM_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400772endif
773
774if get_option('wheel-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400775 m4_defines += ['-DENABLE_WHEEL_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400776endif
777
778substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700779substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400780
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400781kill_user_processes = get_option('default-kill-user-processes')
782conf.set10('KILL_USER_PROCESSES', kill_user_processes)
783substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400784
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400785dns_servers = get_option('dns-servers')
786conf.set_quoted('DNS_SERVERS', dns_servers)
787substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400788
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400789ntp_servers = get_option('ntp-servers')
790conf.set_quoted('NTP_SERVERS', ntp_servers)
791substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400792
793conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
794
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400795substs.set('SUSHELL', get_option('debug-shell'))
796substs.set('DEBUGTTY', get_option('debug-tty'))
797
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400798debug = get_option('debug')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200799enable_debug_hashmap = false
800enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400801if debug != ''
802 foreach name : debug.split(',')
803 if name == 'hashmap'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200804 enable_debug_hashmap = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400805 elif name == 'mmap-cache'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200806 enable_debug_mmap_cache = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400807 else
808 message('unknown debug option "@0@", ignoring'.format(name))
809 endif
810 endforeach
811endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200812conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
813conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400814
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400815#####################################################################
816
817threads = dependency('threads')
818librt = cc.find_library('rt')
819libm = cc.find_library('m')
820libdl = cc.find_library('dl')
821libcrypt = cc.find_library('crypt')
822
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400823libcap = dependency('libcap', required : false)
824if not libcap.found()
825 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
826 libcap = cc.find_library('cap')
827endif
828
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400829libmount = dependency('mount',
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -0500830 version : '>= 2.30',
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500831 required : not fuzzer_build)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400832
833want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500834if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400835 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400836 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400837 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200838 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400839else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200840 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400841 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400842endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200843conf.set10('HAVE_SECCOMP', have)
844m4_defines += have ? ['-DHAVE_SECCOMP'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400845
846want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500847if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400848 libselinux = dependency('libselinux',
849 version : '>= 2.1.9',
850 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200851 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400852else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200853 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400854 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400855endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200856conf.set10('HAVE_SELINUX', have)
857m4_defines += have ? ['-DHAVE_SELINUX'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400858
859want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500860if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400861 libapparmor = dependency('libapparmor',
862 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200863 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400864else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200865 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400866 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400867endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200868conf.set10('HAVE_APPARMOR', have)
869m4_defines += have ? ['-DHAVE_APPARMOR'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400870
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400871smack_run_label = get_option('smack-run-label')
872if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400873 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
874 m4_defines += ['-DHAVE_SMACK_RUN_LABEL']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400875endif
876
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400877want_polkit = get_option('polkit')
878install_polkit = false
879install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500880if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400881 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400882
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400883 libpolkit = dependency('polkit-gobject-1',
884 required : false)
885 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
886 message('Old polkit detected, will install pkla files')
887 install_polkit_pkla = true
888 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400889endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200890conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400891
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400892want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500893if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400894 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200895 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400896else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200897 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400898 libacl = []
899endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200900conf.set10('HAVE_ACL', have)
901m4_defines += have ? ['-DHAVE_ACL'] : []
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400902
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400903want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500904if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400905 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200906 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400907else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200908 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400909 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400910endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200911conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400912
913want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500914if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400915 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200916 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400917else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200918 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400919 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400920endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200921conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400922
923want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500924if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400925 libkmod = dependency('libkmod',
926 version : '>= 15',
927 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200928 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400929else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200930 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400931 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400932endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200933conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400934
935want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500936if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400937 libpam = cc.find_library('pam', required : want_pam == 'true')
938 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200939 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400940else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200941 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400942 libpam = []
943 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400944endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200945conf.set10('HAVE_PAM', have)
946m4_defines += have ? ['-DHAVE_PAM'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400947
948want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500949if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400950 libmicrohttpd = dependency('libmicrohttpd',
951 version : '>= 0.9.33',
952 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200953 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400954else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200955 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400956 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400957endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200958conf.set10('HAVE_MICROHTTPD', have)
959m4_defines += have ? ['-DHAVE_MICROHTTPD'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400960
961want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500962if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400963 libcryptsetup = dependency('libcryptsetup',
964 version : '>= 1.6.0',
965 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200966 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400967else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200968 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400969 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400970endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200971conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400972
973want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500974if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400975 libcurl = dependency('libcurl',
976 version : '>= 7.32.0',
977 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200978 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400979else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200980 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400981 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400982endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200983conf.set10('HAVE_LIBCURL', have)
984m4_defines += have ? ['-DHAVE_LIBCURL'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400985
986want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400987want_libidn2 = get_option('libidn2')
988if want_libidn == 'true' and want_libidn2 == 'true'
989 error('libidn and libidn2 cannot be requested simultaneously')
990endif
991
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500992if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400993 libidn = dependency('libidn',
994 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200995 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400996else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200997 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400998 libidn = []
999endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001000conf.set10('HAVE_LIBIDN', have)
1001m4_defines += have ? ['-DHAVE_LIBIDN'] : []
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001002if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001003 # libidn is used for both libidn and libidn2 objects
1004 libidn = dependency('libidn2',
1005 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001006 have = libidn.found()
1007else
1008 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001009endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001010conf.set10('HAVE_LIBIDN2', have)
1011m4_defines += have ? ['-DHAVE_LIBIDN2'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001012
1013want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001014if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001015 libiptc = dependency('libiptc',
1016 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001017 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001018else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001019 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001020 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001021endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001022conf.set10('HAVE_LIBIPTC', have)
1023m4_defines += have ? ['-DHAVE_LIBIPTC'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001024
1025want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001026if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001027 libqrencode = dependency('libqrencode',
1028 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001029 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001030else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001031 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001032 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001033endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001034conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001035
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001036want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001037if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001038 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1039 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001040 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001041else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001042 have = false
1043endif
1044if not have
1045 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001046 libgcrypt = []
1047 libgpg_error = []
1048endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001049conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001050
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001051want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001052if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001053 libgnutls = dependency('gnutls',
1054 version : '>= 3.1.4',
1055 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001056 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001057else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001058 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001059 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001060endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001061conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001062
1063want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001064if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001065 libdw = dependency('libdw',
1066 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001067 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001068else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001069 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001070 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001071endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001072conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001073
1074want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001075if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001076 libz = dependency('zlib',
1077 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001078 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001079else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001080 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001081 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001082endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001083conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001084
1085want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001086if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001087 libbzip2 = cc.find_library('bz2',
1088 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001089 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001090else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001091 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001092 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001093endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001094conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001095
1096want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001097if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001098 libxz = dependency('liblzma',
1099 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001100 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001101else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001102 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001103 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001104endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001105conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001106
1107want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001108if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001109 liblz4 = dependency('liblz4',
1110 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001111 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001112else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001113 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001114 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001115endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001116conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001117
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001118want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001119if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001120 libxkbcommon = dependency('xkbcommon',
1121 version : '>= 0.3.0',
1122 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001123 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001124else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001125 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001126 libxkbcommon = []
1127endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001128conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001129
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001130want_pcre2 = get_option('pcre2')
1131if want_pcre2 != 'false'
1132 libpcre2 = dependency('libpcre2-8',
1133 required : want_pcre2 == 'true')
1134 have = libpcre2.found()
1135else
1136 have = false
1137 libpcre2 = []
1138endif
1139conf.set10('HAVE_PCRE2', have)
1140
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001141want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001142if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001143 libglib = dependency('glib-2.0',
1144 version : '>= 2.22.0',
1145 required : want_glib == 'true')
1146 libgobject = dependency('gobject-2.0',
1147 version : '>= 2.22.0',
1148 required : want_glib == 'true')
1149 libgio = dependency('gio-2.0',
1150 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001151 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001152else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001153 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001154 libglib = []
1155 libgobject = []
1156 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001157endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001158conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001159
1160want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001161if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001162 libdbus = dependency('dbus-1',
1163 version : '>= 1.3.2',
1164 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001165 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001166else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001167 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001168 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001169endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001170conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001171
Yu Watanabe42303dc2017-06-18 05:22:32 +09001172default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001173if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001174 default_dnssec = 'no'
1175endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001176if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001177 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1178 default_dnssec = 'no'
1179endif
1180conf.set('DEFAULT_DNSSEC_MODE',
1181 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1182substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1183
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001184want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001185if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001186 have = (conf.get('HAVE_LIBCURL') == 1 and
1187 conf.get('HAVE_ZLIB') == 1 and
1188 conf.get('HAVE_BZIP2') == 1 and
1189 conf.get('HAVE_XZ') == 1 and
1190 conf.get('HAVE_GCRYPT') == 1)
1191 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001192 error('importd support was requested, but dependencies are not available')
1193 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001194else
1195 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001196endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001197conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001198
1199want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001200if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001201 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1202 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001203 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1204 # it's possible to build one without the other. Complain only if
1205 # support was explictly requested. The auxiliary files like sysusers
1206 # config should be installed when any of the programs are built.
1207 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1208 error('remote support was requested, but dependencies are not available')
1209 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001210 have = have_deps[0] or have_deps[1]
1211else
1212 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001213endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001214conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001215
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001216foreach term : ['utmp',
1217 'hibernate',
1218 'environment-d',
1219 'binfmt',
1220 'coredump',
1221 'resolve',
1222 'logind',
1223 'hostnamed',
1224 'localed',
1225 'machined',
1226 'networkd',
1227 'timedated',
1228 'timesyncd',
1229 'myhostname',
1230 'firstboot',
1231 'randomseed',
1232 'backlight',
1233 'vconsole',
1234 'quotacheck',
1235 'sysusers',
1236 'tmpfiles',
1237 'hwdb',
1238 'rfkill',
1239 'ldconfig',
1240 'efi',
1241 'tpm',
1242 'ima',
1243 'smack',
1244 'gshadow',
1245 'idn',
1246 'nss-systemd']
1247 have = get_option(term)
1248 name = 'ENABLE_' + term.underscorify().to_upper()
1249 conf.set10(name, have)
1250 m4_defines += have ? ['-D' + name] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001251endforeach
1252
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001253want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001254install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001255slow_tests = get_option('slow-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001256tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001257fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001258
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001259conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001260
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001261#####################################################################
1262
1263if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001264 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001265
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001266 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001267 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001268 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001269 elif efi_arch == 'x86_64'
1270 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001271 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001272 elif efi_arch == 'arm'
1273 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001274 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001275 elif efi_arch == 'aarch64'
1276 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001277 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001278 else
1279 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001280 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001281 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001282
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001283 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001284 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001285
1286 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001287else
1288 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001289endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001290conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001291
1292#####################################################################
1293
1294config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001295 output : 'config.h',
1296 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001297
1298includes = include_directories('src/basic',
1299 'src/shared',
1300 'src/systemd',
1301 'src/journal',
1302 'src/resolve',
1303 'src/timesync',
1304 'src/login',
1305 'src/udev',
1306 'src/libudev',
1307 'src/core',
1308 'src/libsystemd/sd-bus',
1309 'src/libsystemd/sd-device',
1310 'src/libsystemd/sd-hwdb',
1311 'src/libsystemd/sd-id128',
1312 'src/libsystemd/sd-netlink',
1313 'src/libsystemd/sd-network',
1314 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001315 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001316
1317add_project_arguments('-include', 'config.h', language : 'c')
1318
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001319subdir('po')
1320subdir('catalog')
1321subdir('src/systemd')
1322subdir('src/basic')
1323subdir('src/libsystemd')
1324subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001325subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001326subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001327
1328libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001329 'journal-core',
1330 libjournal_core_sources,
1331 journald_gperf_c,
1332 include_directories : includes,
1333 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001334
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001335libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001336libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001337 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001338 '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 +02001339 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001340 include_directories : includes,
1341 link_args : ['-shared',
1342 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001343 link_with : [libbasic,
1344 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001345 link_whole : [libsystemd_static,
1346 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001347 dependencies : [threads,
1348 librt,
1349 libxz,
1350 liblz4],
1351 link_depends : libsystemd_sym,
1352 install : true,
1353 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001354
1355############################################################
1356
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001357# binaries that have --help and are intended for use by humans,
1358# usually, but not always, installed in /bin.
1359public_programs = []
1360
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001361subdir('src/libudev')
1362subdir('src/shared')
1363subdir('src/core')
1364subdir('src/udev')
1365subdir('src/network')
1366
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001367subdir('src/analyze')
1368subdir('src/journal-remote')
1369subdir('src/coredump')
1370subdir('src/hostname')
1371subdir('src/import')
1372subdir('src/kernel-install')
1373subdir('src/locale')
1374subdir('src/machine')
1375subdir('src/nspawn')
1376subdir('src/resolve')
1377subdir('src/timedate')
1378subdir('src/timesync')
1379subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001380subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001381
1382subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001383subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001384subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001385subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001386
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001387############################################################
1388
1389# only static linking apart from libdl, to make sure that the
1390# module is linked to all libraries that it uses.
1391test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001392 'test-dlopen',
1393 test_dlopen_c,
1394 include_directories : includes,
1395 link_with : [libbasic],
1396 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001397
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001398foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001399 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001400 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001401 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001402
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001403 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001404 if condition
1405 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001406
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001407 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1408 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001409
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001410 nss = shared_library(
1411 'nss_' + module,
1412 'src/nss-@0@/nss-@0@.c'.format(module),
1413 version : '2',
1414 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001415 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1416 link_args : ['-Wl,-z,nodelete',
1417 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001418 '-Wl,--version-script=' + version_script_arg,
1419 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001420 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001421 libbasic],
1422 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001423 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001424 link_depends : sym,
1425 install : true,
1426 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001427
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001428 # We cannot use shared_module because it does not support version suffix.
1429 # Unfortunately shared_library insists on creating the symlink…
1430 meson.add_install_script('sh', '-c',
1431 'rm $DESTDIR@0@/libnss_@1@.so'
1432 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001433
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001434 test('dlopen-nss_' + module,
1435 test_dlopen,
1436 args : [nss.full_path()]) # path to dlopen must include a slash
1437 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001438endforeach
1439
1440############################################################
1441
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001442executable('systemd',
1443 systemd_sources,
1444 include_directories : includes,
1445 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001446 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001447 dependencies : [threads,
1448 librt,
1449 libseccomp,
1450 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001451 libmount,
1452 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001453 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001454 install : true,
1455 install_dir : rootlibexecdir)
1456
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001457meson.add_install_script(meson_make_symlink,
1458 join_paths(rootlibexecdir, 'systemd'),
1459 join_paths(rootsbindir, 'init'))
1460
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001461exe = executable('systemd-analyze',
1462 systemd_analyze_sources,
1463 include_directories : includes,
1464 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001465 libshared],
1466 dependencies : [threads,
1467 librt,
1468 libseccomp,
1469 libselinux,
1470 libmount,
1471 libblkid],
1472 install_rpath : rootlibexecdir,
1473 install : true)
1474public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001475
1476executable('systemd-journald',
1477 systemd_journald_sources,
1478 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001479 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001480 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001481 dependencies : [threads,
1482 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001483 liblz4,
1484 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001485 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001486 install : true,
1487 install_dir : rootlibexecdir)
1488
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001489exe = executable('systemd-cat',
1490 systemd_cat_sources,
1491 include_directories : includes,
1492 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001493 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001494 dependencies : [threads],
1495 install_rpath : rootlibexecdir,
1496 install : true)
1497public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001498
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001499exe = executable('journalctl',
1500 journalctl_sources,
1501 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001502 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001503 dependencies : [threads,
1504 libqrencode,
1505 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001506 liblz4,
1507 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001508 install_rpath : rootlibexecdir,
1509 install : true,
1510 install_dir : rootbindir)
1511public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001512
1513executable('systemd-getty-generator',
1514 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001515 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001516 link_with : [libshared],
1517 install_rpath : rootlibexecdir,
1518 install : true,
1519 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001520
1521executable('systemd-debug-generator',
1522 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001523 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001524 link_with : [libshared],
1525 install_rpath : rootlibexecdir,
1526 install : true,
1527 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001528
1529executable('systemd-fstab-generator',
1530 'src/fstab-generator/fstab-generator.c',
1531 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001532 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001533 link_with : [libshared],
1534 install_rpath : rootlibexecdir,
1535 install : true,
1536 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001537
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001538if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001539 executable('30-systemd-environment-d-generator',
1540 'src/environment-d-generator/environment-d-generator.c',
1541 include_directories : includes,
1542 link_with : [libshared],
1543 install_rpath : rootlibexecdir,
1544 install : true,
1545 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001546
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001547 meson.add_install_script(meson_make_symlink,
1548 join_paths(sysconfdir, 'environment'),
1549 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001550endif
1551
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001552if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001553 executable('systemd-hibernate-resume-generator',
1554 'src/hibernate-resume/hibernate-resume-generator.c',
1555 include_directories : includes,
1556 link_with : [libshared],
1557 install_rpath : rootlibexecdir,
1558 install : true,
1559 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001560
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001561 executable('systemd-hibernate-resume',
1562 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001563 include_directories : includes,
1564 link_with : [libshared],
1565 install_rpath : rootlibexecdir,
1566 install : true,
1567 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001568endif
1569
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001570if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001571 executable('systemd-gpt-auto-generator',
1572 'src/gpt-auto-generator/gpt-auto-generator.c',
1573 'src/basic/blkid-util.h',
1574 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001575 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001576 dependencies : libblkid,
1577 install_rpath : rootlibexecdir,
1578 install : true,
1579 install_dir : systemgeneratordir)
1580
1581 exe = executable('systemd-dissect',
1582 'src/dissect/dissect.c',
1583 include_directories : includes,
1584 link_with : [libshared],
1585 install_rpath : rootlibexecdir,
1586 install : true,
1587 install_dir : rootlibexecdir)
1588 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001589endif
1590
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001591if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001592 executable('systemd-resolved',
1593 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001594 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001595 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001596 libbasic_gcrypt,
1597 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001598 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001599 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001600 libm,
1601 libidn],
1602 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001603 install : true,
1604 install_dir : rootlibexecdir)
1605
1606 exe = executable('systemd-resolve',
1607 systemd_resolve_sources,
1608 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001609 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001610 libbasic_gcrypt,
1611 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001612 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001613 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001614 libm,
1615 libidn],
1616 install_rpath : rootlibexecdir,
1617 install : true)
1618 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001619endif
1620
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001621if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001622 executable('systemd-logind',
1623 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001624 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001625 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001626 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001627 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001628 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001629 install_rpath : rootlibexecdir,
1630 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001631 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001632
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001633 exe = executable('loginctl',
1634 loginctl_sources,
1635 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001636 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001637 dependencies : [threads,
1638 liblz4,
1639 libxz],
1640 install_rpath : rootlibexecdir,
1641 install : true,
1642 install_dir : rootbindir)
1643 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001644
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001645 exe = executable('systemd-inhibit',
1646 'src/login/inhibit.c',
1647 include_directories : includes,
1648 link_with : [libshared],
1649 install_rpath : rootlibexecdir,
1650 install : true,
1651 install_dir : rootbindir)
1652 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001653
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001654 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001655 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1656 pam_systemd = shared_library(
1657 'pam_systemd',
1658 pam_systemd_c,
1659 name_prefix : '',
1660 include_directories : includes,
1661 link_args : ['-shared',
1662 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001663 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001664 libshared_static],
1665 dependencies : [threads,
1666 libpam,
1667 libpam_misc],
1668 link_depends : pam_systemd_sym,
1669 install : true,
1670 install_dir : pamlibdir)
1671
1672 test('dlopen-pam_systemd',
1673 test_dlopen,
1674 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1675 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001676endif
1677
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001678if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001679 executable('systemd-user-sessions',
1680 'src/user-sessions/user-sessions.c',
1681 include_directories : includes,
1682 link_with : [libshared],
1683 install_rpath : rootlibexecdir,
1684 install : true,
1685 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001686endif
1687
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001688if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001689 exe = executable('bootctl',
1690 'src/boot/bootctl.c',
1691 include_directories : includes,
1692 link_with : [libshared],
1693 dependencies : [libblkid],
1694 install_rpath : rootlibexecdir,
1695 install : true)
1696 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001697endif
1698
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001699exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1700 include_directories : includes,
1701 link_with : [libshared],
1702 dependencies : [threads],
1703 install_rpath : rootlibexecdir,
1704 install : true)
1705public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001706
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001707exe = executable('systemctl', 'src/systemctl/systemctl.c',
1708 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001709 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001710 dependencies : [threads,
1711 libcap,
1712 libselinux,
1713 libxz,
1714 liblz4],
1715 install_rpath : rootlibexecdir,
1716 install : true,
1717 install_dir : rootbindir)
1718public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001719
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001720foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1721 meson.add_install_script(meson_make_symlink,
1722 join_paths(rootbindir, 'systemctl'),
1723 join_paths(rootsbindir, alias))
1724endforeach
1725
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001726if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001727 executable('systemd-backlight',
1728 'src/backlight/backlight.c',
1729 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001730 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001731 install_rpath : rootlibexecdir,
1732 install : true,
1733 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001734endif
1735
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001736if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001737 executable('systemd-rfkill',
1738 'src/rfkill/rfkill.c',
1739 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001740 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001741 install_rpath : rootlibexecdir,
1742 install : true,
1743 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001744endif
1745
1746executable('systemd-system-update-generator',
1747 'src/system-update-generator/system-update-generator.c',
1748 include_directories : includes,
1749 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001750 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001751 install : true,
1752 install_dir : systemgeneratordir)
1753
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001754if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001755 executable('systemd-cryptsetup',
1756 'src/cryptsetup/cryptsetup.c',
1757 include_directories : includes,
1758 link_with : [libshared],
1759 dependencies : [libcryptsetup],
1760 install_rpath : rootlibexecdir,
1761 install : true,
1762 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001763
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001764 executable('systemd-cryptsetup-generator',
1765 'src/cryptsetup/cryptsetup-generator.c',
1766 include_directories : includes,
1767 link_with : [libshared],
1768 dependencies : [libcryptsetup],
1769 install_rpath : rootlibexecdir,
1770 install : true,
1771 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001772
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001773 executable('systemd-veritysetup',
1774 'src/veritysetup/veritysetup.c',
1775 include_directories : includes,
1776 link_with : [libshared],
1777 dependencies : [libcryptsetup],
1778 install_rpath : rootlibexecdir,
1779 install : true,
1780 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001781
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001782 executable('systemd-veritysetup-generator',
1783 'src/veritysetup/veritysetup-generator.c',
1784 include_directories : includes,
1785 link_with : [libshared],
1786 dependencies : [libcryptsetup],
1787 install_rpath : rootlibexecdir,
1788 install : true,
1789 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001790endif
1791
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001792if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001793 executable('systemd-sysv-generator',
1794 'src/sysv-generator/sysv-generator.c',
1795 include_directories : includes,
1796 link_with : [libshared],
1797 install_rpath : rootlibexecdir,
1798 install : true,
1799 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001800
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001801 executable('systemd-rc-local-generator',
1802 'src/rc-local-generator/rc-local-generator.c',
1803 include_directories : includes,
1804 link_with : [libshared],
1805 install_rpath : rootlibexecdir,
1806 install : true,
1807 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001808endif
1809
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001810if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001811 executable('systemd-hostnamed',
1812 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001813 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001814 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001815 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001816 install : true,
1817 install_dir : rootlibexecdir)
1818
1819 exe = executable('hostnamectl',
1820 'src/hostname/hostnamectl.c',
1821 include_directories : includes,
1822 link_with : [libshared],
1823 install_rpath : rootlibexecdir,
1824 install : true)
1825 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001826endif
1827
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001828if conf.get('ENABLE_LOCALED') == 1
1829 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001830 # logind will load libxkbcommon.so dynamically on its own
1831 deps = [libdl]
1832 else
1833 deps = []
1834 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001835
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001836 executable('systemd-localed',
1837 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001838 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001839 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001840 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001841 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001842 install : true,
1843 install_dir : rootlibexecdir)
1844
1845 exe = executable('localectl',
1846 localectl_sources,
1847 include_directories : includes,
1848 link_with : [libshared],
1849 install_rpath : rootlibexecdir,
1850 install : true)
1851 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001852endif
1853
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001854if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001855 executable('systemd-timedated',
1856 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001857 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001858 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001859 install_rpath : rootlibexecdir,
1860 install : true,
1861 install_dir : rootlibexecdir)
1862
1863 exe = executable('timedatectl',
1864 'src/timedate/timedatectl.c',
1865 include_directories : includes,
1866 install_rpath : rootlibexecdir,
1867 link_with : [libshared],
1868 install : true)
1869 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001870endif
1871
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001872if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001873 executable('systemd-timesyncd',
1874 systemd_timesyncd_sources,
1875 include_directories : includes,
1876 link_with : [libshared],
1877 dependencies : [threads,
1878 libm],
1879 install_rpath : rootlibexecdir,
1880 install : true,
1881 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001882endif
1883
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001884if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001885 executable('systemd-machined',
1886 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001887 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001888 link_with : [libmachine_core,
1889 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001890 install_rpath : rootlibexecdir,
1891 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001892 install_dir : rootlibexecdir)
1893
1894 exe = executable('machinectl',
1895 'src/machine/machinectl.c',
1896 include_directories : includes,
1897 link_with : [libshared],
1898 dependencies : [threads,
1899 libxz,
1900 liblz4],
1901 install_rpath : rootlibexecdir,
1902 install : true,
1903 install_dir : rootbindir)
1904 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001905endif
1906
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001907if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001908 executable('systemd-importd',
1909 systemd_importd_sources,
1910 include_directories : includes,
1911 link_with : [libshared],
1912 dependencies : [threads],
1913 install_rpath : rootlibexecdir,
1914 install : true,
1915 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001916
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001917 systemd_pull = executable('systemd-pull',
1918 systemd_pull_sources,
1919 include_directories : includes,
1920 link_with : [libshared],
1921 dependencies : [libcurl,
1922 libz,
1923 libbzip2,
1924 libxz,
1925 libgcrypt],
1926 install_rpath : rootlibexecdir,
1927 install : true,
1928 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001929
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001930 systemd_import = executable('systemd-import',
1931 systemd_import_sources,
1932 include_directories : includes,
1933 link_with : [libshared],
1934 dependencies : [libcurl,
1935 libz,
1936 libbzip2,
1937 libxz],
1938 install_rpath : rootlibexecdir,
1939 install : true,
1940 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001941
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001942 systemd_export = executable('systemd-export',
1943 systemd_export_sources,
1944 include_directories : includes,
1945 link_with : [libshared],
1946 dependencies : [libcurl,
1947 libz,
1948 libbzip2,
1949 libxz],
1950 install_rpath : rootlibexecdir,
1951 install : true,
1952 install_dir : rootlibexecdir)
1953 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001954endif
1955
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001956if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001957 exe = executable('systemd-journal-upload',
1958 systemd_journal_upload_sources,
1959 include_directories : includes,
1960 link_with : [libshared],
1961 dependencies : [threads,
1962 libcurl,
1963 libgnutls,
1964 libxz,
1965 liblz4],
1966 install_rpath : rootlibexecdir,
1967 install : true,
1968 install_dir : rootlibexecdir)
1969 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001970endif
1971
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001972if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001973 s_j_remote = executable('systemd-journal-remote',
1974 systemd_journal_remote_sources,
1975 include_directories : includes,
1976 link_with : [libshared],
1977 dependencies : [threads,
1978 libmicrohttpd,
1979 libgnutls,
1980 libxz,
1981 liblz4],
1982 install_rpath : rootlibexecdir,
1983 install : true,
1984 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001985
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001986 s_j_gatewayd = executable('systemd-journal-gatewayd',
1987 systemd_journal_gatewayd_sources,
1988 include_directories : includes,
1989 link_with : [libshared],
1990 dependencies : [threads,
1991 libmicrohttpd,
1992 libgnutls,
1993 libxz,
1994 liblz4],
1995 install_rpath : rootlibexecdir,
1996 install : true,
1997 install_dir : rootlibexecdir)
1998 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001999endif
2000
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002001if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002002 executable('systemd-coredump',
2003 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002004 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002005 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002006 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002007 libacl,
2008 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002009 libxz,
2010 liblz4],
2011 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002012 install : true,
2013 install_dir : rootlibexecdir)
2014
2015 exe = executable('coredumpctl',
2016 coredumpctl_sources,
2017 include_directories : includes,
2018 link_with : [libshared],
2019 dependencies : [threads,
2020 libxz,
2021 liblz4],
2022 install_rpath : rootlibexecdir,
2023 install : true)
2024 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002025endif
2026
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002027if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002028 exe = executable('systemd-binfmt',
2029 'src/binfmt/binfmt.c',
2030 include_directories : includes,
2031 link_with : [libshared],
2032 install_rpath : rootlibexecdir,
2033 install : true,
2034 install_dir : rootlibexecdir)
2035 public_programs += [exe]
2036
2037 meson.add_install_script('sh', '-c',
2038 mkdir_p.format(binfmtdir))
2039 meson.add_install_script('sh', '-c',
2040 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2041endif
2042
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002043if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002044 executable('systemd-vconsole-setup',
2045 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002046 include_directories : includes,
2047 link_with : [libshared],
2048 install_rpath : rootlibexecdir,
2049 install : true,
2050 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002051endif
2052
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002053if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002054 executable('systemd-random-seed',
2055 'src/random-seed/random-seed.c',
2056 include_directories : includes,
2057 link_with : [libshared],
2058 install_rpath : rootlibexecdir,
2059 install : true,
2060 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002061endif
2062
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002063if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002064 executable('systemd-firstboot',
2065 'src/firstboot/firstboot.c',
2066 include_directories : includes,
2067 link_with : [libshared],
2068 dependencies : [libcrypt],
2069 install_rpath : rootlibexecdir,
2070 install : true,
2071 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002072endif
2073
2074executable('systemd-remount-fs',
2075 'src/remount-fs/remount-fs.c',
2076 'src/core/mount-setup.c',
2077 'src/core/mount-setup.h',
2078 include_directories : includes,
2079 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002080 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002081 install : true,
2082 install_dir : rootlibexecdir)
2083
2084executable('systemd-machine-id-setup',
2085 'src/machine-id-setup/machine-id-setup-main.c',
2086 'src/core/machine-id-setup.c',
2087 'src/core/machine-id-setup.h',
2088 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002089 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002090 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002091 install : true,
2092 install_dir : rootbindir)
2093
2094executable('systemd-fsck',
2095 'src/fsck/fsck.c',
2096 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002097 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002098 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002099 install : true,
2100 install_dir : rootlibexecdir)
2101
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002102executable('systemd-growfs',
2103 'src/partition/growfs.c',
2104 include_directories : includes,
2105 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002106 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002107 install_rpath : rootlibexecdir,
2108 install : true,
2109 install_dir : rootlibexecdir)
2110
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002111executable('systemd-makefs',
2112 'src/partition/makefs.c',
2113 include_directories : includes,
2114 link_with : [libshared],
2115 install_rpath : rootlibexecdir,
2116 install : true,
2117 install_dir : rootlibexecdir)
2118
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002119executable('systemd-sleep',
2120 'src/sleep/sleep.c',
2121 include_directories : includes,
2122 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002123 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002124 install : true,
2125 install_dir : rootlibexecdir)
2126
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002127exe = executable('systemd-sysctl',
2128 'src/sysctl/sysctl.c',
2129 include_directories : includes,
2130 link_with : [libshared],
2131 install_rpath : rootlibexecdir,
2132 install : true,
2133 install_dir : rootlibexecdir)
2134public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002135
2136executable('systemd-ac-power',
2137 'src/ac-power/ac-power.c',
2138 include_directories : includes,
2139 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002140 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002141 install : true,
2142 install_dir : rootlibexecdir)
2143
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002144exe = executable('systemd-detect-virt',
2145 'src/detect-virt/detect-virt.c',
2146 include_directories : includes,
2147 link_with : [libshared],
2148 install_rpath : rootlibexecdir,
2149 install : true)
2150public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002151
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002152exe = executable('systemd-delta',
2153 'src/delta/delta.c',
2154 include_directories : includes,
2155 link_with : [libshared],
2156 install_rpath : rootlibexecdir,
2157 install : true)
2158public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002159
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002160exe = executable('systemd-escape',
2161 'src/escape/escape.c',
2162 include_directories : includes,
2163 link_with : [libshared],
2164 install_rpath : rootlibexecdir,
2165 install : true,
2166 install_dir : rootbindir)
2167public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002168
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002169exe = executable('systemd-notify',
2170 'src/notify/notify.c',
2171 include_directories : includes,
2172 link_with : [libshared],
2173 install_rpath : rootlibexecdir,
2174 install : true,
2175 install_dir : rootbindir)
2176public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002177
2178executable('systemd-volatile-root',
2179 'src/volatile-root/volatile-root.c',
2180 include_directories : includes,
2181 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002182 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002183 install : true,
2184 install_dir : rootlibexecdir)
2185
2186executable('systemd-cgroups-agent',
2187 'src/cgroups-agent/cgroups-agent.c',
2188 include_directories : includes,
2189 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002190 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002191 install : true,
2192 install_dir : rootlibexecdir)
2193
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002194exe = executable('systemd-path',
2195 'src/path/path.c',
2196 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002197 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002198 install_rpath : rootlibexecdir,
2199 install : true)
2200public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002201
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002202exe = executable('systemd-ask-password',
2203 'src/ask-password/ask-password.c',
2204 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002205 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002206 install_rpath : rootlibexecdir,
2207 install : true,
2208 install_dir : rootbindir)
2209public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002210
2211executable('systemd-reply-password',
2212 'src/reply-password/reply-password.c',
2213 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002214 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002215 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002216 install : true,
2217 install_dir : rootlibexecdir)
2218
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002219exe = executable('systemd-tty-ask-password-agent',
2220 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2221 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002222 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002223 install_rpath : rootlibexecdir,
2224 install : true,
2225 install_dir : rootbindir)
2226public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002227
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002228exe = executable('systemd-cgls',
2229 'src/cgls/cgls.c',
2230 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002231 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002232 install_rpath : rootlibexecdir,
2233 install : true)
2234public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002235
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002236exe = executable('systemd-cgtop',
2237 'src/cgtop/cgtop.c',
2238 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002239 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002240 install_rpath : rootlibexecdir,
2241 install : true)
2242public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002243
2244executable('systemd-initctl',
2245 'src/initctl/initctl.c',
2246 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002247 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002248 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002249 install : true,
2250 install_dir : rootlibexecdir)
2251
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002252exe = executable('systemd-mount',
2253 'src/mount/mount-tool.c',
2254 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002255 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-Szmek7b76fce2017-04-09 23:55:50 -04002260meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002261 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002262
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002263exe = executable('systemd-run',
2264 'src/run/run.c',
2265 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002266 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002267 install_rpath : rootlibexecdir,
2268 install : true)
2269public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002270
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002271exe = executable('systemd-stdio-bridge',
2272 'src/stdio-bridge/stdio-bridge.c',
2273 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002274 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002275 install_rpath : rootlibexecdir,
2276 install : true)
2277public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002278
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002279exe = executable('busctl',
2280 'src/busctl/busctl.c',
2281 'src/busctl/busctl-introspect.c',
2282 'src/busctl/busctl-introspect.h',
2283 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002284 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002285 install_rpath : rootlibexecdir,
2286 install : true)
2287public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002288
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002289if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002290 exe = executable('systemd-sysusers',
2291 'src/sysusers/sysusers.c',
2292 include_directories : includes,
2293 link_with : [libshared],
2294 install_rpath : rootlibexecdir,
2295 install : true,
2296 install_dir : rootbindir)
2297 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002298endif
2299
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002300if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002301 exe = executable('systemd-tmpfiles',
2302 'src/tmpfiles/tmpfiles.c',
2303 include_directories : includes,
2304 link_with : [libshared],
2305 dependencies : [libacl],
2306 install_rpath : rootlibexecdir,
2307 install : true,
2308 install_dir : rootbindir)
2309 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002310
2311 test('test-systemd-tmpfiles',
2312 test_systemd_tmpfiles_py,
2313 args : exe.full_path())
2314 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002315endif
2316
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002317if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002318 exe = executable('systemd-hwdb',
2319 'src/hwdb/hwdb.c',
2320 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2321 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002322 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002323 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002324 install : true,
2325 install_dir : rootbindir)
2326 public_programs += [exe]
2327endif
2328
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002329if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002330 executable('systemd-quotacheck',
2331 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002332 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002333 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002334 install_rpath : rootlibexecdir,
2335 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002336 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002337endif
2338
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002339exe = executable('systemd-socket-proxyd',
2340 'src/socket-proxy/socket-proxyd.c',
2341 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002342 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002343 dependencies : [threads],
2344 install_rpath : rootlibexecdir,
2345 install : true,
2346 install_dir : rootlibexecdir)
2347public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002348
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002349exe = executable('systemd-udevd',
2350 systemd_udevd_sources,
2351 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002352 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002353 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002354 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002355 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002356 dependencies : [threads,
2357 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002358 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002359 libacl,
2360 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002361 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002362 install : true,
2363 install_dir : rootlibexecdir)
2364public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002365
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002366exe = executable('udevadm',
2367 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002368 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002369 include_directories : includes,
2370 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002371 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002372 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002373 dependencies : [threads,
2374 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002375 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002376 libacl,
2377 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002378 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002379 install : true,
2380 install_dir : rootbindir)
2381public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002382
2383executable('systemd-shutdown',
2384 systemd_shutdown_sources,
2385 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002386 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002387 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002388 install : true,
2389 install_dir : rootlibexecdir)
2390
2391executable('systemd-update-done',
2392 'src/update-done/update-done.c',
2393 include_directories : includes,
2394 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002395 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002396 install : true,
2397 install_dir : rootlibexecdir)
2398
2399executable('systemd-update-utmp',
2400 'src/update-utmp/update-utmp.c',
2401 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002402 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002403 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002404 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002405 install : true,
2406 install_dir : rootlibexecdir)
2407
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002408if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002409 executable('systemd-modules-load',
2410 'src/modules-load/modules-load.c',
2411 include_directories : includes,
2412 link_with : [libshared],
2413 dependencies : [libkmod],
2414 install_rpath : rootlibexecdir,
2415 install : true,
2416 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002417
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002418 meson.add_install_script('sh', '-c',
2419 mkdir_p.format(modulesloaddir))
2420 meson.add_install_script('sh', '-c',
2421 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002422endif
2423
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002424exe = executable('systemd-nspawn',
2425 systemd_nspawn_sources,
2426 'src/core/mount-setup.c', # FIXME: use a variable?
2427 'src/core/mount-setup.h',
2428 'src/core/loopback-setup.c',
2429 'src/core/loopback-setup.h',
2430 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002431 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002432 dependencies : [libacl,
2433 libblkid,
2434 libseccomp,
2435 libselinux],
2436 install_rpath : rootlibexecdir,
2437 install : true)
2438public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002439
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002440if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002441 executable('systemd-networkd',
2442 systemd_networkd_sources,
2443 include_directories : includes,
2444 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002445 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002446 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002447 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002448 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002449 install_rpath : rootlibexecdir,
2450 install : true,
2451 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002452
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002453 executable('systemd-networkd-wait-online',
2454 systemd_networkd_wait_online_sources,
2455 include_directories : includes,
2456 link_with : [libnetworkd_core,
2457 libshared],
2458 install_rpath : rootlibexecdir,
2459 install : true,
2460 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002461
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002462 exe = executable('networkctl',
2463 networkctl_sources,
2464 include_directories : includes,
2465 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002466 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002467 install_rpath : rootlibexecdir,
2468 install : true,
2469 install_dir : rootbindir)
2470 public_programs += [exe]
2471endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002472
2473executable('systemd-sulogin-shell',
2474 ['src/sulogin-shell/sulogin-shell.c'],
2475 include_directories : includes,
2476 link_with : [libshared],
2477 install_rpath : rootlibexecdir,
2478 install : true,
2479 install_dir : rootlibexecdir)
2480
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002481############################################################
2482
2483foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002484 sources = tuple[0]
2485 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2486 dependencies = tuple[2]
2487 condition = tuple.length() >= 4 ? tuple[3] : ''
2488 type = tuple.length() >= 5 ? tuple[4] : ''
2489 defs = tuple.length() >= 6 ? tuple[5] : []
2490 incs = tuple.length() >= 7 ? tuple[6] : includes
2491 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002492
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002493 name = sources[0].split('/')[-1].split('.')[0]
2494 if type.startswith('timeout=')
2495 timeout = type.split('=')[1].to_int()
2496 type = ''
2497 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002498 if want_tests == 'false'
2499 message('Not compiling @0@ because tests is set to false'.format(name))
2500 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002501 exe = executable(
2502 name,
2503 sources,
2504 include_directories : incs,
2505 link_with : link_with,
2506 dependencies : dependencies,
2507 c_args : defs,
2508 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002509 install : install_tests,
2510 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002511
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002512 if type == 'manual'
2513 message('@0@ is a manual test'.format(name))
2514 elif type == 'unsafe' and want_tests != 'unsafe'
2515 message('@0@ is an unsafe test'.format(name))
2516 else
2517 test(name, exe,
2518 env : test_env,
2519 timeout : timeout)
2520 endif
2521 else
2522 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2523 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002524endforeach
2525
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002526test_libsystemd_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002527 'test-libsystemd-sym',
2528 test_libsystemd_sym_c,
2529 include_directories : includes,
2530 link_with : [libsystemd],
2531 install : install_tests,
2532 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002533test('test-libsystemd-sym',
2534 test_libsystemd_sym)
2535
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002536test_libudev_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002537 'test-libudev-sym',
2538 test_libudev_sym_c,
2539 include_directories : includes,
2540 c_args : ['-Wno-deprecated-declarations'],
2541 link_with : [libudev],
2542 install : install_tests,
2543 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002544test('test-libudev-sym',
2545 test_libudev_sym)
2546
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002547############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002548
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002549fuzzer_exes = []
2550
2551foreach tuple : fuzzers
2552 sources = tuple[0]
2553 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2554 dependencies = tuple[2]
2555 defs = tuple.length() >= 4 ? tuple[3] : []
2556 incs = tuple.length() >= 5 ? tuple[4] : includes
2557
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002558 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002559 dependencies += fuzzing_engine
2560 else
2561 sources += 'src/fuzz/fuzz-main.c'
2562 endif
2563
2564 name = sources[0].split('/')[-1].split('.')[0]
2565
2566 fuzzer_exes += executable(
2567 name,
2568 sources,
2569 include_directories : [incs, include_directories('src/fuzz')],
2570 link_with : link_with,
2571 dependencies : dependencies,
2572 c_args : defs,
2573 install : false)
2574endforeach
2575
2576run_target('fuzzers',
2577 depends : fuzzer_exes,
2578 command : ['true'])
2579
2580############################################################
2581
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002582make_directive_index_py = find_program('tools/make-directive-index.py')
2583make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002584xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002585hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002586
2587subdir('units')
2588subdir('sysctl.d')
2589subdir('sysusers.d')
2590subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002591subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002592subdir('hwdb')
2593subdir('network')
2594subdir('man')
2595subdir('shell-completion/bash')
2596subdir('shell-completion/zsh')
2597subdir('docs/sysvinit')
2598subdir('docs/var-log')
2599
2600# FIXME: figure out if the warning is true:
2601# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2602install_subdir('factory/etc',
2603 install_dir : factorydir)
2604
2605
2606install_data('xorg/50-systemd-user.sh',
2607 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002608install_data('modprobe.d/systemd.conf',
2609 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002610install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002611 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002612 'NEWS',
2613 'README',
2614 'doc/CODING_STYLE',
2615 'doc/DISTRO_PORTING',
2616 'doc/ENVIRONMENT.md',
2617 'doc/HACKING',
2618 'doc/TRANSIENT-SETTINGS.md',
2619 'doc/TRANSLATORS',
2620 'doc/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002621 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2622 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002623
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002624meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2625meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2626
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002627############################################################
2628
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002629meson_check_help = find_program('tools/meson-check-help.sh')
2630
2631foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002632 name = exec.full_path().split('/')[-1]
2633 test('check-help-' + name,
2634 meson_check_help,
2635 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002636endforeach
2637
2638############################################################
2639
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002640prev = ''
2641foreach p : fuzz_regression_tests
2642 a = p.split('/')[-3]
2643 b = p.split('/')[-2]
2644 c = p.split('/')[-1]
2645
2646 if a == 'address'
2647 build = sanitize_address
2648 else
2649 error('unknown sanitizer @0@'.format(a))
2650 endif
2651
2652 name = '@1@:@0@'.format(a, b)
2653
2654 if name != prev
2655 if want_tests == 'false'
2656 message('Not compiling @0@ because tests is set to false'.format(name))
2657 elif not sanitizers.contains(a)
2658 message('Not compiling @0@ because @1@ sanitizer is not available'.format(name, a))
2659 elif slow_tests
2660 exe = custom_target(
2661 name,
2662 output : name,
2663 depends : build,
2664 command : [env, 'ln', '-fs',
2665 join_paths(build.full_path(), b),
2666 '@OUTPUT@'],
2667 build_by_default : true)
2668 else
2669 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2670 endif
2671 endif
2672 prev = name
2673
2674 if want_tests != 'false' and slow_tests
2675 test(c, env, args : [exe.full_path(),
2676 join_paths(meson.source_root(),
2677 'test/fuzz-regressions',
2678 p)])
2679 endif
2680endforeach
2681
2682############################################################
2683
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002684if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002685 all_files = run_command(
2686 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002687 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002688 'ls-files',
2689 ':/*.[ch]'])
2690 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002691
userwithuide85a6902017-08-09 13:41:44 +00002692 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002693 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002694 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002695 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002696 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002697 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002698 output : 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002699 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002700endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002701
2702if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002703 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002704 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002705 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002706 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002707endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002708
2709if git.found()
2710 git_head = run_command(
2711 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002712 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002713 'rev-parse', 'HEAD']).stdout().strip()
2714 git_head_short = run_command(
2715 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002716 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002717 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2718
2719 run_target(
2720 'git-snapshot',
2721 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002722 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002723 git_head_short),
2724 '--prefix', 'systemd-@0@/'.format(git_head),
2725 'HEAD'])
2726endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002727
2728############################################################
2729
Lennart Poettering51b13862017-12-20 12:51:14 +01002730meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2731run_target(
2732 'check-api-docs',
2733 depends : [man, libsystemd, libudev],
2734 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2735
2736############################################################
2737
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002738status = [
2739 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2740
Yu Watanabe359b4962017-11-25 20:35:24 +09002741 'prefix directory: @0@'.format(prefixdir),
2742 'rootprefix directory: @0@'.format(rootprefixdir),
2743 'sysconf directory: @0@'.format(sysconfdir),
2744 'include directory: @0@'.format(includedir),
2745 'lib directory: @0@'.format(libdir),
2746 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002747 'SysV init scripts: @0@'.format(sysvinit_path),
2748 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002749 'PAM modules directory: @0@'.format(pamlibdir),
2750 'PAM configuration directory: @0@'.format(pamconfdir),
2751 'RPM macros directory: @0@'.format(rpmmacrosdir),
2752 'modprobe.d directory: @0@'.format(modprobedir),
2753 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2754 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2755 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2756 'bash completions directory: @0@'.format(bashcompletiondir),
2757 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002758 'extra start script: @0@'.format(get_option('rc-local')),
2759 'extra stop script: @0@'.format(get_option('halt-local')),
2760 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2761 get_option('debug-tty')),
2762 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002763 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002764 'maximum system UID: @0@'.format(system_uid_max),
2765 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002766 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2767 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2768 'minimum container UID base: @0@'.format(container_uid_base_min),
2769 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002770 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002771 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002772 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002773 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002774 'nobody user name: @0@'.format(nobody_user),
2775 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002776 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002777 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002778
2779 'default DNSSEC mode: @0@'.format(default_dnssec),
2780 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2781 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2782
2783alt_dns_servers = '\n '.join(dns_servers.split(' '))
2784alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2785status += [
2786 'default DNS servers: @0@'.format(alt_dns_servers),
2787 'default NTP servers: @0@'.format(alt_ntp_servers)]
2788
2789alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2790 '@@0@'.format(time_epoch)).stdout().strip()
2791status += [
2792 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2793
2794# TODO:
2795# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2796# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2797# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2798
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002799if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002800 status += [
2801 'efi arch: @0@'.format(efi_arch)]
2802
2803 if have_gnu_efi
2804 status += [
2805 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2806 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002807 'EFI lib directory: @0@'.format(efi_libdir),
2808 'EFI lds directory: @0@'.format(efi_ldsdir),
2809 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002810 endif
2811endif
2812
2813found = []
2814missing = []
2815
2816foreach tuple : [
2817 ['libcryptsetup'],
2818 ['PAM'],
2819 ['AUDIT'],
2820 ['IMA'],
2821 ['AppArmor'],
2822 ['SELinux'],
2823 ['SECCOMP'],
2824 ['SMACK'],
2825 ['zlib'],
2826 ['xz'],
2827 ['lz4'],
2828 ['bzip2'],
2829 ['ACL'],
2830 ['gcrypt'],
2831 ['qrencode'],
2832 ['microhttpd'],
2833 ['gnutls'],
2834 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002835 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002836 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002837 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002838 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002839 ['libiptc'],
2840 ['elfutils'],
2841 ['binfmt'],
2842 ['vconsole'],
2843 ['quotacheck'],
2844 ['tmpfiles'],
2845 ['environment.d'],
2846 ['sysusers'],
2847 ['firstboot'],
2848 ['randomseed'],
2849 ['backlight'],
2850 ['rfkill'],
2851 ['logind'],
2852 ['machined'],
2853 ['importd'],
2854 ['hostnamed'],
2855 ['timedated'],
2856 ['timesyncd'],
2857 ['localed'],
2858 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002859 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002860 ['coredump'],
2861 ['polkit'],
2862 ['legacy pkla', install_polkit_pkla],
2863 ['efi'],
2864 ['gnu-efi', have_gnu_efi],
2865 ['kmod'],
2866 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01002867 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002868 ['blkid'],
2869 ['dbus'],
2870 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002871 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002872 ['hwdb'],
2873 ['tpm'],
2874 ['man pages', want_man],
2875 ['html pages', want_html],
2876 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002877 ['split /usr', conf.get('HAVE_SPLIT_USR') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002878 ['SysV compat'],
2879 ['utmp'],
2880 ['ldconfig'],
2881 ['hibernate'],
2882 ['adm group', get_option('adm-group')],
2883 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002884 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002885 ['debug hashmap'],
2886 ['debug mmap cache'],
2887]
2888
2889 cond = tuple.get(1, '')
2890 if cond == ''
2891 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2892 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002893 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002894 endif
2895 if cond
2896 found += [tuple[0]]
2897 else
2898 missing += [tuple[0]]
2899 endif
2900endforeach
2901
2902status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002903 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002904 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002905 '',
2906 'disabled features: @0@'.format(', '.join(missing)),
2907 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002908message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002909
2910if rootprefixdir != rootprefix_default
2911 message('WARNING:\n' +
2912 ' Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2913 ' systemd used fixed names for unit file directories and other paths, so anything\n' +
2914 ' except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
2915endif