blob: 6926880b2964b5d5281f8a9ff86cdcd3e8e90baa [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')
Yu Watanabe8a38aac2017-11-23 22:20:22 +090097rpmmacrosdir = get_option('rpmmacrosdir')
98if rpmmacrosdir != 'no'
99 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
100endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200101modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400102
103# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400104pkgdatadir = join_paths(datadir, 'systemd')
105environmentdir = join_paths(prefixdir, 'lib/environment.d')
106pkgsysconfdir = join_paths(sysconfdir, 'systemd')
107userunitdir = join_paths(prefixdir, 'lib/systemd/user')
108userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
109tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
110sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
111sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
112binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
113modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
114networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
115pkgincludedir = join_paths(includedir, 'systemd')
116systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
117usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
118systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
119userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
120systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
121systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
122systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
123systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
124udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
125udevhomedir = udevlibexecdir
126udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
127udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
128catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
129kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
130factorydir = join_paths(datadir, 'factory')
131docdir = join_paths(datadir, 'doc/systemd')
132bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
133testsdir = join_paths(prefixdir, 'lib/systemd/tests')
134systemdstatedir = join_paths(localstatedir, 'lib/systemd')
135catalogstatedir = join_paths(systemdstatedir, 'catalog')
136randomseeddir = join_paths(localstatedir, 'lib/systemd')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400137
138dbuspolicydir = get_option('dbuspolicydir')
139if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400140 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400141endif
142
143dbussessionservicedir = get_option('dbussessionservicedir')
144if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400145 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400146endif
147
148dbussystemservicedir = get_option('dbussystemservicedir')
149if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400150 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400151endif
152
153pamlibdir = get_option('pamlibdir')
154if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400155 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400156endif
157
158pamconfdir = get_option('pamconfdir')
159if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400160 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400161endif
162
163conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400164conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400165conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
166conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
167conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400168conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
169conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400170conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400171conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
172conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400173conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
174conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
175conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
176conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
177conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
178conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
179conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
180conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
181conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400182conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400183conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
184conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400185conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
186conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
187conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
188conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
189conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
190conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400191conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
192conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400193conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400194conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400195conf.set_quoted('LIBDIR', libdir)
196conf.set_quoted('ROOTLIBDIR', rootlibdir)
197conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
198conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400199conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
200conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
201conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
202conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
203conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
204conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400205
206conf.set_quoted('ABS_BUILD_DIR', meson.build_root())
207conf.set_quoted('ABS_SRC_DIR', meson.source_root())
208
209substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400210substs.set('exec_prefix', prefixdir)
211substs.set('libdir', libdir)
212substs.set('rootlibdir', rootlibdir)
213substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400214substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400215substs.set('bindir', bindir)
216substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400217substs.set('rootlibexecdir', rootlibexecdir)
218substs.set('systemunitdir', systemunitdir)
219substs.set('userunitdir', userunitdir)
220substs.set('systempresetdir', systempresetdir)
221substs.set('userpresetdir', userpresetdir)
222substs.set('udevhwdbdir', udevhwdbdir)
223substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400224substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400225substs.set('catalogdir', catalogdir)
226substs.set('tmpfilesdir', tmpfilesdir)
227substs.set('sysusersdir', sysusersdir)
228substs.set('sysctldir', sysctldir)
229substs.set('binfmtdir', binfmtdir)
230substs.set('modulesloaddir', modulesloaddir)
231substs.set('systemgeneratordir', systemgeneratordir)
232substs.set('usergeneratordir', usergeneratordir)
233substs.set('systemenvgeneratordir', systemenvgeneratordir)
234substs.set('userenvgeneratordir', userenvgeneratordir)
235substs.set('systemshutdowndir', systemshutdowndir)
236substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400237substs.set('VARLOGDIR', varlogdir)
238substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400239substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
240substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400241substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
242substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
243substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
244substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400245
246#####################################################################
247
248cc = meson.get_compiler('c')
249pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400250check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400251
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400252cxx = find_program('c++', required : false)
253if cxx.found()
254 # Used only for tests
255 add_languages('cpp')
256endif
257
Zbigniew Jędrzejewski-Szmek75cf1d62017-07-04 17:59:15 -0400258foreach arg : ['-Wextra',
Zbigniew Jędrzejewski-Szmek70160ce2017-10-03 12:11:49 +0200259 '-Werror=undef',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400260 '-Wlogical-op',
261 '-Wmissing-include-dirs',
262 '-Wold-style-definition',
263 '-Wpointer-arith',
264 '-Winit-self',
265 '-Wdeclaration-after-statement',
266 '-Wfloat-equal',
267 '-Wsuggest-attribute=noreturn',
268 '-Werror=missing-prototypes',
269 '-Werror=implicit-function-declaration',
270 '-Werror=missing-declarations',
271 '-Werror=return-type',
272 '-Werror=incompatible-pointer-types',
273 '-Werror=format=2',
274 '-Wstrict-prototypes',
275 '-Wredundant-decls',
276 '-Wmissing-noreturn',
Zbigniew Jędrzejewski-Szmek97279d82017-11-20 14:23:40 +0100277 '-Wimplicit-fallthrough=5',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400278 '-Wshadow',
279 '-Wendif-labels',
280 '-Wstrict-aliasing=2',
281 '-Wwrite-strings',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400282 '-Werror=overflow',
283 '-Wdate-time',
284 '-Wnested-externs',
285 '-ffast-math',
286 '-fno-common',
287 '-fdiagnostics-show-option',
288 '-fno-strict-aliasing',
289 '-fvisibility=hidden',
290 '-fstack-protector',
291 '-fstack-protector-strong',
292 '-fPIE',
293 '--param=ssp-buffer-size=4',
294 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400295 if cc.has_argument(arg)
296 add_project_arguments(arg, language : 'c')
297 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400298endforeach
299
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400300# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
301# arguments, just emits a warnings. So test for the "positive" version instead.
302foreach arg : ['unused-parameter',
303 'missing-field-initializers',
304 'unused-result',
Zbigniew Jędrzejewski-Szmekfb1b5882017-09-04 19:49:12 +0300305 'format-signedness',
306 'error=nonnull', # work-around for gcc 7.1 turning this on on its own
307 ]
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400308 if cc.has_argument('-W' + arg)
309 add_project_arguments('-Wno-' + arg, language : 'c')
310 endif
311endforeach
312
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400313if cc.compiles('
314 #include <time.h>
315 #include <inttypes.h>
316 typedef uint64_t usec_t;
317 usec_t now(clockid_t clock);
318 int main(void) {
319 struct timespec now;
320 return 0;
321 }
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400322', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400323 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400324endif
325
326if cc.get_id() == 'clang'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400327 foreach arg : ['-Wno-typedef-redefinition',
328 '-Wno-gnu-variable-sized-type-not-at-end',
329 ]
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400330 if cc.has_argument(arg,
331 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400332 add_project_arguments(arg, language : 'c')
333 endif
334 endforeach
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400335endif
336
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400337link_test_c = files('tools/meson-link-test.c')
338
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400339# --as-needed and --no-undefined are provided by meson by default,
340# run mesonconf to see what is enabled
341foreach arg : ['-Wl,-z,relro',
342 '-Wl,-z,now',
343 '-pie',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400344 ]
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400345
346 have = run_command(check_compilation_sh,
347 cc.cmd_array(), '-x', 'c', arg,
348 '-include', link_test_c).returncode() == 0
349 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
350 if have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400351 add_project_link_arguments(arg, language : 'c')
352 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400353endforeach
354
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400355if get_option('buildtype') != 'debug'
356 foreach arg : ['-ffunction-sections',
357 '-fdata-sections']
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400358 if cc.has_argument(arg,
359 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400360 add_project_arguments(arg, language : 'c')
361 endif
362 endforeach
363
364 foreach arg : ['-Wl,--gc-sections']
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400365 have = run_command(check_compilation_sh,
366 cc.cmd_array(), '-x', 'c', arg,
367 '-include', link_test_c).returncode() == 0
368 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
369 if have
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400370 add_project_link_arguments(arg, language : 'c')
371 endif
372 endforeach
373endif
374
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400375cpp = ' '.join(cc.cmd_array()) + ' -E'
376
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400377#####################################################################
378# compilation result tests
379
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400380conf.set('_GNU_SOURCE', true)
381conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400382
383conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
384conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
385conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
386conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
387conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
388conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
389conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
390
391decl_headers = '''
392#include <uchar.h>
393#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000394#include <linux/fib_rules.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400395'''
396# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
397
398foreach decl : ['char16_t',
399 'char32_t',
400 'key_serial_t',
401 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000402 'struct fib_rule_uid_range',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400403 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400404
405 # We get -1 if the size cannot be determined
406 have = cc.sizeof(decl, prefix : decl_headers) > 0
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200407 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400408endforeach
409
410foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
411 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
412 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
413 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
414 ['IFLA_IPVLAN_MODE', 'linux/if_link.h'],
415 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
416 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
417 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
418 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
419 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530420 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400421 # if_tunnel.h is buggy and cannot be included on its own
422 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
423 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
424 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
425 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
426 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
427 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
428 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
429 ['NDA_IFINDEX', 'linux/neighbour.h'],
430 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000431 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400432 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530433 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400434 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400435 prefix = decl.length() > 2 ? decl[2] : ''
436 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200437 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400438endforeach
439
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400440foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200441 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400442endforeach
443
444foreach ident : [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400445 ['memfd_create', '''#include <sys/memfd.h>'''],
446 ['gettid', '''#include <sys/types.h>'''],
447 ['pivot_root', '''#include <stdlib.h>'''], # no known header declares pivot_root
448 ['name_to_handle_at', '''#define _GNU_SOURCE
449 #include <sys/types.h>
450 #include <sys/stat.h>
451 #include <fcntl.h>'''],
452 ['setns', '''#define _GNU_SOURCE
453 #include <sched.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400454 ['renameat2', '''#include <stdio.h>'''],
455 ['kcmp', '''#include <linux/kcmp.h>'''],
456 ['keyctl', '''#include <sys/types.h>
457 #include <keyutils.h>'''],
458 ['copy_file_range', '''#include <sys/syscall.h>
459 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200460 ['bpf', '''#include <sys/syscall.h>
461 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmek38f1ae02017-04-19 16:14:16 -0400462 ['explicit_bzero' , '''#include <string.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400463]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400464
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400465 have = cc.has_function(ident[0], prefix : ident[1])
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200466 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400467endforeach
468
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400469if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200470 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200471 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400472else
473 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200474 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200475 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400476endif
477
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400478#####################################################################
479
480sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400481awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400482m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400483stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400484git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400485
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400486meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400487mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400488test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
489splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400490
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400491# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
492# /usr/sbin, /sbin, and fall back to the default from middle column.
493progs = [['telinit', '/lib/sysvinit/telinit'],
494 ['quotaon', '/usr/sbin/quotaon' ],
495 ['quotacheck', '/usr/sbin/quotacheck' ],
496 ['kill', '/usr/bin/kill' ],
497 ['kmod', '/usr/bin/kmod' ],
498 ['kexec', '/usr/sbin/kexec' ],
499 ['sulogin', '/usr/sbin/sulogin' ],
500 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
501 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
502 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
503 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
504 ]
505foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400506 path = get_option(prog[0] + '-path')
507 if path != ''
508 message('Using @1@ for @0@'.format(prog[0], path))
509 else
510 exe = find_program(prog[0],
511 '/usr/sbin/' + prog[0],
512 '/sbin/' + prog[0],
513 required: false)
514 path = exe.found() ? exe.path() : prog[1]
515 endif
516 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
517 conf.set_quoted(name, path)
518 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400519endforeach
520
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400521if run_command('ln', '--relative', '--help').returncode() != 0
522 error('ln does not support --relative')
523endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400524
525############################################################
526
527gperf = find_program('gperf')
528
529gperf_test_format = '''
530#include <string.h>
531const char * in_word_set(const char *, @0@);
532@1@
533'''
534gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
535gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
536gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
537if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400538 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400539else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400540 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
541 if cc.compiles(gperf_test)
542 gperf_len_type = 'unsigned'
543 else
544 error('unable to determine gperf len type')
545 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400546endif
547message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400548conf.set('GPERF_LEN_TYPE', gperf_len_type,
549 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400550
551############################################################
552
553if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400554 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400555endif
556foreach header : ['linux/btrfs.h',
557 'linux/memfd.h',
558 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200559 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400560 'valgrind/memcheck.h',
561 'valgrind/valgrind.h',
562 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400563
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200564 conf.set10('HAVE_' + header.underscorify().to_upper(),
565 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400566endforeach
567
568############################################################
569
570conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400571conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
572gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400573
574default_hierarchy = get_option('default-hierarchy')
575conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
576 description : 'default cgroup hierarchy as string')
577if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400578 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400579elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400580 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400581else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400582 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400583endif
584
585time_epoch = get_option('time-epoch')
586if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400587 NEWS = files('NEWS')
588 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400589endif
590time_epoch = time_epoch.to_int()
591conf.set('TIME_EPOCH', time_epoch)
592
593system_uid_max = get_option('system-uid-max')
594if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400595 system_uid_max = run_command(
596 awk,
597 'BEGIN { uid=999 } /^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
598 '/etc/login.defs').stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400599endif
600system_uid_max = system_uid_max.to_int()
601conf.set('SYSTEM_UID_MAX', system_uid_max)
602substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400603message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400604
605conf.set_quoted('NOBODY_USER_NAME', get_option('nobody-user'))
606conf.set_quoted('NOBODY_GROUP_NAME', get_option('nobody-group'))
607
608system_gid_max = get_option('system-gid-max')
609if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400610 system_gid_max = run_command(
611 awk,
612 'BEGIN { gid=999 } /^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
613 '/etc/login.defs').stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400614endif
615system_gid_max = system_gid_max.to_int()
616conf.set('SYSTEM_GID_MAX', system_gid_max)
617substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400618message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400619
620tty_gid = get_option('tty-gid')
621conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400622substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400623
624if get_option('adm-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400625 m4_defines += ['-DENABLE_ADM_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400626endif
627
628if get_option('wheel-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400629 m4_defines += ['-DENABLE_WHEEL_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400630endif
631
632substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700633substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400634
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400635kill_user_processes = get_option('default-kill-user-processes')
636conf.set10('KILL_USER_PROCESSES', kill_user_processes)
637substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400638
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400639dns_servers = get_option('dns-servers')
640conf.set_quoted('DNS_SERVERS', dns_servers)
641substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400642
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400643ntp_servers = get_option('ntp-servers')
644conf.set_quoted('NTP_SERVERS', ntp_servers)
645substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400646
647conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
648
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400649substs.set('SUSHELL', get_option('debug-shell'))
650substs.set('DEBUGTTY', get_option('debug-tty'))
651
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400652debug = get_option('debug')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200653enable_debug_hashmap = false
654enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400655if debug != ''
656 foreach name : debug.split(',')
657 if name == 'hashmap'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200658 enable_debug_hashmap = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400659 elif name == 'mmap-cache'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200660 enable_debug_mmap_cache = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400661 else
662 message('unknown debug option "@0@", ignoring'.format(name))
663 endif
664 endforeach
665endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200666conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
667conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400668
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400669#####################################################################
670
671threads = dependency('threads')
672librt = cc.find_library('rt')
673libm = cc.find_library('m')
674libdl = cc.find_library('dl')
675libcrypt = cc.find_library('crypt')
676
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400677libcap = dependency('libcap', required : false)
678if not libcap.found()
679 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
680 libcap = cc.find_library('cap')
681endif
682
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400683libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekd6e80962017-09-15 14:47:57 +0200684 version : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400685
686want_seccomp = get_option('seccomp')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400687if want_seccomp != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400688 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400689 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400690 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200691 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400692else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200693 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400694 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400695endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200696conf.set10('HAVE_SECCOMP', have)
697m4_defines += have ? ['-DHAVE_SECCOMP'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400698
699want_selinux = get_option('selinux')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400700if want_selinux != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400701 libselinux = dependency('libselinux',
702 version : '>= 2.1.9',
703 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200704 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400705else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200706 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400707 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400708endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200709conf.set10('HAVE_SELINUX', have)
710m4_defines += have ? ['-DHAVE_SELINUX'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400711
712want_apparmor = get_option('apparmor')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400713if want_apparmor != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400714 libapparmor = dependency('libapparmor',
715 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200716 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400717else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200718 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400719 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400720endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200721conf.set10('HAVE_APPARMOR', have)
722m4_defines += have ? ['-DHAVE_APPARMOR'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400723
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400724smack_run_label = get_option('smack-run-label')
725if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400726 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
727 m4_defines += ['-DHAVE_SMACK_RUN_LABEL']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400728endif
729
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400730want_polkit = get_option('polkit')
731install_polkit = false
732install_polkit_pkla = false
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400733if want_polkit != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400734 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400735
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400736 libpolkit = dependency('polkit-gobject-1',
737 required : false)
738 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
739 message('Old polkit detected, will install pkla files')
740 install_polkit_pkla = true
741 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400742endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200743conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400744
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400745want_acl = get_option('acl')
746if want_acl != 'false'
747 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200748 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400749else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200750 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400751 libacl = []
752endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200753conf.set10('HAVE_ACL', have)
754m4_defines += have ? ['-DHAVE_ACL'] : []
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400755
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400756want_audit = get_option('audit')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400757if want_audit != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400758 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200759 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400760else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200761 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400762 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400763endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200764conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400765
766want_blkid = get_option('blkid')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400767if want_blkid != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400768 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200769 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400770else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200771 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400772 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400773endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200774conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400775
776want_kmod = get_option('kmod')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400777if want_kmod != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400778 libkmod = dependency('libkmod',
779 version : '>= 15',
780 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200781 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400782else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200783 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400784 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400785endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200786conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400787
788want_pam = get_option('pam')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400789if want_pam != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400790 libpam = cc.find_library('pam', required : want_pam == 'true')
791 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200792 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400793else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200794 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400795 libpam = []
796 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400797endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200798conf.set10('HAVE_PAM', have)
799m4_defines += have ? ['-DHAVE_PAM'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400800
801want_microhttpd = get_option('microhttpd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400802if want_microhttpd != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400803 libmicrohttpd = dependency('libmicrohttpd',
804 version : '>= 0.9.33',
805 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200806 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400807else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200808 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400809 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400810endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200811conf.set10('HAVE_MICROHTTPD', have)
812m4_defines += have ? ['-DHAVE_MICROHTTPD'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400813
814want_libcryptsetup = get_option('libcryptsetup')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400815if want_libcryptsetup != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400816 libcryptsetup = dependency('libcryptsetup',
817 version : '>= 1.6.0',
818 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200819 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400820else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200821 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400822 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400823endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200824conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400825
826want_libcurl = get_option('libcurl')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400827if want_libcurl != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400828 libcurl = dependency('libcurl',
829 version : '>= 7.32.0',
830 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200831 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400832else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200833 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400834 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400835endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200836conf.set10('HAVE_LIBCURL', have)
837m4_defines += have ? ['-DHAVE_LIBCURL'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400838
839want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400840want_libidn2 = get_option('libidn2')
841if want_libidn == 'true' and want_libidn2 == 'true'
842 error('libidn and libidn2 cannot be requested simultaneously')
843endif
844
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400845if want_libidn != 'false' and want_libidn2 != 'true'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400846 libidn = dependency('libidn',
847 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200848 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400849else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200850 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400851 libidn = []
852endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200853conf.set10('HAVE_LIBIDN', have)
854m4_defines += have ? ['-DHAVE_LIBIDN'] : []
855if not have and want_libidn2 != 'false'
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400856 # libidn is used for both libidn and libidn2 objects
857 libidn = dependency('libidn2',
858 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200859 have = libidn.found()
860else
861 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400862endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200863conf.set10('HAVE_LIBIDN2', have)
864m4_defines += have ? ['-DHAVE_LIBIDN2'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400865
866want_libiptc = get_option('libiptc')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400867if want_libiptc != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400868 libiptc = dependency('libiptc',
869 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200870 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400871else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200872 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400873 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400874endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200875conf.set10('HAVE_LIBIPTC', have)
876m4_defines += have ? ['-DHAVE_LIBIPTC'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400877
878want_qrencode = get_option('qrencode')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400879if want_qrencode != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400880 libqrencode = dependency('libqrencode',
881 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200882 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400883else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200884 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400885 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400886endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200887conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400888
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400889want_gcrypt = get_option('gcrypt')
890if want_gcrypt != 'false'
891 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
892 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200893 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400894else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200895 have = false
896endif
897if not have
898 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400899 libgcrypt = []
900 libgpg_error = []
901endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200902conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400903
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400904want_gnutls = get_option('gnutls')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400905if want_gnutls != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400906 libgnutls = dependency('gnutls',
907 version : '>= 3.1.4',
908 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200909 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400910else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200911 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400912 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400913endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200914conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400915
916want_elfutils = get_option('elfutils')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400917if want_elfutils != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400918 libdw = dependency('libdw',
919 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200920 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400921else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200922 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400923 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400924endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200925conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400926
927want_zlib = get_option('zlib')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400928if want_zlib != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400929 libz = dependency('zlib',
930 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200931 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400932else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200933 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400934 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400935endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200936conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400937
938want_bzip2 = get_option('bzip2')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400939if want_bzip2 != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400940 libbzip2 = cc.find_library('bz2',
941 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200942 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400943else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200944 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400945 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400946endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200947conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400948
949want_xz = get_option('xz')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400950if want_xz != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400951 libxz = dependency('liblzma',
952 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200953 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400954else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200955 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400956 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400957endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200958conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400959
960want_lz4 = get_option('lz4')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400961if want_lz4 != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400962 liblz4 = dependency('liblz4',
963 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200964 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400965else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200966 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400967 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400968endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200969conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400970
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400971want_xkbcommon = get_option('xkbcommon')
972if want_xkbcommon != 'false'
973 libxkbcommon = dependency('xkbcommon',
974 version : '>= 0.3.0',
975 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200976 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400977else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200978 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400979 libxkbcommon = []
980endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200981conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400982
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -0400983want_glib = get_option('glib')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400984if want_glib != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400985 libglib = dependency('glib-2.0',
986 version : '>= 2.22.0',
987 required : want_glib == 'true')
988 libgobject = dependency('gobject-2.0',
989 version : '>= 2.22.0',
990 required : want_glib == 'true')
991 libgio = dependency('gio-2.0',
992 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400993 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -0400994else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200995 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400996 libglib = []
997 libgobject = []
998 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -0400999endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001000conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001001
1002want_dbus = get_option('dbus')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001003if want_dbus != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001004 libdbus = dependency('dbus-1',
1005 version : '>= 1.3.2',
1006 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001007 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001008else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001009 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001010 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001011endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001012conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001013
Yu Watanabe42303dc2017-06-18 05:22:32 +09001014default_dnssec = get_option('default-dnssec')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001015if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001016 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1017 default_dnssec = 'no'
1018endif
1019conf.set('DEFAULT_DNSSEC_MODE',
1020 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1021substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1022
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001023want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001024if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001025 have = (conf.get('HAVE_LIBCURL') == 1 and
1026 conf.get('HAVE_ZLIB') == 1 and
1027 conf.get('HAVE_BZIP2') == 1 and
1028 conf.get('HAVE_XZ') == 1 and
1029 conf.get('HAVE_GCRYPT') == 1)
1030 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001031 error('importd support was requested, but dependencies are not available')
1032 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001033else
1034 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001035endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001036conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001037
1038want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001039if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001040 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1041 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001042 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1043 # it's possible to build one without the other. Complain only if
1044 # support was explictly requested. The auxiliary files like sysusers
1045 # config should be installed when any of the programs are built.
1046 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1047 error('remote support was requested, but dependencies are not available')
1048 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001049 have = have_deps[0] or have_deps[1]
1050else
1051 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001052endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001053conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001054
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001055foreach term : ['utmp',
1056 'hibernate',
1057 'environment-d',
1058 'binfmt',
1059 'coredump',
1060 'resolve',
1061 'logind',
1062 'hostnamed',
1063 'localed',
1064 'machined',
1065 'networkd',
1066 'timedated',
1067 'timesyncd',
1068 'myhostname',
1069 'firstboot',
1070 'randomseed',
1071 'backlight',
1072 'vconsole',
1073 'quotacheck',
1074 'sysusers',
1075 'tmpfiles',
1076 'hwdb',
1077 'rfkill',
1078 'ldconfig',
1079 'efi',
1080 'tpm',
1081 'ima',
1082 'smack',
1083 'gshadow',
1084 'idn',
1085 'nss-systemd']
1086 have = get_option(term)
1087 name = 'ENABLE_' + term.underscorify().to_upper()
1088 conf.set10(name, have)
1089 m4_defines += have ? ['-D' + name] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001090endforeach
1091
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001092want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001093install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001094tests = []
1095
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001096conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', get_option('slow-tests'))
1097
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001098#####################################################################
1099
1100if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001101 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001102
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001103 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001104 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001105 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001106 elif efi_arch == 'x86_64'
1107 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001108 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001109 elif efi_arch == 'arm'
1110 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001111 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001112 elif efi_arch == 'aarch64'
1113 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001114 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001115 else
1116 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001117 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001118 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001119
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001120 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001121 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001122
1123 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001124else
1125 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001126endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001127conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001128
1129#####################################################################
1130
1131config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001132 output : 'config.h',
1133 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001134
1135includes = include_directories('src/basic',
1136 'src/shared',
1137 'src/systemd',
1138 'src/journal',
1139 'src/resolve',
1140 'src/timesync',
1141 'src/login',
1142 'src/udev',
1143 'src/libudev',
1144 'src/core',
1145 'src/libsystemd/sd-bus',
1146 'src/libsystemd/sd-device',
1147 'src/libsystemd/sd-hwdb',
1148 'src/libsystemd/sd-id128',
1149 'src/libsystemd/sd-netlink',
1150 'src/libsystemd/sd-network',
1151 'src/libsystemd-network',
Davide Cavalca5e1771a2017-08-30 08:34:44 -07001152 '.',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001153 )
1154
1155add_project_arguments('-include', 'config.h', language : 'c')
1156
1157gcrypt_util_sources = files('src/shared/gcrypt-util.h',
1158 'src/shared/gcrypt-util.c')
1159
1160subdir('po')
1161subdir('catalog')
1162subdir('src/systemd')
1163subdir('src/basic')
1164subdir('src/libsystemd')
1165subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001166subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001167subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001168
1169libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001170 'journal-core',
1171 libjournal_core_sources,
1172 journald_gperf_c,
1173 include_directories : includes,
1174 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001175
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001176libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001177libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001178 'systemd',
1179 libsystemd_internal_sources,
1180 journal_internal_sources,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001181 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001182 include_directories : includes,
1183 link_args : ['-shared',
1184 '-Wl,--version-script=' + libsystemd_sym_path],
1185 link_with : [libbasic],
1186 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001187 libgcrypt,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001188 librt,
1189 libxz,
1190 liblz4],
1191 link_depends : libsystemd_sym,
1192 install : true,
1193 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001194
1195############################################################
1196
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001197# binaries that have --help and are intended for use by humans,
1198# usually, but not always, installed in /bin.
1199public_programs = []
1200
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001201subdir('src/libudev')
1202subdir('src/shared')
1203subdir('src/core')
1204subdir('src/udev')
1205subdir('src/network')
1206
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001207subdir('src/analyze')
1208subdir('src/journal-remote')
1209subdir('src/coredump')
1210subdir('src/hostname')
1211subdir('src/import')
1212subdir('src/kernel-install')
1213subdir('src/locale')
1214subdir('src/machine')
1215subdir('src/nspawn')
1216subdir('src/resolve')
1217subdir('src/timedate')
1218subdir('src/timesync')
1219subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmek4e4ab1c2017-04-10 12:37:52 -04001220subdir('src/sulogin-shell')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001221subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001222
1223subdir('src/test')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001224subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001225subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001226
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001227############################################################
1228
1229# only static linking apart from libdl, to make sure that the
1230# module is linked to all libraries that it uses.
1231test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001232 'test-dlopen',
1233 test_dlopen_c,
1234 include_directories : includes,
1235 link_with : [libbasic],
1236 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001237
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001238foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001239 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001240 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001241 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001242
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001243 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001244 if condition
1245 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001246
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001247 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1248 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001249
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001250 nss = shared_library(
1251 'nss_' + module,
1252 'src/nss-@0@/nss-@0@.c'.format(module),
1253 version : '2',
1254 include_directories : includes,
1255 link_args : ['-shared',
1256 '-Wl,--version-script=' + version_script_arg,
1257 '-Wl,--undefined'],
1258 link_with : [libsystemd_internal,
1259 libbasic],
1260 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001261 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001262 link_depends : sym,
1263 install : true,
1264 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001265
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001266 # We cannot use shared_module because it does not support version suffix.
1267 # Unfortunately shared_library insists on creating the symlink…
1268 meson.add_install_script('sh', '-c',
1269 'rm $DESTDIR@0@/libnss_@1@.so'
1270 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001271
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001272 test('dlopen-nss_' + module,
1273 test_dlopen,
1274 args : [nss.full_path()]) # path to dlopen must include a slash
1275 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001276endforeach
1277
1278############################################################
1279
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001280executable('systemd',
1281 systemd_sources,
1282 include_directories : includes,
1283 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001284 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001285 dependencies : [threads,
1286 librt,
1287 libseccomp,
1288 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001289 libmount,
1290 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001291 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001292 install : true,
1293 install_dir : rootlibexecdir)
1294
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001295exe = executable('systemd-analyze',
1296 systemd_analyze_sources,
1297 include_directories : includes,
1298 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001299 libshared],
1300 dependencies : [threads,
1301 librt,
1302 libseccomp,
1303 libselinux,
1304 libmount,
1305 libblkid],
1306 install_rpath : rootlibexecdir,
1307 install : true)
1308public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001309
1310executable('systemd-journald',
1311 systemd_journald_sources,
1312 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001313 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001314 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001315 dependencies : [threads,
1316 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001317 liblz4,
1318 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001319 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001320 install : true,
1321 install_dir : rootlibexecdir)
1322
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001323exe = executable('systemd-cat',
1324 systemd_cat_sources,
1325 include_directories : includes,
1326 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001327 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001328 dependencies : [threads],
1329 install_rpath : rootlibexecdir,
1330 install : true)
1331public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001332
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001333exe = executable('journalctl',
1334 journalctl_sources,
1335 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001336 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001337 dependencies : [threads,
1338 libqrencode,
1339 libxz,
1340 liblz4],
1341 install_rpath : rootlibexecdir,
1342 install : true,
1343 install_dir : rootbindir)
1344public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001345
1346executable('systemd-getty-generator',
1347 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001348 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001349 link_with : [libshared],
1350 install_rpath : rootlibexecdir,
1351 install : true,
1352 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001353
1354executable('systemd-debug-generator',
1355 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001356 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001357 link_with : [libshared],
1358 install_rpath : rootlibexecdir,
1359 install : true,
1360 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001361
1362executable('systemd-fstab-generator',
1363 'src/fstab-generator/fstab-generator.c',
1364 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001365 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001366 link_with : [libshared],
1367 install_rpath : rootlibexecdir,
1368 install : true,
1369 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001370
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001371if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001372 executable('30-systemd-environment-d-generator',
1373 'src/environment-d-generator/environment-d-generator.c',
1374 include_directories : includes,
1375 link_with : [libshared],
1376 install_rpath : rootlibexecdir,
1377 install : true,
1378 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001379
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001380 meson.add_install_script(meson_make_symlink,
1381 join_paths(sysconfdir, 'environment'),
1382 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001383endif
1384
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001385if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001386 executable('systemd-hibernate-resume-generator',
1387 'src/hibernate-resume/hibernate-resume-generator.c',
1388 include_directories : includes,
1389 link_with : [libshared],
1390 install_rpath : rootlibexecdir,
1391 install : true,
1392 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001393
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001394 executable('systemd-hibernate-resume',
1395 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001396 include_directories : includes,
1397 link_with : [libshared],
1398 install_rpath : rootlibexecdir,
1399 install : true,
1400 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001401endif
1402
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001403if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001404 executable('systemd-gpt-auto-generator',
1405 'src/gpt-auto-generator/gpt-auto-generator.c',
1406 'src/basic/blkid-util.h',
1407 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001408 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001409 dependencies : libblkid,
1410 install_rpath : rootlibexecdir,
1411 install : true,
1412 install_dir : systemgeneratordir)
1413
1414 exe = executable('systemd-dissect',
1415 'src/dissect/dissect.c',
1416 include_directories : includes,
1417 link_with : [libshared],
1418 install_rpath : rootlibexecdir,
1419 install : true,
1420 install_dir : rootlibexecdir)
1421 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001422endif
1423
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001424if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001425 executable('systemd-resolved',
1426 systemd_resolved_sources,
Michael Biebl76c87412017-04-21 23:45:54 +02001427 gcrypt_util_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001428 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001429 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001430 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001431 libgcrypt,
1432 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001433 libm,
1434 libidn],
1435 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001436 install : true,
1437 install_dir : rootlibexecdir)
1438
1439 exe = executable('systemd-resolve',
1440 systemd_resolve_sources,
Michael Biebl76c87412017-04-21 23:45:54 +02001441 gcrypt_util_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001442 include_directories : includes,
1443 link_with : [libshared],
1444 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001445 libgcrypt,
1446 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001447 libm,
1448 libidn],
1449 install_rpath : rootlibexecdir,
1450 install : true)
1451 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001452endif
1453
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001454if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001455 executable('systemd-logind',
1456 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001457 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001458 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001459 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001460 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001461 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001462 install_rpath : rootlibexecdir,
1463 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001464 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001465
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001466 exe = executable('loginctl',
1467 loginctl_sources,
1468 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001469 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001470 dependencies : [threads,
1471 liblz4,
1472 libxz],
1473 install_rpath : rootlibexecdir,
1474 install : true,
1475 install_dir : rootbindir)
1476 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001477
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001478 exe = executable('systemd-inhibit',
1479 'src/login/inhibit.c',
1480 include_directories : includes,
1481 link_with : [libshared],
1482 install_rpath : rootlibexecdir,
1483 install : true,
1484 install_dir : rootbindir)
1485 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001486
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001487 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001488 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1489 pam_systemd = shared_library(
1490 'pam_systemd',
1491 pam_systemd_c,
1492 name_prefix : '',
1493 include_directories : includes,
1494 link_args : ['-shared',
1495 '-Wl,--version-script=' + version_script_arg],
1496 link_with : [libsystemd_internal,
1497 libshared_static],
1498 dependencies : [threads,
1499 libpam,
1500 libpam_misc],
1501 link_depends : pam_systemd_sym,
1502 install : true,
1503 install_dir : pamlibdir)
1504
1505 test('dlopen-pam_systemd',
1506 test_dlopen,
1507 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1508 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001509endif
1510
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001511if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001512 executable('systemd-user-sessions',
1513 'src/user-sessions/user-sessions.c',
1514 include_directories : includes,
1515 link_with : [libshared],
1516 install_rpath : rootlibexecdir,
1517 install : true,
1518 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001519endif
1520
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001521if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001522 exe = executable('bootctl',
1523 'src/boot/bootctl.c',
1524 include_directories : includes,
1525 link_with : [libshared],
1526 dependencies : [libblkid],
1527 install_rpath : rootlibexecdir,
1528 install : true)
1529 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001530endif
1531
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001532exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1533 include_directories : includes,
1534 link_with : [libshared],
1535 dependencies : [threads],
1536 install_rpath : rootlibexecdir,
1537 install : true)
1538public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001539
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001540exe = executable('systemctl', 'src/systemctl/systemctl.c',
1541 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001542 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001543 dependencies : [threads,
1544 libcap,
1545 libselinux,
1546 libxz,
1547 liblz4],
1548 install_rpath : rootlibexecdir,
1549 install : true,
1550 install_dir : rootbindir)
1551public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001552
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001553if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001554 executable('systemd-backlight',
1555 'src/backlight/backlight.c',
1556 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001557 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001558 install_rpath : rootlibexecdir,
1559 install : true,
1560 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001561endif
1562
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001563if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001564 executable('systemd-rfkill',
1565 'src/rfkill/rfkill.c',
1566 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001567 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001568 install_rpath : rootlibexecdir,
1569 install : true,
1570 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001571endif
1572
1573executable('systemd-system-update-generator',
1574 'src/system-update-generator/system-update-generator.c',
1575 include_directories : includes,
1576 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001577 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001578 install : true,
1579 install_dir : systemgeneratordir)
1580
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001581if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001582 executable('systemd-cryptsetup',
1583 'src/cryptsetup/cryptsetup.c',
1584 include_directories : includes,
1585 link_with : [libshared],
1586 dependencies : [libcryptsetup],
1587 install_rpath : rootlibexecdir,
1588 install : true,
1589 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001590
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001591 executable('systemd-cryptsetup-generator',
1592 'src/cryptsetup/cryptsetup-generator.c',
1593 include_directories : includes,
1594 link_with : [libshared],
1595 dependencies : [libcryptsetup],
1596 install_rpath : rootlibexecdir,
1597 install : true,
1598 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001599
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001600 executable('systemd-veritysetup',
1601 'src/veritysetup/veritysetup.c',
1602 include_directories : includes,
1603 link_with : [libshared],
1604 dependencies : [libcryptsetup],
1605 install_rpath : rootlibexecdir,
1606 install : true,
1607 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001608
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001609 executable('systemd-veritysetup-generator',
1610 'src/veritysetup/veritysetup-generator.c',
1611 include_directories : includes,
1612 link_with : [libshared],
1613 dependencies : [libcryptsetup],
1614 install_rpath : rootlibexecdir,
1615 install : true,
1616 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001617endif
1618
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001619if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001620 executable('systemd-sysv-generator',
1621 'src/sysv-generator/sysv-generator.c',
1622 include_directories : includes,
1623 link_with : [libshared],
1624 install_rpath : rootlibexecdir,
1625 install : true,
1626 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001627
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001628 executable('systemd-rc-local-generator',
1629 'src/rc-local-generator/rc-local-generator.c',
1630 include_directories : includes,
1631 link_with : [libshared],
1632 install_rpath : rootlibexecdir,
1633 install : true,
1634 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001635endif
1636
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001637if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001638 executable('systemd-hostnamed',
1639 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001640 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001641 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001642 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001643 install : true,
1644 install_dir : rootlibexecdir)
1645
1646 exe = executable('hostnamectl',
1647 'src/hostname/hostnamectl.c',
1648 include_directories : includes,
1649 link_with : [libshared],
1650 install_rpath : rootlibexecdir,
1651 install : true)
1652 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001653endif
1654
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001655if conf.get('ENABLE_LOCALED') == 1
1656 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001657 # logind will load libxkbcommon.so dynamically on its own
1658 deps = [libdl]
1659 else
1660 deps = []
1661 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001662
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001663 executable('systemd-localed',
1664 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001665 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001666 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001667 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001668 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001669 install : true,
1670 install_dir : rootlibexecdir)
1671
1672 exe = executable('localectl',
1673 localectl_sources,
1674 include_directories : includes,
1675 link_with : [libshared],
1676 install_rpath : rootlibexecdir,
1677 install : true)
1678 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001679endif
1680
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001681if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001682 executable('systemd-timedated',
1683 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001684 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001685 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001686 install_rpath : rootlibexecdir,
1687 install : true,
1688 install_dir : rootlibexecdir)
1689
1690 exe = executable('timedatectl',
1691 'src/timedate/timedatectl.c',
1692 include_directories : includes,
1693 install_rpath : rootlibexecdir,
1694 link_with : [libshared],
1695 install : true)
1696 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001697endif
1698
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001699if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001700 executable('systemd-timesyncd',
1701 systemd_timesyncd_sources,
1702 include_directories : includes,
1703 link_with : [libshared],
1704 dependencies : [threads,
1705 libm],
1706 install_rpath : rootlibexecdir,
1707 install : true,
1708 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001709endif
1710
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001711if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001712 executable('systemd-machined',
1713 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001714 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001715 link_with : [libmachine_core,
1716 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001717 install_rpath : rootlibexecdir,
1718 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001719 install_dir : rootlibexecdir)
1720
1721 exe = executable('machinectl',
1722 'src/machine/machinectl.c',
1723 include_directories : includes,
1724 link_with : [libshared],
1725 dependencies : [threads,
1726 libxz,
1727 liblz4],
1728 install_rpath : rootlibexecdir,
1729 install : true,
1730 install_dir : rootbindir)
1731 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001732endif
1733
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001734if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001735 executable('systemd-importd',
1736 systemd_importd_sources,
1737 include_directories : includes,
1738 link_with : [libshared],
1739 dependencies : [threads],
1740 install_rpath : rootlibexecdir,
1741 install : true,
1742 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001743
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001744 systemd_pull = executable('systemd-pull',
1745 systemd_pull_sources,
1746 include_directories : includes,
1747 link_with : [libshared],
1748 dependencies : [libcurl,
1749 libz,
1750 libbzip2,
1751 libxz,
1752 libgcrypt],
1753 install_rpath : rootlibexecdir,
1754 install : true,
1755 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001756
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001757 systemd_import = executable('systemd-import',
1758 systemd_import_sources,
1759 include_directories : includes,
1760 link_with : [libshared],
1761 dependencies : [libcurl,
1762 libz,
1763 libbzip2,
1764 libxz],
1765 install_rpath : rootlibexecdir,
1766 install : true,
1767 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001768
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001769 systemd_export = executable('systemd-export',
1770 systemd_export_sources,
1771 include_directories : includes,
1772 link_with : [libshared],
1773 dependencies : [libcurl,
1774 libz,
1775 libbzip2,
1776 libxz],
1777 install_rpath : rootlibexecdir,
1778 install : true,
1779 install_dir : rootlibexecdir)
1780 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001781endif
1782
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001783if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001784 exe = executable('systemd-journal-upload',
1785 systemd_journal_upload_sources,
1786 include_directories : includes,
1787 link_with : [libshared],
1788 dependencies : [threads,
1789 libcurl,
1790 libgnutls,
1791 libxz,
1792 liblz4],
1793 install_rpath : rootlibexecdir,
1794 install : true,
1795 install_dir : rootlibexecdir)
1796 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001797endif
1798
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001799if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001800 s_j_remote = executable('systemd-journal-remote',
1801 systemd_journal_remote_sources,
1802 include_directories : includes,
1803 link_with : [libshared],
1804 dependencies : [threads,
1805 libmicrohttpd,
1806 libgnutls,
1807 libxz,
1808 liblz4],
1809 install_rpath : rootlibexecdir,
1810 install : true,
1811 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001812
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001813 s_j_gatewayd = executable('systemd-journal-gatewayd',
1814 systemd_journal_gatewayd_sources,
1815 include_directories : includes,
1816 link_with : [libshared],
1817 dependencies : [threads,
1818 libmicrohttpd,
1819 libgnutls,
1820 libxz,
1821 liblz4],
1822 install_rpath : rootlibexecdir,
1823 install : true,
1824 install_dir : rootlibexecdir)
1825 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001826endif
1827
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001828if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001829 executable('systemd-coredump',
1830 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001831 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001832 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001833 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001834 libacl,
1835 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001836 libxz,
1837 liblz4],
1838 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001839 install : true,
1840 install_dir : rootlibexecdir)
1841
1842 exe = executable('coredumpctl',
1843 coredumpctl_sources,
1844 include_directories : includes,
1845 link_with : [libshared],
1846 dependencies : [threads,
1847 libxz,
1848 liblz4],
1849 install_rpath : rootlibexecdir,
1850 install : true)
1851 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001852endif
1853
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001854if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001855 exe = executable('systemd-binfmt',
1856 'src/binfmt/binfmt.c',
1857 include_directories : includes,
1858 link_with : [libshared],
1859 install_rpath : rootlibexecdir,
1860 install : true,
1861 install_dir : rootlibexecdir)
1862 public_programs += [exe]
1863
1864 meson.add_install_script('sh', '-c',
1865 mkdir_p.format(binfmtdir))
1866 meson.add_install_script('sh', '-c',
1867 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
1868endif
1869
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001870if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001871 executable('systemd-vconsole-setup',
1872 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001873 include_directories : includes,
1874 link_with : [libshared],
1875 install_rpath : rootlibexecdir,
1876 install : true,
1877 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001878endif
1879
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001880if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001881 executable('systemd-random-seed',
1882 'src/random-seed/random-seed.c',
1883 include_directories : includes,
1884 link_with : [libshared],
1885 install_rpath : rootlibexecdir,
1886 install : true,
1887 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001888endif
1889
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001890if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001891 executable('systemd-firstboot',
1892 'src/firstboot/firstboot.c',
1893 include_directories : includes,
1894 link_with : [libshared],
1895 dependencies : [libcrypt],
1896 install_rpath : rootlibexecdir,
1897 install : true,
1898 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001899endif
1900
1901executable('systemd-remount-fs',
1902 'src/remount-fs/remount-fs.c',
1903 'src/core/mount-setup.c',
1904 'src/core/mount-setup.h',
1905 include_directories : includes,
1906 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001907 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001908 install : true,
1909 install_dir : rootlibexecdir)
1910
1911executable('systemd-machine-id-setup',
1912 'src/machine-id-setup/machine-id-setup-main.c',
1913 'src/core/machine-id-setup.c',
1914 'src/core/machine-id-setup.h',
1915 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001916 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001917 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001918 install : true,
1919 install_dir : rootbindir)
1920
1921executable('systemd-fsck',
1922 'src/fsck/fsck.c',
1923 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001924 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001925 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001926 install : true,
1927 install_dir : rootlibexecdir)
1928
1929executable('systemd-sleep',
1930 'src/sleep/sleep.c',
1931 include_directories : includes,
1932 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001933 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001934 install : true,
1935 install_dir : rootlibexecdir)
1936
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001937exe = executable('systemd-sysctl',
1938 'src/sysctl/sysctl.c',
1939 include_directories : includes,
1940 link_with : [libshared],
1941 install_rpath : rootlibexecdir,
1942 install : true,
1943 install_dir : rootlibexecdir)
1944public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001945
1946executable('systemd-ac-power',
1947 'src/ac-power/ac-power.c',
1948 include_directories : includes,
1949 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001950 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001951 install : true,
1952 install_dir : rootlibexecdir)
1953
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001954exe = executable('systemd-detect-virt',
1955 'src/detect-virt/detect-virt.c',
1956 include_directories : includes,
1957 link_with : [libshared],
1958 install_rpath : rootlibexecdir,
1959 install : true)
1960public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001961
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001962exe = executable('systemd-delta',
1963 'src/delta/delta.c',
1964 include_directories : includes,
1965 link_with : [libshared],
1966 install_rpath : rootlibexecdir,
1967 install : true)
1968public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001969
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001970exe = executable('systemd-escape',
1971 'src/escape/escape.c',
1972 include_directories : includes,
1973 link_with : [libshared],
1974 install_rpath : rootlibexecdir,
1975 install : true,
1976 install_dir : rootbindir)
1977public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001978
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001979exe = executable('systemd-notify',
1980 'src/notify/notify.c',
1981 include_directories : includes,
1982 link_with : [libshared],
1983 install_rpath : rootlibexecdir,
1984 install : true,
1985 install_dir : rootbindir)
1986public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001987
1988executable('systemd-volatile-root',
1989 'src/volatile-root/volatile-root.c',
1990 include_directories : includes,
1991 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001992 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001993 install : true,
1994 install_dir : rootlibexecdir)
1995
1996executable('systemd-cgroups-agent',
1997 'src/cgroups-agent/cgroups-agent.c',
1998 include_directories : includes,
1999 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002000 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002001 install : true,
2002 install_dir : rootlibexecdir)
2003
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002004exe = executable('systemd-path',
2005 'src/path/path.c',
2006 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002007 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002008 install_rpath : rootlibexecdir,
2009 install : true)
2010public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002011
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002012exe = executable('systemd-ask-password',
2013 'src/ask-password/ask-password.c',
2014 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002015 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002016 install_rpath : rootlibexecdir,
2017 install : true,
2018 install_dir : rootbindir)
2019public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002020
2021executable('systemd-reply-password',
2022 'src/reply-password/reply-password.c',
2023 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002024 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002025 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002026 install : true,
2027 install_dir : rootlibexecdir)
2028
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002029exe = executable('systemd-tty-ask-password-agent',
2030 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2031 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002032 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002033 install_rpath : rootlibexecdir,
2034 install : true,
2035 install_dir : rootbindir)
2036public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002037
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002038exe = executable('systemd-cgls',
2039 'src/cgls/cgls.c',
2040 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002041 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002042 install_rpath : rootlibexecdir,
2043 install : true)
2044public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002045
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002046exe = executable('systemd-cgtop',
2047 'src/cgtop/cgtop.c',
2048 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002049 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002050 install_rpath : rootlibexecdir,
2051 install : true)
2052public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002053
2054executable('systemd-initctl',
2055 'src/initctl/initctl.c',
2056 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002057 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002058 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002059 install : true,
2060 install_dir : rootlibexecdir)
2061
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002062exe = executable('systemd-mount',
2063 'src/mount/mount-tool.c',
2064 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002065 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002066 install_rpath : rootlibexecdir,
2067 install : true)
2068public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002069
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002070meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002071 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002072
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002073exe = executable('systemd-run',
2074 'src/run/run.c',
2075 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002076 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002077 install_rpath : rootlibexecdir,
2078 install : true)
2079public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002080
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002081exe = executable('systemd-stdio-bridge',
2082 'src/stdio-bridge/stdio-bridge.c',
2083 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002084 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002085 install_rpath : rootlibexecdir,
2086 install : true)
2087public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002088
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002089exe = executable('busctl',
2090 'src/busctl/busctl.c',
2091 'src/busctl/busctl-introspect.c',
2092 'src/busctl/busctl-introspect.h',
2093 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002094 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002095 install_rpath : rootlibexecdir,
2096 install : true)
2097public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002098
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002099if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002100 exe = executable('systemd-sysusers',
2101 'src/sysusers/sysusers.c',
2102 include_directories : includes,
2103 link_with : [libshared],
2104 install_rpath : rootlibexecdir,
2105 install : true,
2106 install_dir : rootbindir)
2107 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002108endif
2109
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002110if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002111 exe = executable('systemd-tmpfiles',
2112 'src/tmpfiles/tmpfiles.c',
2113 include_directories : includes,
2114 link_with : [libshared],
2115 dependencies : [libacl],
2116 install_rpath : rootlibexecdir,
2117 install : true,
2118 install_dir : rootbindir)
2119 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002120endif
2121
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002122if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002123 exe = executable('systemd-hwdb',
2124 'src/hwdb/hwdb.c',
2125 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2126 include_directories : includes,
Michael Biebl0da6f392017-04-21 18:32:14 +02002127 link_with : [libudev_internal],
2128 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002129 install : true,
2130 install_dir : rootbindir)
2131 public_programs += [exe]
2132endif
2133
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002134if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002135 executable('systemd-quotacheck',
2136 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002137 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002138 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002139 install_rpath : rootlibexecdir,
2140 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002141 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002142endif
2143
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002144exe = executable('systemd-socket-proxyd',
2145 'src/socket-proxy/socket-proxyd.c',
2146 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002147 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002148 dependencies : [threads],
2149 install_rpath : rootlibexecdir,
2150 install : true,
2151 install_dir : rootlibexecdir)
2152public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002153
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002154exe = executable('systemd-udevd',
2155 systemd_udevd_sources,
2156 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002157 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002158 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002159 libsystemd_network,
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002160 libudev_internal],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002161 dependencies : [threads,
2162 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002163 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002164 libacl,
2165 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002166 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002167 install : true,
2168 install_dir : rootlibexecdir)
2169public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002170
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002171exe = executable('udevadm',
2172 udevadm_sources,
2173 include_directories : includes,
2174 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002175 libsystemd_network,
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002176 libudev_internal],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002177 dependencies : [threads,
2178 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002179 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002180 libacl,
2181 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002182 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002183 install : true,
2184 install_dir : rootbindir)
2185public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002186
2187executable('systemd-shutdown',
2188 systemd_shutdown_sources,
2189 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002190 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002191 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002192 install : true,
2193 install_dir : rootlibexecdir)
2194
2195executable('systemd-update-done',
2196 'src/update-done/update-done.c',
2197 include_directories : includes,
2198 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002199 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002200 install : true,
2201 install_dir : rootlibexecdir)
2202
2203executable('systemd-update-utmp',
2204 'src/update-utmp/update-utmp.c',
2205 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002206 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002207 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002208 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002209 install : true,
2210 install_dir : rootlibexecdir)
2211
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002212if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002213 executable('systemd-modules-load',
2214 'src/modules-load/modules-load.c',
2215 include_directories : includes,
2216 link_with : [libshared],
2217 dependencies : [libkmod],
2218 install_rpath : rootlibexecdir,
2219 install : true,
2220 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002221
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002222 meson.add_install_script('sh', '-c',
2223 mkdir_p.format(modulesloaddir))
2224 meson.add_install_script('sh', '-c',
2225 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002226endif
2227
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002228exe = executable('systemd-nspawn',
2229 systemd_nspawn_sources,
2230 'src/core/mount-setup.c', # FIXME: use a variable?
2231 'src/core/mount-setup.h',
2232 'src/core/loopback-setup.c',
2233 'src/core/loopback-setup.h',
2234 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002235 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002236 dependencies : [libacl,
2237 libblkid,
2238 libseccomp,
2239 libselinux],
2240 install_rpath : rootlibexecdir,
2241 install : true)
2242public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002243
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002244if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002245 executable('systemd-networkd',
2246 systemd_networkd_sources,
2247 include_directories : includes,
2248 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002249 libsystemd_network,
2250 libudev_internal,
2251 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002252 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002253 install_rpath : rootlibexecdir,
2254 install : true,
2255 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002256
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002257 executable('systemd-networkd-wait-online',
2258 systemd_networkd_wait_online_sources,
2259 include_directories : includes,
2260 link_with : [libnetworkd_core,
2261 libshared],
2262 install_rpath : rootlibexecdir,
2263 install : true,
2264 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002265
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002266 exe = executable('networkctl',
2267 networkctl_sources,
2268 include_directories : includes,
2269 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002270 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002271 install_rpath : rootlibexecdir,
2272 install : true,
2273 install_dir : rootbindir)
2274 public_programs += [exe]
2275endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002276############################################################
2277
2278foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002279 sources = tuple[0]
2280 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2281 dependencies = tuple[2]
2282 condition = tuple.length() >= 4 ? tuple[3] : ''
2283 type = tuple.length() >= 5 ? tuple[4] : ''
2284 defs = tuple.length() >= 6 ? tuple[5] : []
2285 incs = tuple.length() >= 7 ? tuple[6] : includes
2286 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002287
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002288 name = sources[0].split('/')[-1].split('.')[0]
2289 if type.startswith('timeout=')
2290 timeout = type.split('=')[1].to_int()
2291 type = ''
2292 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002293
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002294 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002295 exe = executable(
2296 name,
2297 sources,
2298 include_directories : incs,
2299 link_with : link_with,
2300 dependencies : dependencies,
2301 c_args : defs,
2302 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002303 install : install_tests,
2304 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002305
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002306 if type == 'manual'
2307 message('@0@ is a manual test'.format(name))
2308 elif type == 'unsafe' and want_tests != 'unsafe'
2309 message('@0@ is an unsafe test'.format(name))
2310 else
2311 test(name, exe,
2312 env : test_env,
2313 timeout : timeout)
2314 endif
2315 else
2316 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2317 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002318endforeach
2319
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002320test_libsystemd_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002321 'test-libsystemd-sym',
2322 test_libsystemd_sym_c,
2323 include_directories : includes,
2324 link_with : [libsystemd],
2325 install : install_tests,
2326 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002327test('test-libsystemd-sym',
2328 test_libsystemd_sym)
2329
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002330test_libudev_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002331 'test-libudev-sym',
2332 test_libudev_sym_c,
2333 include_directories : includes,
2334 c_args : ['-Wno-deprecated-declarations'],
2335 link_with : [libudev],
2336 install : install_tests,
2337 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002338test('test-libudev-sym',
2339 test_libudev_sym)
2340
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002341############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002342
2343make_directive_index_py = find_program('tools/make-directive-index.py')
2344make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002345xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002346hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002347
2348subdir('units')
2349subdir('sysctl.d')
2350subdir('sysusers.d')
2351subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002352subdir('hwdb')
2353subdir('network')
2354subdir('man')
2355subdir('shell-completion/bash')
2356subdir('shell-completion/zsh')
2357subdir('docs/sysvinit')
2358subdir('docs/var-log')
2359
2360# FIXME: figure out if the warning is true:
2361# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2362install_subdir('factory/etc',
2363 install_dir : factorydir)
2364
2365
2366install_data('xorg/50-systemd-user.sh',
2367 install_dir : xinitrcdir)
2368install_data('system-preset/90-systemd.preset',
2369 install_dir : systempresetdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002370install_data('modprobe.d/systemd.conf',
2371 install_dir : modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002372install_data('README',
2373 'NEWS',
2374 'CODING_STYLE',
2375 'DISTRO_PORTING',
2376 'ENVIRONMENT.md',
2377 'LICENSE.GPL2',
2378 'LICENSE.LGPL2.1',
2379 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2380 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002381
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002382meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2383meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2384
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002385############################################################
2386
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002387meson_check_help = find_program('tools/meson-check-help.sh')
2388
2389foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002390 name = exec.full_path().split('/')[-1]
2391 test('check-help-' + name,
2392 meson_check_help,
2393 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002394endforeach
2395
2396############################################################
2397
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002398if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002399 all_files = run_command(
2400 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002401 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002402 'ls-files',
2403 ':/*.[ch]'])
2404 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002405
userwithuide85a6902017-08-09 13:41:44 +00002406 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002407 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002408 output : 'tags',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002409 command : ['env', 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002410 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002411 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002412 output : 'ctags',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002413 command : ['env', 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002414endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002415
2416if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002417 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002418 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002419 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002420 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002421endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002422
2423if git.found()
2424 git_head = run_command(
2425 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002426 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002427 'rev-parse', 'HEAD']).stdout().strip()
2428 git_head_short = run_command(
2429 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002430 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002431 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2432
2433 run_target(
2434 'git-snapshot',
2435 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002436 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002437 git_head_short),
2438 '--prefix', 'systemd-@0@/'.format(git_head),
2439 'HEAD'])
2440endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002441
2442############################################################
2443
2444status = [
2445 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2446
Yu Watanabe359b4962017-11-25 20:35:24 +09002447 'prefix directory: @0@'.format(prefixdir),
2448 'rootprefix directory: @0@'.format(rootprefixdir),
2449 'sysconf directory: @0@'.format(sysconfdir),
2450 'include directory: @0@'.format(includedir),
2451 'lib directory: @0@'.format(libdir),
2452 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002453 'SysV init scripts: @0@'.format(sysvinit_path),
2454 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002455 'PAM modules directory: @0@'.format(pamlibdir),
2456 'PAM configuration directory: @0@'.format(pamconfdir),
2457 'RPM macros directory: @0@'.format(rpmmacrosdir),
2458 'modprobe.d directory: @0@'.format(modprobedir),
2459 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2460 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2461 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2462 'bash completions directory: @0@'.format(bashcompletiondir),
2463 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002464 'extra start script: @0@'.format(get_option('rc-local')),
2465 'extra stop script: @0@'.format(get_option('halt-local')),
2466 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2467 get_option('debug-tty')),
2468 'TTY GID: @0@'.format(tty_gid),
2469 'maximum system UID: @0@'.format(system_uid_max),
2470 'maximum system GID: @0@'.format(system_gid_max),
2471 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002472 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002473 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002474 'support URL: @0@'.format(support_url),
2475 'nobody user name: @0@'.format(get_option('nobody-user')),
2476 'nobody group name: @0@'.format(get_option('nobody-group')),
2477 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002478 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002479
2480 'default DNSSEC mode: @0@'.format(default_dnssec),
2481 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2482 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2483
2484alt_dns_servers = '\n '.join(dns_servers.split(' '))
2485alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2486status += [
2487 'default DNS servers: @0@'.format(alt_dns_servers),
2488 'default NTP servers: @0@'.format(alt_ntp_servers)]
2489
2490alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2491 '@@0@'.format(time_epoch)).stdout().strip()
2492status += [
2493 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2494
2495# TODO:
2496# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2497# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2498# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2499
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002500if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002501 status += [
2502 'efi arch: @0@'.format(efi_arch)]
2503
2504 if have_gnu_efi
2505 status += [
2506 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2507 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002508 'EFI lib directory: @0@'.format(efi_libdir),
2509 'EFI lds directory: @0@'.format(efi_ldsdir),
2510 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002511 endif
2512endif
2513
2514found = []
2515missing = []
2516
2517foreach tuple : [
2518 ['libcryptsetup'],
2519 ['PAM'],
2520 ['AUDIT'],
2521 ['IMA'],
2522 ['AppArmor'],
2523 ['SELinux'],
2524 ['SECCOMP'],
2525 ['SMACK'],
2526 ['zlib'],
2527 ['xz'],
2528 ['lz4'],
2529 ['bzip2'],
2530 ['ACL'],
2531 ['gcrypt'],
2532 ['qrencode'],
2533 ['microhttpd'],
2534 ['gnutls'],
2535 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002536 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002537 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002538 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002539 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002540 ['libiptc'],
2541 ['elfutils'],
2542 ['binfmt'],
2543 ['vconsole'],
2544 ['quotacheck'],
2545 ['tmpfiles'],
2546 ['environment.d'],
2547 ['sysusers'],
2548 ['firstboot'],
2549 ['randomseed'],
2550 ['backlight'],
2551 ['rfkill'],
2552 ['logind'],
2553 ['machined'],
2554 ['importd'],
2555 ['hostnamed'],
2556 ['timedated'],
2557 ['timesyncd'],
2558 ['localed'],
2559 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002560 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002561 ['coredump'],
2562 ['polkit'],
2563 ['legacy pkla', install_polkit_pkla],
2564 ['efi'],
2565 ['gnu-efi', have_gnu_efi],
2566 ['kmod'],
2567 ['xkbcommon'],
2568 ['blkid'],
2569 ['dbus'],
2570 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002571 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002572 ['hwdb'],
2573 ['tpm'],
2574 ['man pages', want_man],
2575 ['html pages', want_html],
2576 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002577 ['split /usr', conf.get('HAVE_SPLIT_USR') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002578 ['SysV compat'],
2579 ['utmp'],
2580 ['ldconfig'],
2581 ['hibernate'],
2582 ['adm group', get_option('adm-group')],
2583 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002584 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002585 ['debug hashmap'],
2586 ['debug mmap cache'],
2587]
2588
2589 cond = tuple.get(1, '')
2590 if cond == ''
2591 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2592 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002593 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002594 endif
2595 if cond
2596 found += [tuple[0]]
2597 else
2598 missing += [tuple[0]]
2599 endif
2600endforeach
2601
2602status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002603 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002604 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002605 '',
2606 'disabled features: @0@'.format(', '.join(missing)),
2607 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002608message('\n '.join(status))