blob: 7e997b195ace33a9292f74f55da252ef72abeba6 [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 Poettering63950422017-09-28 11:29:52 +020019 version : '235',
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 Poetteringd128f362017-10-05 17:14:04 +020030libsystemd_version = '0.19.1'
31libudev_version = '1.6.7'
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-Szmek349cc4a2017-10-03 10:41:51 +020057conf.set10('HAVE_SPLIT_USR', get_option('split-usr'))
Zbigniew Jędrzejewski-Szmekee4bfa22017-11-17 13:07:46 +010058rootprefixdir = get_option('split-usr') ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040059
60sysvinit_path = get_option('sysvinit-path')
61sysvrcnd_path = get_option('sysvrcnd-path')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020062have = sysvinit_path != '' or sysvrcnd_path != ''
63conf.set10('HAVE_SYSV_COMPAT', have,
64 description : 'SysV init scripts and rcN.d links are supported')
65m4_defines += have ? ['-DHAVE_SYSV_COMPAT'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040066
67# join_paths ignore the preceding arguments if an absolute component is
68# encountered, so this should canonicalize various paths when they are
69# absolute or relative.
70prefixdir = get_option('prefix')
71if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040072 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040073endif
74bindir = join_paths(prefixdir, get_option('bindir'))
75libdir = join_paths(prefixdir, get_option('libdir'))
76sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
77includedir = join_paths(prefixdir, get_option('includedir'))
78datadir = join_paths(prefixdir, get_option('datadir'))
79localstatedir = join_paths('/', get_option('localstatedir'))
80
81rootbindir = join_paths(rootprefixdir, 'bin')
82rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
83
84rootlibdir = get_option('rootlibdir')
85if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040086 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040087endif
88
89# Dirs of external packages
Michael Bieble17e5ba2017-04-13 10:30:56 -040090pkgconfigdatadir = join_paths(datadir, 'pkgconfig')
91pkgconfiglibdir = join_paths(libdir, 'pkgconfig')
92polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
93polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
94polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
95varlogdir = join_paths(localstatedir, 'log')
96xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Zbigniew Jędrzejewski-Szmek0c6e2702017-11-17 13:22:13 +010097rpmmacrosdir = join_paths(prefixdir, get_option('rpmmacrosdir'))
Michael Biebl02fa0542017-10-21 08:32:50 +020098modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040099
100# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400101pkgdatadir = join_paths(datadir, 'systemd')
102environmentdir = join_paths(prefixdir, 'lib/environment.d')
103pkgsysconfdir = join_paths(sysconfdir, 'systemd')
104userunitdir = join_paths(prefixdir, 'lib/systemd/user')
105userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
106tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
107sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
108sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
109binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
110modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
111networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
112pkgincludedir = join_paths(includedir, 'systemd')
113systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
114usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
115systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
116userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
117systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
118systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
119systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
120systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
121udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
122udevhomedir = udevlibexecdir
123udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
124udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
125catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
126kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
127factorydir = join_paths(datadir, 'factory')
128docdir = join_paths(datadir, 'doc/systemd')
129bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
130testsdir = join_paths(prefixdir, 'lib/systemd/tests')
131systemdstatedir = join_paths(localstatedir, 'lib/systemd')
132catalogstatedir = join_paths(systemdstatedir, 'catalog')
133randomseeddir = join_paths(localstatedir, 'lib/systemd')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400134
135dbuspolicydir = get_option('dbuspolicydir')
136if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400137 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400138endif
139
140dbussessionservicedir = get_option('dbussessionservicedir')
141if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400142 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400143endif
144
145dbussystemservicedir = get_option('dbussystemservicedir')
146if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400147 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400148endif
149
150pamlibdir = get_option('pamlibdir')
151if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400152 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400153endif
154
155pamconfdir = get_option('pamconfdir')
156if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400157 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400158endif
159
160conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400161conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400162conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
163conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
164conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400165conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
166conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400167conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400168conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
169conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400170conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
171conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
172conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
173conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
174conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
175conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
176conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
177conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
178conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400179conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400180conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
181conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400182conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
183conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
184conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
185conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
186conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
187conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400188conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
189conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400190conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400191conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400192conf.set_quoted('LIBDIR', libdir)
193conf.set_quoted('ROOTLIBDIR', rootlibdir)
194conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
195conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400196conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
197conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
198conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
199conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
200conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
201conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400202
203conf.set_quoted('ABS_BUILD_DIR', meson.build_root())
204conf.set_quoted('ABS_SRC_DIR', meson.source_root())
205
206substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400207substs.set('exec_prefix', prefixdir)
208substs.set('libdir', libdir)
209substs.set('rootlibdir', rootlibdir)
210substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400211substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400212substs.set('bindir', bindir)
213substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400214substs.set('rootlibexecdir', rootlibexecdir)
215substs.set('systemunitdir', systemunitdir)
216substs.set('userunitdir', userunitdir)
217substs.set('systempresetdir', systempresetdir)
218substs.set('userpresetdir', userpresetdir)
219substs.set('udevhwdbdir', udevhwdbdir)
220substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400221substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400222substs.set('catalogdir', catalogdir)
223substs.set('tmpfilesdir', tmpfilesdir)
224substs.set('sysusersdir', sysusersdir)
225substs.set('sysctldir', sysctldir)
226substs.set('binfmtdir', binfmtdir)
227substs.set('modulesloaddir', modulesloaddir)
228substs.set('systemgeneratordir', systemgeneratordir)
229substs.set('usergeneratordir', usergeneratordir)
230substs.set('systemenvgeneratordir', systemenvgeneratordir)
231substs.set('userenvgeneratordir', userenvgeneratordir)
232substs.set('systemshutdowndir', systemshutdowndir)
233substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400234substs.set('VARLOGDIR', varlogdir)
235substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400236substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
237substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400238substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
239substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
240substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
241substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400242
243#####################################################################
244
245cc = meson.get_compiler('c')
246pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400247check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400248
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400249cxx = find_program('c++', required : false)
250if cxx.found()
251 # Used only for tests
252 add_languages('cpp')
253endif
254
Zbigniew Jędrzejewski-Szmek75cf1d62017-07-04 17:59:15 -0400255foreach arg : ['-Wextra',
Zbigniew Jędrzejewski-Szmek70160ce2017-10-03 12:11:49 +0200256 '-Werror=undef',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400257 '-Wlogical-op',
258 '-Wmissing-include-dirs',
259 '-Wold-style-definition',
260 '-Wpointer-arith',
261 '-Winit-self',
262 '-Wdeclaration-after-statement',
263 '-Wfloat-equal',
264 '-Wsuggest-attribute=noreturn',
265 '-Werror=missing-prototypes',
266 '-Werror=implicit-function-declaration',
267 '-Werror=missing-declarations',
268 '-Werror=return-type',
269 '-Werror=incompatible-pointer-types',
270 '-Werror=format=2',
271 '-Wstrict-prototypes',
272 '-Wredundant-decls',
273 '-Wmissing-noreturn',
Zbigniew Jędrzejewski-Szmek97279d82017-11-20 14:23:40 +0100274 '-Wimplicit-fallthrough=5',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400275 '-Wshadow',
276 '-Wendif-labels',
277 '-Wstrict-aliasing=2',
278 '-Wwrite-strings',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400279 '-Werror=overflow',
280 '-Wdate-time',
281 '-Wnested-externs',
282 '-ffast-math',
283 '-fno-common',
284 '-fdiagnostics-show-option',
285 '-fno-strict-aliasing',
286 '-fvisibility=hidden',
287 '-fstack-protector',
288 '-fstack-protector-strong',
289 '-fPIE',
290 '--param=ssp-buffer-size=4',
291 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400292 if cc.has_argument(arg)
293 add_project_arguments(arg, language : 'c')
294 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400295endforeach
296
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400297# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
298# arguments, just emits a warnings. So test for the "positive" version instead.
299foreach arg : ['unused-parameter',
300 'missing-field-initializers',
301 'unused-result',
Zbigniew Jędrzejewski-Szmekfb1b5882017-09-04 19:49:12 +0300302 'format-signedness',
303 'error=nonnull', # work-around for gcc 7.1 turning this on on its own
304 ]
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400305 if cc.has_argument('-W' + arg)
306 add_project_arguments('-Wno-' + arg, language : 'c')
307 endif
308endforeach
309
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400310if cc.compiles('
311 #include <time.h>
312 #include <inttypes.h>
313 typedef uint64_t usec_t;
314 usec_t now(clockid_t clock);
315 int main(void) {
316 struct timespec now;
317 return 0;
318 }
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400319', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400320 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400321endif
322
323if cc.get_id() == 'clang'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400324 foreach arg : ['-Wno-typedef-redefinition',
325 '-Wno-gnu-variable-sized-type-not-at-end',
326 ]
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400327 if cc.has_argument(arg,
328 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400329 add_project_arguments(arg, language : 'c')
330 endif
331 endforeach
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400332endif
333
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400334link_test_c = files('tools/meson-link-test.c')
335
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400336# --as-needed and --no-undefined are provided by meson by default,
337# run mesonconf to see what is enabled
338foreach arg : ['-Wl,-z,relro',
339 '-Wl,-z,now',
340 '-pie',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400341 ]
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400342
343 have = run_command(check_compilation_sh,
344 cc.cmd_array(), '-x', 'c', arg,
345 '-include', link_test_c).returncode() == 0
346 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
347 if have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400348 add_project_link_arguments(arg, language : 'c')
349 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400350endforeach
351
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400352if get_option('buildtype') != 'debug'
353 foreach arg : ['-ffunction-sections',
354 '-fdata-sections']
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400355 if cc.has_argument(arg,
356 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400357 add_project_arguments(arg, language : 'c')
358 endif
359 endforeach
360
361 foreach arg : ['-Wl,--gc-sections']
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400362 have = run_command(check_compilation_sh,
363 cc.cmd_array(), '-x', 'c', arg,
364 '-include', link_test_c).returncode() == 0
365 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
366 if have
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400367 add_project_link_arguments(arg, language : 'c')
368 endif
369 endforeach
370endif
371
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400372cpp = ' '.join(cc.cmd_array()) + ' -E'
373
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400374#####################################################################
375# compilation result tests
376
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400377conf.set('_GNU_SOURCE', true)
378conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400379
380conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
381conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
382conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
383conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
384conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
385conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
386conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
387
388decl_headers = '''
389#include <uchar.h>
390#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000391#include <linux/fib_rules.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400392'''
393# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
394
395foreach decl : ['char16_t',
396 'char32_t',
397 'key_serial_t',
398 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000399 'struct fib_rule_uid_range',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400400 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400401
402 # We get -1 if the size cannot be determined
403 have = cc.sizeof(decl, prefix : decl_headers) > 0
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200404 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400405endforeach
406
407foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
408 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
409 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
410 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
411 ['IFLA_IPVLAN_MODE', 'linux/if_link.h'],
412 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
413 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
414 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
415 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
416 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530417 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400418 # if_tunnel.h is buggy and cannot be included on its own
419 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
420 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
421 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
422 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
423 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
424 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
425 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
426 ['NDA_IFINDEX', 'linux/neighbour.h'],
427 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000428 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400429 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530430 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400431 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400432 prefix = decl.length() > 2 ? decl[2] : ''
433 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200434 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400435endforeach
436
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400437foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200438 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400439endforeach
440
441foreach ident : [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400442 ['memfd_create', '''#include <sys/memfd.h>'''],
443 ['gettid', '''#include <sys/types.h>'''],
444 ['pivot_root', '''#include <stdlib.h>'''], # no known header declares pivot_root
445 ['name_to_handle_at', '''#define _GNU_SOURCE
446 #include <sys/types.h>
447 #include <sys/stat.h>
448 #include <fcntl.h>'''],
449 ['setns', '''#define _GNU_SOURCE
450 #include <sched.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400451 ['renameat2', '''#include <stdio.h>'''],
452 ['kcmp', '''#include <linux/kcmp.h>'''],
453 ['keyctl', '''#include <sys/types.h>
454 #include <keyutils.h>'''],
455 ['copy_file_range', '''#include <sys/syscall.h>
456 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200457 ['bpf', '''#include <sys/syscall.h>
458 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmek38f1ae02017-04-19 16:14:16 -0400459 ['explicit_bzero' , '''#include <string.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400460]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400461
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400462 have = cc.has_function(ident[0], prefix : ident[1])
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200463 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400464endforeach
465
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400466if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200467 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200468 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400469else
470 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200471 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200472 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400473endif
474
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400475#####################################################################
476
477sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400478awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400479m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400480stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400481git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400482
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400483meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400484mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400485test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
486splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400487
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400488# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
489# /usr/sbin, /sbin, and fall back to the default from middle column.
490progs = [['telinit', '/lib/sysvinit/telinit'],
491 ['quotaon', '/usr/sbin/quotaon' ],
492 ['quotacheck', '/usr/sbin/quotacheck' ],
493 ['kill', '/usr/bin/kill' ],
494 ['kmod', '/usr/bin/kmod' ],
495 ['kexec', '/usr/sbin/kexec' ],
496 ['sulogin', '/usr/sbin/sulogin' ],
497 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
498 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
499 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
500 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
501 ]
502foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400503 path = get_option(prog[0] + '-path')
504 if path != ''
505 message('Using @1@ for @0@'.format(prog[0], path))
506 else
507 exe = find_program(prog[0],
508 '/usr/sbin/' + prog[0],
509 '/sbin/' + prog[0],
510 required: false)
511 path = exe.found() ? exe.path() : prog[1]
512 endif
513 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
514 conf.set_quoted(name, path)
515 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400516endforeach
517
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400518if run_command('ln', '--relative', '--help').returncode() != 0
519 error('ln does not support --relative')
520endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400521
522############################################################
523
524gperf = find_program('gperf')
525
526gperf_test_format = '''
527#include <string.h>
528const char * in_word_set(const char *, @0@);
529@1@
530'''
531gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
532gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
533gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
534if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400535 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400536else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400537 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
538 if cc.compiles(gperf_test)
539 gperf_len_type = 'unsigned'
540 else
541 error('unable to determine gperf len type')
542 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400543endif
544message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400545conf.set('GPERF_LEN_TYPE', gperf_len_type,
546 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400547
548############################################################
549
550if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400551 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400552endif
553foreach header : ['linux/btrfs.h',
554 'linux/memfd.h',
555 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200556 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400557 'valgrind/memcheck.h',
558 'valgrind/valgrind.h',
559 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400560
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200561 conf.set10('HAVE_' + header.underscorify().to_upper(),
562 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400563endforeach
564
565############################################################
566
567conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400568conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
569gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400570
571default_hierarchy = get_option('default-hierarchy')
572conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
573 description : 'default cgroup hierarchy as string')
574if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400575 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400576elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400577 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400578else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400579 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400580endif
581
582time_epoch = get_option('time-epoch')
583if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400584 NEWS = files('NEWS')
585 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400586endif
587time_epoch = time_epoch.to_int()
588conf.set('TIME_EPOCH', time_epoch)
589
590system_uid_max = get_option('system-uid-max')
591if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400592 system_uid_max = run_command(
593 awk,
594 'BEGIN { uid=999 } /^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
595 '/etc/login.defs').stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400596endif
597system_uid_max = system_uid_max.to_int()
598conf.set('SYSTEM_UID_MAX', system_uid_max)
599substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400600message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400601
602conf.set_quoted('NOBODY_USER_NAME', get_option('nobody-user'))
603conf.set_quoted('NOBODY_GROUP_NAME', get_option('nobody-group'))
604
605system_gid_max = get_option('system-gid-max')
606if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400607 system_gid_max = run_command(
608 awk,
609 'BEGIN { gid=999 } /^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
610 '/etc/login.defs').stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400611endif
612system_gid_max = system_gid_max.to_int()
613conf.set('SYSTEM_GID_MAX', system_gid_max)
614substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400615message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400616
617tty_gid = get_option('tty-gid')
618conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400619substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400620
621if get_option('adm-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400622 m4_defines += ['-DENABLE_ADM_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400623endif
624
625if get_option('wheel-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400626 m4_defines += ['-DENABLE_WHEEL_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400627endif
628
629substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700630substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400631
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400632kill_user_processes = get_option('default-kill-user-processes')
633conf.set10('KILL_USER_PROCESSES', kill_user_processes)
634substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400635
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400636dns_servers = get_option('dns-servers')
637conf.set_quoted('DNS_SERVERS', dns_servers)
638substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400639
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400640ntp_servers = get_option('ntp-servers')
641conf.set_quoted('NTP_SERVERS', ntp_servers)
642substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400643
644conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
645
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400646substs.set('SUSHELL', get_option('debug-shell'))
647substs.set('DEBUGTTY', get_option('debug-tty'))
648
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400649debug = get_option('debug')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200650enable_debug_hashmap = false
651enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400652if debug != ''
653 foreach name : debug.split(',')
654 if name == 'hashmap'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200655 enable_debug_hashmap = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400656 elif name == 'mmap-cache'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200657 enable_debug_mmap_cache = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400658 else
659 message('unknown debug option "@0@", ignoring'.format(name))
660 endif
661 endforeach
662endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200663conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
664conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400665
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400666#####################################################################
667
668threads = dependency('threads')
669librt = cc.find_library('rt')
670libm = cc.find_library('m')
671libdl = cc.find_library('dl')
672libcrypt = cc.find_library('crypt')
673
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400674libcap = dependency('libcap', required : false)
675if not libcap.found()
676 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
677 libcap = cc.find_library('cap')
678endif
679
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400680libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekd6e80962017-09-15 14:47:57 +0200681 version : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400682
683want_seccomp = get_option('seccomp')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400684if want_seccomp != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400685 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400686 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400687 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200688 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400689else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200690 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400691 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400692endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200693conf.set10('HAVE_SECCOMP', have)
694m4_defines += have ? ['-DHAVE_SECCOMP'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400695
696want_selinux = get_option('selinux')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400697if want_selinux != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400698 libselinux = dependency('libselinux',
699 version : '>= 2.1.9',
700 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200701 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400702else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200703 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400704 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400705endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200706conf.set10('HAVE_SELINUX', have)
707m4_defines += have ? ['-DHAVE_SELINUX'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400708
709want_apparmor = get_option('apparmor')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400710if want_apparmor != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400711 libapparmor = dependency('libapparmor',
712 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200713 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400714else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200715 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400716 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400717endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200718conf.set10('HAVE_APPARMOR', have)
719m4_defines += have ? ['-DHAVE_APPARMOR'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400720
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400721smack_run_label = get_option('smack-run-label')
722if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400723 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
724 m4_defines += ['-DHAVE_SMACK_RUN_LABEL']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400725endif
726
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400727want_polkit = get_option('polkit')
728install_polkit = false
729install_polkit_pkla = false
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400730if want_polkit != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400731 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400732
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400733 libpolkit = dependency('polkit-gobject-1',
734 required : false)
735 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
736 message('Old polkit detected, will install pkla files')
737 install_polkit_pkla = true
738 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400739endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200740conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400741
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400742want_acl = get_option('acl')
743if want_acl != 'false'
744 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200745 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400746else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200747 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400748 libacl = []
749endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200750conf.set10('HAVE_ACL', have)
751m4_defines += have ? ['-DHAVE_ACL'] : []
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400752
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400753want_audit = get_option('audit')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400754if want_audit != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400755 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200756 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400757else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200758 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400759 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400760endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200761conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400762
763want_blkid = get_option('blkid')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400764if want_blkid != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400765 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200766 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400767else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200768 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400769 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400770endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200771conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400772
773want_kmod = get_option('kmod')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400774if want_kmod != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400775 libkmod = dependency('libkmod',
776 version : '>= 15',
777 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200778 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400779else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200780 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400781 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400782endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200783conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400784
785want_pam = get_option('pam')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400786if want_pam != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400787 libpam = cc.find_library('pam', required : want_pam == 'true')
788 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200789 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400790else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200791 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400792 libpam = []
793 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400794endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200795conf.set10('HAVE_PAM', have)
796m4_defines += have ? ['-DHAVE_PAM'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400797
798want_microhttpd = get_option('microhttpd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400799if want_microhttpd != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400800 libmicrohttpd = dependency('libmicrohttpd',
801 version : '>= 0.9.33',
802 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200803 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400804else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200805 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400806 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400807endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200808conf.set10('HAVE_MICROHTTPD', have)
809m4_defines += have ? ['-DHAVE_MICROHTTPD'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400810
811want_libcryptsetup = get_option('libcryptsetup')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400812if want_libcryptsetup != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400813 libcryptsetup = dependency('libcryptsetup',
814 version : '>= 1.6.0',
815 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200816 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400817else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200818 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400819 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400820endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200821conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400822
823want_libcurl = get_option('libcurl')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400824if want_libcurl != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400825 libcurl = dependency('libcurl',
826 version : '>= 7.32.0',
827 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200828 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400829else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200830 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400831 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400832endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200833conf.set10('HAVE_LIBCURL', have)
834m4_defines += have ? ['-DHAVE_LIBCURL'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400835
836want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400837want_libidn2 = get_option('libidn2')
838if want_libidn == 'true' and want_libidn2 == 'true'
839 error('libidn and libidn2 cannot be requested simultaneously')
840endif
841
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400842if want_libidn != 'false' and want_libidn2 != 'true'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400843 libidn = dependency('libidn',
844 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200845 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400846else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200847 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400848 libidn = []
849endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200850conf.set10('HAVE_LIBIDN', have)
851m4_defines += have ? ['-DHAVE_LIBIDN'] : []
852if not have and want_libidn2 != 'false'
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400853 # libidn is used for both libidn and libidn2 objects
854 libidn = dependency('libidn2',
855 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200856 have = libidn.found()
857else
858 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400859endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200860conf.set10('HAVE_LIBIDN2', have)
861m4_defines += have ? ['-DHAVE_LIBIDN2'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400862
863want_libiptc = get_option('libiptc')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400864if want_libiptc != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400865 libiptc = dependency('libiptc',
866 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200867 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400868else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200869 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400870 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400871endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200872conf.set10('HAVE_LIBIPTC', have)
873m4_defines += have ? ['-DHAVE_LIBIPTC'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400874
875want_qrencode = get_option('qrencode')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400876if want_qrencode != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400877 libqrencode = dependency('libqrencode',
878 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200879 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400880else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200881 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400882 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400883endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200884conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400885
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400886want_gcrypt = get_option('gcrypt')
887if want_gcrypt != 'false'
888 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
889 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200890 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400891else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200892 have = false
893endif
894if not have
895 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400896 libgcrypt = []
897 libgpg_error = []
898endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200899conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400900
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400901want_gnutls = get_option('gnutls')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400902if want_gnutls != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400903 libgnutls = dependency('gnutls',
904 version : '>= 3.1.4',
905 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200906 have = libgnutls.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 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400910endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200911conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400912
913want_elfutils = get_option('elfutils')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400914if want_elfutils != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400915 libdw = dependency('libdw',
916 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200917 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400918else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200919 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400920 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400921endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200922conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400923
924want_zlib = get_option('zlib')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400925if want_zlib != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400926 libz = dependency('zlib',
927 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200928 have = libz.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 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400932endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200933conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400934
935want_bzip2 = get_option('bzip2')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400936if want_bzip2 != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400937 libbzip2 = cc.find_library('bz2',
938 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200939 have = libbzip2.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 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400943endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200944conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400945
946want_xz = get_option('xz')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400947if want_xz != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400948 libxz = dependency('liblzma',
949 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200950 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400951else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200952 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400953 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400954endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200955conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400956
957want_lz4 = get_option('lz4')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400958if want_lz4 != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400959 liblz4 = dependency('liblz4',
960 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200961 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400962else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200963 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400964 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400965endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200966conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400967
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400968want_xkbcommon = get_option('xkbcommon')
969if want_xkbcommon != 'false'
970 libxkbcommon = dependency('xkbcommon',
971 version : '>= 0.3.0',
972 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200973 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400974else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200975 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400976 libxkbcommon = []
977endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200978conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400979
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -0400980want_glib = get_option('glib')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400981if want_glib != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400982 libglib = dependency('glib-2.0',
983 version : '>= 2.22.0',
984 required : want_glib == 'true')
985 libgobject = dependency('gobject-2.0',
986 version : '>= 2.22.0',
987 required : want_glib == 'true')
988 libgio = dependency('gio-2.0',
989 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400990 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -0400991else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200992 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400993 libglib = []
994 libgobject = []
995 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -0400996endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200997conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -0400998
999want_dbus = get_option('dbus')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001000if want_dbus != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001001 libdbus = dependency('dbus-1',
1002 version : '>= 1.3.2',
1003 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001004 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001005else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001006 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001007 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001008endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001009conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001010
Yu Watanabe42303dc2017-06-18 05:22:32 +09001011default_dnssec = get_option('default-dnssec')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001012if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001013 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1014 default_dnssec = 'no'
1015endif
1016conf.set('DEFAULT_DNSSEC_MODE',
1017 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1018substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1019
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001020want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001021if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001022 have = (conf.get('HAVE_LIBCURL') == 1 and
1023 conf.get('HAVE_ZLIB') == 1 and
1024 conf.get('HAVE_BZIP2') == 1 and
1025 conf.get('HAVE_XZ') == 1 and
1026 conf.get('HAVE_GCRYPT') == 1)
1027 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001028 error('importd support was requested, but dependencies are not available')
1029 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001030else
1031 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001032endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001033conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001034
1035want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001036if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001037 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1038 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001039 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1040 # it's possible to build one without the other. Complain only if
1041 # support was explictly requested. The auxiliary files like sysusers
1042 # config should be installed when any of the programs are built.
1043 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1044 error('remote support was requested, but dependencies are not available')
1045 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001046 have = have_deps[0] or have_deps[1]
1047else
1048 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001049endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001050conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001051
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001052foreach term : ['utmp',
1053 'hibernate',
1054 'environment-d',
1055 'binfmt',
1056 'coredump',
1057 'resolve',
1058 'logind',
1059 'hostnamed',
1060 'localed',
1061 'machined',
1062 'networkd',
1063 'timedated',
1064 'timesyncd',
1065 'myhostname',
1066 'firstboot',
1067 'randomseed',
1068 'backlight',
1069 'vconsole',
1070 'quotacheck',
1071 'sysusers',
1072 'tmpfiles',
1073 'hwdb',
1074 'rfkill',
1075 'ldconfig',
1076 'efi',
1077 'tpm',
1078 'ima',
1079 'smack',
1080 'gshadow',
1081 'idn',
1082 'nss-systemd']
1083 have = get_option(term)
1084 name = 'ENABLE_' + term.underscorify().to_upper()
1085 conf.set10(name, have)
1086 m4_defines += have ? ['-D' + name] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001087endforeach
1088
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001089want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001090install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001091tests = []
1092
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001093conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', get_option('slow-tests'))
1094
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001095#####################################################################
1096
1097if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001098 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001099
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001100 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001101 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001102 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001103 elif efi_arch == 'x86_64'
1104 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001105 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001106 elif efi_arch == 'arm'
1107 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001108 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001109 elif efi_arch == 'aarch64'
1110 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001111 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001112 else
1113 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001114 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001115 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001116
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001117 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001118 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001119
1120 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001121else
1122 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001123endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001124conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001125
1126#####################################################################
1127
1128config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001129 output : 'config.h',
1130 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001131
1132includes = include_directories('src/basic',
1133 'src/shared',
1134 'src/systemd',
1135 'src/journal',
1136 'src/resolve',
1137 'src/timesync',
1138 'src/login',
1139 'src/udev',
1140 'src/libudev',
1141 'src/core',
1142 'src/libsystemd/sd-bus',
1143 'src/libsystemd/sd-device',
1144 'src/libsystemd/sd-hwdb',
1145 'src/libsystemd/sd-id128',
1146 'src/libsystemd/sd-netlink',
1147 'src/libsystemd/sd-network',
1148 'src/libsystemd-network',
Davide Cavalca5e1771a2017-08-30 08:34:44 -07001149 '.',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001150 )
1151
1152add_project_arguments('-include', 'config.h', language : 'c')
1153
1154gcrypt_util_sources = files('src/shared/gcrypt-util.h',
1155 'src/shared/gcrypt-util.c')
1156
1157subdir('po')
1158subdir('catalog')
1159subdir('src/systemd')
1160subdir('src/basic')
1161subdir('src/libsystemd')
1162subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001163subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001164subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001165
1166libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001167 'journal-core',
1168 libjournal_core_sources,
1169 journald_gperf_c,
1170 include_directories : includes,
1171 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001172
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001173libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001174libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001175 'systemd',
1176 libsystemd_internal_sources,
1177 journal_internal_sources,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001178 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001179 include_directories : includes,
1180 link_args : ['-shared',
1181 '-Wl,--version-script=' + libsystemd_sym_path],
1182 link_with : [libbasic],
1183 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001184 libgcrypt,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001185 librt,
1186 libxz,
1187 liblz4],
1188 link_depends : libsystemd_sym,
1189 install : true,
1190 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001191
1192############################################################
1193
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001194# binaries that have --help and are intended for use by humans,
1195# usually, but not always, installed in /bin.
1196public_programs = []
1197
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001198subdir('src/libudev')
1199subdir('src/shared')
1200subdir('src/core')
1201subdir('src/udev')
1202subdir('src/network')
1203
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001204subdir('src/analyze')
1205subdir('src/journal-remote')
1206subdir('src/coredump')
1207subdir('src/hostname')
1208subdir('src/import')
1209subdir('src/kernel-install')
1210subdir('src/locale')
1211subdir('src/machine')
1212subdir('src/nspawn')
1213subdir('src/resolve')
1214subdir('src/timedate')
1215subdir('src/timesync')
1216subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmek4e4ab1c2017-04-10 12:37:52 -04001217subdir('src/sulogin-shell')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001218subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001219
1220subdir('src/test')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001221subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001222
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001223############################################################
1224
1225# only static linking apart from libdl, to make sure that the
1226# module is linked to all libraries that it uses.
1227test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001228 'test-dlopen',
1229 test_dlopen_c,
1230 include_directories : includes,
1231 link_with : [libbasic],
1232 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001233
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001234foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001235 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001236 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001237 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001238
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001239 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001240 if condition
1241 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001242
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001243 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1244 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001245
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001246 nss = shared_library(
1247 'nss_' + module,
1248 'src/nss-@0@/nss-@0@.c'.format(module),
1249 version : '2',
1250 include_directories : includes,
1251 link_args : ['-shared',
1252 '-Wl,--version-script=' + version_script_arg,
1253 '-Wl,--undefined'],
1254 link_with : [libsystemd_internal,
1255 libbasic],
1256 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001257 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001258 link_depends : sym,
1259 install : true,
1260 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001261
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001262 # We cannot use shared_module because it does not support version suffix.
1263 # Unfortunately shared_library insists on creating the symlink…
1264 meson.add_install_script('sh', '-c',
1265 'rm $DESTDIR@0@/libnss_@1@.so'
1266 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001267
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001268 test('dlopen-nss_' + module,
1269 test_dlopen,
1270 args : [nss.full_path()]) # path to dlopen must include a slash
1271 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001272endforeach
1273
1274############################################################
1275
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001276executable('systemd',
1277 systemd_sources,
1278 include_directories : includes,
1279 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001280 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001281 dependencies : [threads,
1282 librt,
1283 libseccomp,
1284 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001285 libmount,
1286 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001287 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001288 install : true,
1289 install_dir : rootlibexecdir)
1290
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001291exe = executable('systemd-analyze',
1292 systemd_analyze_sources,
1293 include_directories : includes,
1294 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001295 libshared],
1296 dependencies : [threads,
1297 librt,
1298 libseccomp,
1299 libselinux,
1300 libmount,
1301 libblkid],
1302 install_rpath : rootlibexecdir,
1303 install : true)
1304public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001305
1306executable('systemd-journald',
1307 systemd_journald_sources,
1308 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001309 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001310 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001311 dependencies : [threads,
1312 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001313 liblz4,
1314 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001315 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001316 install : true,
1317 install_dir : rootlibexecdir)
1318
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001319exe = executable('systemd-cat',
1320 systemd_cat_sources,
1321 include_directories : includes,
1322 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001323 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001324 dependencies : [threads],
1325 install_rpath : rootlibexecdir,
1326 install : true)
1327public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001328
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001329exe = executable('journalctl',
1330 journalctl_sources,
1331 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001332 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001333 dependencies : [threads,
1334 libqrencode,
1335 libxz,
1336 liblz4],
1337 install_rpath : rootlibexecdir,
1338 install : true,
1339 install_dir : rootbindir)
1340public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001341
1342executable('systemd-getty-generator',
1343 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001344 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001345 link_with : [libshared],
1346 install_rpath : rootlibexecdir,
1347 install : true,
1348 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001349
1350executable('systemd-debug-generator',
1351 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001352 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001353 link_with : [libshared],
1354 install_rpath : rootlibexecdir,
1355 install : true,
1356 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001357
1358executable('systemd-fstab-generator',
1359 'src/fstab-generator/fstab-generator.c',
1360 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001361 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001362 link_with : [libshared],
1363 install_rpath : rootlibexecdir,
1364 install : true,
1365 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001366
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001367if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001368 executable('30-systemd-environment-d-generator',
1369 'src/environment-d-generator/environment-d-generator.c',
1370 include_directories : includes,
1371 link_with : [libshared],
1372 install_rpath : rootlibexecdir,
1373 install : true,
1374 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001375
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001376 meson.add_install_script(meson_make_symlink,
1377 join_paths(sysconfdir, 'environment'),
1378 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001379endif
1380
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001381if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001382 executable('systemd-hibernate-resume-generator',
1383 'src/hibernate-resume/hibernate-resume-generator.c',
1384 include_directories : includes,
1385 link_with : [libshared],
1386 install_rpath : rootlibexecdir,
1387 install : true,
1388 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001389
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001390 executable('systemd-hibernate-resume',
1391 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001392 include_directories : includes,
1393 link_with : [libshared],
1394 install_rpath : rootlibexecdir,
1395 install : true,
1396 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001397endif
1398
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001399if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001400 executable('systemd-gpt-auto-generator',
1401 'src/gpt-auto-generator/gpt-auto-generator.c',
1402 'src/basic/blkid-util.h',
1403 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001404 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001405 dependencies : libblkid,
1406 install_rpath : rootlibexecdir,
1407 install : true,
1408 install_dir : systemgeneratordir)
1409
1410 exe = executable('systemd-dissect',
1411 'src/dissect/dissect.c',
1412 include_directories : includes,
1413 link_with : [libshared],
1414 install_rpath : rootlibexecdir,
1415 install : true,
1416 install_dir : rootlibexecdir)
1417 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001418endif
1419
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001420if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001421 executable('systemd-resolved',
1422 systemd_resolved_sources,
Michael Biebl76c87412017-04-21 23:45:54 +02001423 gcrypt_util_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001424 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001425 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001426 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001427 libgcrypt,
1428 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001429 libm,
1430 libidn],
1431 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001432 install : true,
1433 install_dir : rootlibexecdir)
1434
1435 exe = executable('systemd-resolve',
1436 systemd_resolve_sources,
Michael Biebl76c87412017-04-21 23:45:54 +02001437 gcrypt_util_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001438 include_directories : includes,
1439 link_with : [libshared],
1440 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001441 libgcrypt,
1442 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001443 libm,
1444 libidn],
1445 install_rpath : rootlibexecdir,
1446 install : true)
1447 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001448endif
1449
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001450if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001451 executable('systemd-logind',
1452 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001453 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001454 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001455 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001456 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001457 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001458 install_rpath : rootlibexecdir,
1459 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001460 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001461
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001462 exe = executable('loginctl',
1463 loginctl_sources,
1464 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001465 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001466 dependencies : [threads,
1467 liblz4,
1468 libxz],
1469 install_rpath : rootlibexecdir,
1470 install : true,
1471 install_dir : rootbindir)
1472 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001473
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001474 exe = executable('systemd-inhibit',
1475 'src/login/inhibit.c',
1476 include_directories : includes,
1477 link_with : [libshared],
1478 install_rpath : rootlibexecdir,
1479 install : true,
1480 install_dir : rootbindir)
1481 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001482
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001483 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001484 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1485 pam_systemd = shared_library(
1486 'pam_systemd',
1487 pam_systemd_c,
1488 name_prefix : '',
1489 include_directories : includes,
1490 link_args : ['-shared',
1491 '-Wl,--version-script=' + version_script_arg],
1492 link_with : [libsystemd_internal,
1493 libshared_static],
1494 dependencies : [threads,
1495 libpam,
1496 libpam_misc],
1497 link_depends : pam_systemd_sym,
1498 install : true,
1499 install_dir : pamlibdir)
1500
1501 test('dlopen-pam_systemd',
1502 test_dlopen,
1503 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1504 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001505endif
1506
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001507if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001508 executable('systemd-user-sessions',
1509 'src/user-sessions/user-sessions.c',
1510 include_directories : includes,
1511 link_with : [libshared],
1512 install_rpath : rootlibexecdir,
1513 install : true,
1514 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001515endif
1516
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001517if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001518 exe = executable('bootctl',
1519 'src/boot/bootctl.c',
1520 include_directories : includes,
1521 link_with : [libshared],
1522 dependencies : [libblkid],
1523 install_rpath : rootlibexecdir,
1524 install : true)
1525 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001526endif
1527
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001528exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1529 include_directories : includes,
1530 link_with : [libshared],
1531 dependencies : [threads],
1532 install_rpath : rootlibexecdir,
1533 install : true)
1534public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001535
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001536exe = executable('systemctl', 'src/systemctl/systemctl.c',
1537 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001538 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001539 dependencies : [threads,
1540 libcap,
1541 libselinux,
1542 libxz,
1543 liblz4],
1544 install_rpath : rootlibexecdir,
1545 install : true,
1546 install_dir : rootbindir)
1547public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001548
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001549if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001550 executable('systemd-backlight',
1551 'src/backlight/backlight.c',
1552 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001553 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001554 install_rpath : rootlibexecdir,
1555 install : true,
1556 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001557endif
1558
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001559if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001560 executable('systemd-rfkill',
1561 'src/rfkill/rfkill.c',
1562 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001563 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001564 install_rpath : rootlibexecdir,
1565 install : true,
1566 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001567endif
1568
1569executable('systemd-system-update-generator',
1570 'src/system-update-generator/system-update-generator.c',
1571 include_directories : includes,
1572 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001573 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001574 install : true,
1575 install_dir : systemgeneratordir)
1576
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001577if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001578 executable('systemd-cryptsetup',
1579 'src/cryptsetup/cryptsetup.c',
1580 include_directories : includes,
1581 link_with : [libshared],
1582 dependencies : [libcryptsetup],
1583 install_rpath : rootlibexecdir,
1584 install : true,
1585 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001586
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001587 executable('systemd-cryptsetup-generator',
1588 'src/cryptsetup/cryptsetup-generator.c',
1589 include_directories : includes,
1590 link_with : [libshared],
1591 dependencies : [libcryptsetup],
1592 install_rpath : rootlibexecdir,
1593 install : true,
1594 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001595
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001596 executable('systemd-veritysetup',
1597 'src/veritysetup/veritysetup.c',
1598 include_directories : includes,
1599 link_with : [libshared],
1600 dependencies : [libcryptsetup],
1601 install_rpath : rootlibexecdir,
1602 install : true,
1603 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001604
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001605 executable('systemd-veritysetup-generator',
1606 'src/veritysetup/veritysetup-generator.c',
1607 include_directories : includes,
1608 link_with : [libshared],
1609 dependencies : [libcryptsetup],
1610 install_rpath : rootlibexecdir,
1611 install : true,
1612 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001613endif
1614
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001615if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001616 executable('systemd-sysv-generator',
1617 'src/sysv-generator/sysv-generator.c',
1618 include_directories : includes,
1619 link_with : [libshared],
1620 install_rpath : rootlibexecdir,
1621 install : true,
1622 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001623
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001624 executable('systemd-rc-local-generator',
1625 'src/rc-local-generator/rc-local-generator.c',
1626 include_directories : includes,
1627 link_with : [libshared],
1628 install_rpath : rootlibexecdir,
1629 install : true,
1630 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001631endif
1632
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001633if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001634 executable('systemd-hostnamed',
1635 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001636 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001637 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001638 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001639 install : true,
1640 install_dir : rootlibexecdir)
1641
1642 exe = executable('hostnamectl',
1643 'src/hostname/hostnamectl.c',
1644 include_directories : includes,
1645 link_with : [libshared],
1646 install_rpath : rootlibexecdir,
1647 install : true)
1648 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001649endif
1650
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001651if conf.get('ENABLE_LOCALED') == 1
1652 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001653 # logind will load libxkbcommon.so dynamically on its own
1654 deps = [libdl]
1655 else
1656 deps = []
1657 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001658
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001659 executable('systemd-localed',
1660 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001661 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001662 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001663 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001664 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001665 install : true,
1666 install_dir : rootlibexecdir)
1667
1668 exe = executable('localectl',
1669 localectl_sources,
1670 include_directories : includes,
1671 link_with : [libshared],
1672 install_rpath : rootlibexecdir,
1673 install : true)
1674 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001675endif
1676
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001677if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001678 executable('systemd-timedated',
1679 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001680 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001681 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001682 install_rpath : rootlibexecdir,
1683 install : true,
1684 install_dir : rootlibexecdir)
1685
1686 exe = executable('timedatectl',
1687 'src/timedate/timedatectl.c',
1688 include_directories : includes,
1689 install_rpath : rootlibexecdir,
1690 link_with : [libshared],
1691 install : true)
1692 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001693endif
1694
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001695if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001696 executable('systemd-timesyncd',
1697 systemd_timesyncd_sources,
1698 include_directories : includes,
1699 link_with : [libshared],
1700 dependencies : [threads,
1701 libm],
1702 install_rpath : rootlibexecdir,
1703 install : true,
1704 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001705endif
1706
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001707if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001708 executable('systemd-machined',
1709 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001710 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001711 link_with : [libmachine_core,
1712 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001713 install_rpath : rootlibexecdir,
1714 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001715 install_dir : rootlibexecdir)
1716
1717 exe = executable('machinectl',
1718 'src/machine/machinectl.c',
1719 include_directories : includes,
1720 link_with : [libshared],
1721 dependencies : [threads,
1722 libxz,
1723 liblz4],
1724 install_rpath : rootlibexecdir,
1725 install : true,
1726 install_dir : rootbindir)
1727 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001728endif
1729
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001730if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001731 executable('systemd-importd',
1732 systemd_importd_sources,
1733 include_directories : includes,
1734 link_with : [libshared],
1735 dependencies : [threads],
1736 install_rpath : rootlibexecdir,
1737 install : true,
1738 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001739
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001740 systemd_pull = executable('systemd-pull',
1741 systemd_pull_sources,
1742 include_directories : includes,
1743 link_with : [libshared],
1744 dependencies : [libcurl,
1745 libz,
1746 libbzip2,
1747 libxz,
1748 libgcrypt],
1749 install_rpath : rootlibexecdir,
1750 install : true,
1751 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001752
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001753 systemd_import = executable('systemd-import',
1754 systemd_import_sources,
1755 include_directories : includes,
1756 link_with : [libshared],
1757 dependencies : [libcurl,
1758 libz,
1759 libbzip2,
1760 libxz],
1761 install_rpath : rootlibexecdir,
1762 install : true,
1763 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001764
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001765 systemd_export = executable('systemd-export',
1766 systemd_export_sources,
1767 include_directories : includes,
1768 link_with : [libshared],
1769 dependencies : [libcurl,
1770 libz,
1771 libbzip2,
1772 libxz],
1773 install_rpath : rootlibexecdir,
1774 install : true,
1775 install_dir : rootlibexecdir)
1776 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001777endif
1778
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001779if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001780 exe = executable('systemd-journal-upload',
1781 systemd_journal_upload_sources,
1782 include_directories : includes,
1783 link_with : [libshared],
1784 dependencies : [threads,
1785 libcurl,
1786 libgnutls,
1787 libxz,
1788 liblz4],
1789 install_rpath : rootlibexecdir,
1790 install : true,
1791 install_dir : rootlibexecdir)
1792 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001793endif
1794
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001795if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001796 s_j_remote = executable('systemd-journal-remote',
1797 systemd_journal_remote_sources,
1798 include_directories : includes,
1799 link_with : [libshared],
1800 dependencies : [threads,
1801 libmicrohttpd,
1802 libgnutls,
1803 libxz,
1804 liblz4],
1805 install_rpath : rootlibexecdir,
1806 install : true,
1807 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001808
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001809 s_j_gatewayd = executable('systemd-journal-gatewayd',
1810 systemd_journal_gatewayd_sources,
1811 include_directories : includes,
1812 link_with : [libshared],
1813 dependencies : [threads,
1814 libmicrohttpd,
1815 libgnutls,
1816 libxz,
1817 liblz4],
1818 install_rpath : rootlibexecdir,
1819 install : true,
1820 install_dir : rootlibexecdir)
1821 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001822endif
1823
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001824if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001825 executable('systemd-coredump',
1826 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001827 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001828 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001829 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001830 libacl,
1831 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001832 libxz,
1833 liblz4],
1834 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001835 install : true,
1836 install_dir : rootlibexecdir)
1837
1838 exe = executable('coredumpctl',
1839 coredumpctl_sources,
1840 include_directories : includes,
1841 link_with : [libshared],
1842 dependencies : [threads,
1843 libxz,
1844 liblz4],
1845 install_rpath : rootlibexecdir,
1846 install : true)
1847 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001848endif
1849
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001850if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001851 exe = executable('systemd-binfmt',
1852 'src/binfmt/binfmt.c',
1853 include_directories : includes,
1854 link_with : [libshared],
1855 install_rpath : rootlibexecdir,
1856 install : true,
1857 install_dir : rootlibexecdir)
1858 public_programs += [exe]
1859
1860 meson.add_install_script('sh', '-c',
1861 mkdir_p.format(binfmtdir))
1862 meson.add_install_script('sh', '-c',
1863 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
1864endif
1865
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001866if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001867 executable('systemd-vconsole-setup',
1868 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001869 include_directories : includes,
1870 link_with : [libshared],
1871 install_rpath : rootlibexecdir,
1872 install : true,
1873 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001874endif
1875
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001876if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001877 executable('systemd-random-seed',
1878 'src/random-seed/random-seed.c',
1879 include_directories : includes,
1880 link_with : [libshared],
1881 install_rpath : rootlibexecdir,
1882 install : true,
1883 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001884endif
1885
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001886if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001887 executable('systemd-firstboot',
1888 'src/firstboot/firstboot.c',
1889 include_directories : includes,
1890 link_with : [libshared],
1891 dependencies : [libcrypt],
1892 install_rpath : rootlibexecdir,
1893 install : true,
1894 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001895endif
1896
1897executable('systemd-remount-fs',
1898 'src/remount-fs/remount-fs.c',
1899 'src/core/mount-setup.c',
1900 'src/core/mount-setup.h',
1901 include_directories : includes,
1902 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001903 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001904 install : true,
1905 install_dir : rootlibexecdir)
1906
1907executable('systemd-machine-id-setup',
1908 'src/machine-id-setup/machine-id-setup-main.c',
1909 'src/core/machine-id-setup.c',
1910 'src/core/machine-id-setup.h',
1911 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001912 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001913 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001914 install : true,
1915 install_dir : rootbindir)
1916
1917executable('systemd-fsck',
1918 'src/fsck/fsck.c',
1919 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001920 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001921 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001922 install : true,
1923 install_dir : rootlibexecdir)
1924
1925executable('systemd-sleep',
1926 'src/sleep/sleep.c',
1927 include_directories : includes,
1928 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001929 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001930 install : true,
1931 install_dir : rootlibexecdir)
1932
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001933exe = executable('systemd-sysctl',
1934 'src/sysctl/sysctl.c',
1935 include_directories : includes,
1936 link_with : [libshared],
1937 install_rpath : rootlibexecdir,
1938 install : true,
1939 install_dir : rootlibexecdir)
1940public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001941
1942executable('systemd-ac-power',
1943 'src/ac-power/ac-power.c',
1944 include_directories : includes,
1945 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001946 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001947 install : true,
1948 install_dir : rootlibexecdir)
1949
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001950exe = executable('systemd-detect-virt',
1951 'src/detect-virt/detect-virt.c',
1952 include_directories : includes,
1953 link_with : [libshared],
1954 install_rpath : rootlibexecdir,
1955 install : true)
1956public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001957
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001958exe = executable('systemd-delta',
1959 'src/delta/delta.c',
1960 include_directories : includes,
1961 link_with : [libshared],
1962 install_rpath : rootlibexecdir,
1963 install : true)
1964public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001965
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001966exe = executable('systemd-escape',
1967 'src/escape/escape.c',
1968 include_directories : includes,
1969 link_with : [libshared],
1970 install_rpath : rootlibexecdir,
1971 install : true,
1972 install_dir : rootbindir)
1973public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001974
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001975exe = executable('systemd-notify',
1976 'src/notify/notify.c',
1977 include_directories : includes,
1978 link_with : [libshared],
1979 install_rpath : rootlibexecdir,
1980 install : true,
1981 install_dir : rootbindir)
1982public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001983
1984executable('systemd-volatile-root',
1985 'src/volatile-root/volatile-root.c',
1986 include_directories : includes,
1987 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001988 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001989 install : true,
1990 install_dir : rootlibexecdir)
1991
1992executable('systemd-cgroups-agent',
1993 'src/cgroups-agent/cgroups-agent.c',
1994 include_directories : includes,
1995 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001996 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001997 install : true,
1998 install_dir : rootlibexecdir)
1999
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002000exe = executable('systemd-path',
2001 'src/path/path.c',
2002 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002003 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002004 install_rpath : rootlibexecdir,
2005 install : true)
2006public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002007
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002008exe = executable('systemd-ask-password',
2009 'src/ask-password/ask-password.c',
2010 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002011 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002012 install_rpath : rootlibexecdir,
2013 install : true,
2014 install_dir : rootbindir)
2015public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002016
2017executable('systemd-reply-password',
2018 'src/reply-password/reply-password.c',
2019 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002020 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002021 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002022 install : true,
2023 install_dir : rootlibexecdir)
2024
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002025exe = executable('systemd-tty-ask-password-agent',
2026 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2027 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002028 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002029 install_rpath : rootlibexecdir,
2030 install : true,
2031 install_dir : rootbindir)
2032public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002033
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002034exe = executable('systemd-cgls',
2035 'src/cgls/cgls.c',
2036 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002037 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002038 install_rpath : rootlibexecdir,
2039 install : true)
2040public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002041
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002042exe = executable('systemd-cgtop',
2043 'src/cgtop/cgtop.c',
2044 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002045 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002046 install_rpath : rootlibexecdir,
2047 install : true)
2048public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002049
2050executable('systemd-initctl',
2051 'src/initctl/initctl.c',
2052 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002053 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002054 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002055 install : true,
2056 install_dir : rootlibexecdir)
2057
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002058exe = executable('systemd-mount',
2059 'src/mount/mount-tool.c',
2060 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002061 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002062 install_rpath : rootlibexecdir,
2063 install : true)
2064public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002065
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002066meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002067 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002068
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002069exe = executable('systemd-run',
2070 'src/run/run.c',
2071 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002072 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002073 install_rpath : rootlibexecdir,
2074 install : true)
2075public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002076
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002077exe = executable('systemd-stdio-bridge',
2078 'src/stdio-bridge/stdio-bridge.c',
2079 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002080 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002081 install_rpath : rootlibexecdir,
2082 install : true)
2083public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002084
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002085exe = executable('busctl',
2086 'src/busctl/busctl.c',
2087 'src/busctl/busctl-introspect.c',
2088 'src/busctl/busctl-introspect.h',
2089 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002090 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002091 install_rpath : rootlibexecdir,
2092 install : true)
2093public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002094
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002095if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002096 exe = executable('systemd-sysusers',
2097 'src/sysusers/sysusers.c',
2098 include_directories : includes,
2099 link_with : [libshared],
2100 install_rpath : rootlibexecdir,
2101 install : true,
2102 install_dir : rootbindir)
2103 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002104endif
2105
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002106if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002107 exe = executable('systemd-tmpfiles',
2108 'src/tmpfiles/tmpfiles.c',
2109 include_directories : includes,
2110 link_with : [libshared],
2111 dependencies : [libacl],
2112 install_rpath : rootlibexecdir,
2113 install : true,
2114 install_dir : rootbindir)
2115 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002116endif
2117
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002118if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002119 exe = executable('systemd-hwdb',
2120 'src/hwdb/hwdb.c',
2121 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2122 include_directories : includes,
Michael Biebl0da6f392017-04-21 18:32:14 +02002123 link_with : [libudev_internal],
2124 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002125 install : true,
2126 install_dir : rootbindir)
2127 public_programs += [exe]
2128endif
2129
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002130if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002131 executable('systemd-quotacheck',
2132 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002133 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002134 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002135 install_rpath : rootlibexecdir,
2136 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002137 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002138endif
2139
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002140exe = executable('systemd-socket-proxyd',
2141 'src/socket-proxy/socket-proxyd.c',
2142 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002143 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002144 dependencies : [threads],
2145 install_rpath : rootlibexecdir,
2146 install : true,
2147 install_dir : rootlibexecdir)
2148public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002149
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002150exe = executable('systemd-udevd',
2151 systemd_udevd_sources,
2152 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002153 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002154 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002155 libsystemd_network,
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002156 libudev_internal],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002157 dependencies : [threads,
2158 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002159 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002160 libacl,
2161 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002162 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002163 install : true,
2164 install_dir : rootlibexecdir)
2165public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002166
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002167exe = executable('udevadm',
2168 udevadm_sources,
2169 include_directories : includes,
2170 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002171 libsystemd_network,
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002172 libudev_internal],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002173 dependencies : [threads,
2174 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002175 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002176 libacl,
2177 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002178 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002179 install : true,
2180 install_dir : rootbindir)
2181public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002182
2183executable('systemd-shutdown',
2184 systemd_shutdown_sources,
2185 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002186 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002187 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002188 install : true,
2189 install_dir : rootlibexecdir)
2190
2191executable('systemd-update-done',
2192 'src/update-done/update-done.c',
2193 include_directories : includes,
2194 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002195 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002196 install : true,
2197 install_dir : rootlibexecdir)
2198
2199executable('systemd-update-utmp',
2200 'src/update-utmp/update-utmp.c',
2201 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002202 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002203 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002204 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002205 install : true,
2206 install_dir : rootlibexecdir)
2207
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002208if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002209 executable('systemd-modules-load',
2210 'src/modules-load/modules-load.c',
2211 include_directories : includes,
2212 link_with : [libshared],
2213 dependencies : [libkmod],
2214 install_rpath : rootlibexecdir,
2215 install : true,
2216 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002217
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002218 meson.add_install_script('sh', '-c',
2219 mkdir_p.format(modulesloaddir))
2220 meson.add_install_script('sh', '-c',
2221 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002222endif
2223
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002224exe = executable('systemd-nspawn',
2225 systemd_nspawn_sources,
2226 'src/core/mount-setup.c', # FIXME: use a variable?
2227 'src/core/mount-setup.h',
2228 'src/core/loopback-setup.c',
2229 'src/core/loopback-setup.h',
2230 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002231 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002232 dependencies : [libacl,
2233 libblkid,
2234 libseccomp,
2235 libselinux],
2236 install_rpath : rootlibexecdir,
2237 install : true)
2238public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002239
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002240if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002241 executable('systemd-networkd',
2242 systemd_networkd_sources,
2243 include_directories : includes,
2244 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002245 libsystemd_network,
2246 libudev_internal,
2247 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002248 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002249 install_rpath : rootlibexecdir,
2250 install : true,
2251 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002252
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002253 executable('systemd-networkd-wait-online',
2254 systemd_networkd_wait_online_sources,
2255 include_directories : includes,
2256 link_with : [libnetworkd_core,
2257 libshared],
2258 install_rpath : rootlibexecdir,
2259 install : true,
2260 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002261
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002262 exe = executable('networkctl',
2263 networkctl_sources,
2264 include_directories : includes,
2265 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002266 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002267 install_rpath : rootlibexecdir,
2268 install : true,
2269 install_dir : rootbindir)
2270 public_programs += [exe]
2271endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002272############################################################
2273
2274foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002275 sources = tuple[0]
2276 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2277 dependencies = tuple[2]
2278 condition = tuple.length() >= 4 ? tuple[3] : ''
2279 type = tuple.length() >= 5 ? tuple[4] : ''
2280 defs = tuple.length() >= 6 ? tuple[5] : []
2281 incs = tuple.length() >= 7 ? tuple[6] : includes
2282 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002283
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002284 name = sources[0].split('/')[-1].split('.')[0]
2285 if type.startswith('timeout=')
2286 timeout = type.split('=')[1].to_int()
2287 type = ''
2288 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002289
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002290 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002291 exe = executable(
2292 name,
2293 sources,
2294 include_directories : incs,
2295 link_with : link_with,
2296 dependencies : dependencies,
2297 c_args : defs,
2298 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002299 install : install_tests,
2300 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002301
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002302 if type == 'manual'
2303 message('@0@ is a manual test'.format(name))
2304 elif type == 'unsafe' and want_tests != 'unsafe'
2305 message('@0@ is an unsafe test'.format(name))
2306 else
2307 test(name, exe,
2308 env : test_env,
2309 timeout : timeout)
2310 endif
2311 else
2312 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2313 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002314endforeach
2315
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002316test_libsystemd_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002317 'test-libsystemd-sym',
2318 test_libsystemd_sym_c,
2319 include_directories : includes,
2320 link_with : [libsystemd],
2321 install : install_tests,
2322 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002323test('test-libsystemd-sym',
2324 test_libsystemd_sym)
2325
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002326test_libudev_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002327 'test-libudev-sym',
2328 test_libudev_sym_c,
2329 include_directories : includes,
2330 c_args : ['-Wno-deprecated-declarations'],
2331 link_with : [libudev],
2332 install : install_tests,
2333 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002334test('test-libudev-sym',
2335 test_libudev_sym)
2336
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002337############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002338
2339make_directive_index_py = find_program('tools/make-directive-index.py')
2340make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002341xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002342hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002343
2344subdir('units')
2345subdir('sysctl.d')
2346subdir('sysusers.d')
2347subdir('tmpfiles.d')
2348subdir('rules')
2349subdir('hwdb')
2350subdir('network')
2351subdir('man')
2352subdir('shell-completion/bash')
2353subdir('shell-completion/zsh')
2354subdir('docs/sysvinit')
2355subdir('docs/var-log')
2356
2357# FIXME: figure out if the warning is true:
2358# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2359install_subdir('factory/etc',
2360 install_dir : factorydir)
2361
2362
2363install_data('xorg/50-systemd-user.sh',
2364 install_dir : xinitrcdir)
2365install_data('system-preset/90-systemd.preset',
2366 install_dir : systempresetdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002367install_data('modprobe.d/systemd.conf',
2368 install_dir : modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002369install_data('README',
2370 'NEWS',
2371 'CODING_STYLE',
2372 'DISTRO_PORTING',
2373 'ENVIRONMENT.md',
2374 'LICENSE.GPL2',
2375 'LICENSE.LGPL2.1',
2376 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2377 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002378
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002379meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2380meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2381
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002382############################################################
2383
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002384meson_check_help = find_program('tools/meson-check-help.sh')
2385
2386foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002387 name = exec.full_path().split('/')[-1]
2388 test('check-help-' + name,
2389 meson_check_help,
2390 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002391endforeach
2392
2393############################################################
2394
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002395if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002396 all_files = run_command(
2397 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002398 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002399 'ls-files',
2400 ':/*.[ch]'])
2401 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002402
userwithuide85a6902017-08-09 13:41:44 +00002403 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002404 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002405 output : 'tags',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002406 command : ['env', 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002407 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002408 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002409 output : 'ctags',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002410 command : ['env', 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002411endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002412
2413if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002414 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002415 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002416 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002417 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002418endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002419
2420if git.found()
2421 git_head = run_command(
2422 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002423 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002424 'rev-parse', 'HEAD']).stdout().strip()
2425 git_head_short = run_command(
2426 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002427 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002428 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2429
2430 run_target(
2431 'git-snapshot',
2432 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002433 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002434 git_head_short),
2435 '--prefix', 'systemd-@0@/'.format(git_head),
2436 'HEAD'])
2437endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002438
2439############################################################
2440
2441status = [
2442 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2443
2444 'prefix: @0@'.format(prefixdir),
2445 'rootprefix: @0@'.format(rootprefixdir),
2446 'sysconf dir: @0@'.format(sysconfdir),
2447 'includedir: @0@'.format(includedir),
2448 'lib dir: @0@'.format(libdir),
2449 'rootlib dir: @0@'.format(rootlibdir),
2450 'SysV init scripts: @0@'.format(sysvinit_path),
2451 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
2452 'PAM modules dir: @0@'.format(pamlibdir),
2453 'PAM configuration dir: @0@'.format(pamconfdir),
2454 'RPM macros dir: @0@'.format(rpmmacrosdir),
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002455 'modprobe.d dir: @0@'.format(modprobedir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002456 'D-Bus policy dir: @0@'.format(dbuspolicydir),
2457 'D-Bus session dir: @0@'.format(dbussessionservicedir),
2458 'D-Bus system dir: @0@'.format(dbussystemservicedir),
2459 'bash completions dir: @0@'.format(bashcompletiondir),
2460 'zsh completions dir: @0@'.format(zshcompletiondir),
2461 'extra start script: @0@'.format(get_option('rc-local')),
2462 'extra stop script: @0@'.format(get_option('halt-local')),
2463 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2464 get_option('debug-tty')),
2465 'TTY GID: @0@'.format(tty_gid),
2466 'maximum system UID: @0@'.format(system_uid_max),
2467 'maximum system GID: @0@'.format(system_gid_max),
2468 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002469 'render group access mode: @0@'.format(get_option('group-render-mode')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002470 'certificate root: @0@'.format(get_option('certificate-root')),
2471 'support URL: @0@'.format(support_url),
2472 'nobody user name: @0@'.format(get_option('nobody-user')),
2473 'nobody group name: @0@'.format(get_option('nobody-group')),
2474 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002475 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002476
2477 'default DNSSEC mode: @0@'.format(default_dnssec),
2478 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2479 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2480
2481alt_dns_servers = '\n '.join(dns_servers.split(' '))
2482alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2483status += [
2484 'default DNS servers: @0@'.format(alt_dns_servers),
2485 'default NTP servers: @0@'.format(alt_ntp_servers)]
2486
2487alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2488 '@@0@'.format(time_epoch)).stdout().strip()
2489status += [
2490 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2491
2492# TODO:
2493# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2494# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2495# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2496
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002497if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002498 status += [
2499 'efi arch: @0@'.format(efi_arch)]
2500
2501 if have_gnu_efi
2502 status += [
2503 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2504 'EFI CC @0@'.format(efi_cc),
2505 'EFI libdir: @0@'.format(efi_libdir),
2506 'EFI ldsdir: @0@'.format(efi_ldsdir),
2507 'EFI includedir: @0@'.format(efi_incdir)]
2508 endif
2509endif
2510
2511found = []
2512missing = []
2513
2514foreach tuple : [
2515 ['libcryptsetup'],
2516 ['PAM'],
2517 ['AUDIT'],
2518 ['IMA'],
2519 ['AppArmor'],
2520 ['SELinux'],
2521 ['SECCOMP'],
2522 ['SMACK'],
2523 ['zlib'],
2524 ['xz'],
2525 ['lz4'],
2526 ['bzip2'],
2527 ['ACL'],
2528 ['gcrypt'],
2529 ['qrencode'],
2530 ['microhttpd'],
2531 ['gnutls'],
2532 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002533 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002534 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002535 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002536 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002537 ['libiptc'],
2538 ['elfutils'],
2539 ['binfmt'],
2540 ['vconsole'],
2541 ['quotacheck'],
2542 ['tmpfiles'],
2543 ['environment.d'],
2544 ['sysusers'],
2545 ['firstboot'],
2546 ['randomseed'],
2547 ['backlight'],
2548 ['rfkill'],
2549 ['logind'],
2550 ['machined'],
2551 ['importd'],
2552 ['hostnamed'],
2553 ['timedated'],
2554 ['timesyncd'],
2555 ['localed'],
2556 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002557 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002558 ['coredump'],
2559 ['polkit'],
2560 ['legacy pkla', install_polkit_pkla],
2561 ['efi'],
2562 ['gnu-efi', have_gnu_efi],
2563 ['kmod'],
2564 ['xkbcommon'],
2565 ['blkid'],
2566 ['dbus'],
2567 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002568 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002569 ['hwdb'],
2570 ['tpm'],
2571 ['man pages', want_man],
2572 ['html pages', want_html],
2573 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002574 ['split /usr', conf.get('HAVE_SPLIT_USR') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002575 ['SysV compat'],
2576 ['utmp'],
2577 ['ldconfig'],
2578 ['hibernate'],
2579 ['adm group', get_option('adm-group')],
2580 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002581 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002582 ['debug hashmap'],
2583 ['debug mmap cache'],
2584]
2585
2586 cond = tuple.get(1, '')
2587 if cond == ''
2588 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2589 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002590 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002591 endif
2592 if cond
2593 found += [tuple[0]]
2594 else
2595 missing += [tuple[0]]
2596 endif
2597endforeach
2598
2599status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002600 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002601 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002602 '',
2603 'disabled features: @0@'.format(', '.join(missing)),
2604 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002605message('\n '.join(status))