blob: 052474895d532bb7cff456bd3c22df0b9e4d5079 [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-Szmek74344a12017-11-28 20:00:10 +010057rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020058conf.set10('HAVE_SPLIT_USR', get_option('split-usr'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010059# Unusual rootprefixdir values are used by some distros
60# (see https://github.com/systemd/systemd/pull/7461).
61if get_option('split-usr')
62 rootprefixdir = rootprefixdir != '' ? rootprefixdir : '/'
63else
64 rootprefixdir = rootprefixdir != '' ? rootprefixdir : '/usr'
65endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040066
67sysvinit_path = get_option('sysvinit-path')
68sysvrcnd_path = get_option('sysvrcnd-path')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020069have = sysvinit_path != '' or sysvrcnd_path != ''
70conf.set10('HAVE_SYSV_COMPAT', have,
71 description : 'SysV init scripts and rcN.d links are supported')
72m4_defines += have ? ['-DHAVE_SYSV_COMPAT'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040073
74# join_paths ignore the preceding arguments if an absolute component is
75# encountered, so this should canonicalize various paths when they are
76# absolute or relative.
77prefixdir = get_option('prefix')
78if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040079 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040080endif
81bindir = join_paths(prefixdir, get_option('bindir'))
82libdir = join_paths(prefixdir, get_option('libdir'))
83sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
84includedir = join_paths(prefixdir, get_option('includedir'))
85datadir = join_paths(prefixdir, get_option('datadir'))
86localstatedir = join_paths('/', get_option('localstatedir'))
87
88rootbindir = join_paths(rootprefixdir, 'bin')
89rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
90
91rootlibdir = get_option('rootlibdir')
92if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040093 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040094endif
95
96# Dirs of external packages
Michael Bieble17e5ba2017-04-13 10:30:56 -040097pkgconfigdatadir = join_paths(datadir, 'pkgconfig')
98pkgconfiglibdir = join_paths(libdir, 'pkgconfig')
99polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
100polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
101polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
102varlogdir = join_paths(localstatedir, 'log')
103xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900104rpmmacrosdir = get_option('rpmmacrosdir')
105if rpmmacrosdir != 'no'
106 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
107endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200108modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400109
110# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400111pkgdatadir = join_paths(datadir, 'systemd')
112environmentdir = join_paths(prefixdir, 'lib/environment.d')
113pkgsysconfdir = join_paths(sysconfdir, 'systemd')
114userunitdir = join_paths(prefixdir, 'lib/systemd/user')
115userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
116tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
117sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
118sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
119binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
120modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
121networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
122pkgincludedir = join_paths(includedir, 'systemd')
123systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
124usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
125systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
126userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
127systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
128systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
129systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
130systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
131udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
132udevhomedir = udevlibexecdir
133udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
134udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
135catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
136kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
137factorydir = join_paths(datadir, 'factory')
138docdir = join_paths(datadir, 'doc/systemd')
139bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
140testsdir = join_paths(prefixdir, 'lib/systemd/tests')
141systemdstatedir = join_paths(localstatedir, 'lib/systemd')
142catalogstatedir = join_paths(systemdstatedir, 'catalog')
143randomseeddir = join_paths(localstatedir, 'lib/systemd')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400144
145dbuspolicydir = get_option('dbuspolicydir')
146if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400147 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400148endif
149
150dbussessionservicedir = get_option('dbussessionservicedir')
151if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400152 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400153endif
154
155dbussystemservicedir = get_option('dbussystemservicedir')
156if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400157 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400158endif
159
160pamlibdir = get_option('pamlibdir')
161if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400162 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400163endif
164
165pamconfdir = get_option('pamconfdir')
166if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400167 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400168endif
169
170conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400171conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400172conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
173conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
174conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400175conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
176conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400177conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400178conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
179conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400180conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
181conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
182conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
183conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
184conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
185conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
186conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
187conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
188conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100189conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400190conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400191conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
192conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400193conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
194conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
195conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
196conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
197conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
198conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400199conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
200conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400201conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400202conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400203conf.set_quoted('LIBDIR', libdir)
204conf.set_quoted('ROOTLIBDIR', rootlibdir)
205conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
206conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400207conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
208conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
209conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
210conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
211conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
212conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400213
214conf.set_quoted('ABS_BUILD_DIR', meson.build_root())
215conf.set_quoted('ABS_SRC_DIR', meson.source_root())
216
217substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400218substs.set('exec_prefix', prefixdir)
219substs.set('libdir', libdir)
220substs.set('rootlibdir', rootlibdir)
221substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400222substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400223substs.set('bindir', bindir)
224substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400225substs.set('rootlibexecdir', rootlibexecdir)
226substs.set('systemunitdir', systemunitdir)
227substs.set('userunitdir', userunitdir)
228substs.set('systempresetdir', systempresetdir)
229substs.set('userpresetdir', userpresetdir)
230substs.set('udevhwdbdir', udevhwdbdir)
231substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400232substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400233substs.set('catalogdir', catalogdir)
234substs.set('tmpfilesdir', tmpfilesdir)
235substs.set('sysusersdir', sysusersdir)
236substs.set('sysctldir', sysctldir)
237substs.set('binfmtdir', binfmtdir)
238substs.set('modulesloaddir', modulesloaddir)
239substs.set('systemgeneratordir', systemgeneratordir)
240substs.set('usergeneratordir', usergeneratordir)
241substs.set('systemenvgeneratordir', systemenvgeneratordir)
242substs.set('userenvgeneratordir', userenvgeneratordir)
243substs.set('systemshutdowndir', systemshutdowndir)
244substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400245substs.set('VARLOGDIR', varlogdir)
246substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400247substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
248substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400249substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
250substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
251substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
252substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400253
254#####################################################################
255
256cc = meson.get_compiler('c')
257pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400258check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400259
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400260cxx = find_program('c++', required : false)
261if cxx.found()
262 # Used only for tests
263 add_languages('cpp')
264endif
265
Zbigniew Jędrzejewski-Szmek75cf1d62017-07-04 17:59:15 -0400266foreach arg : ['-Wextra',
Zbigniew Jędrzejewski-Szmek70160ce2017-10-03 12:11:49 +0200267 '-Werror=undef',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400268 '-Wlogical-op',
269 '-Wmissing-include-dirs',
270 '-Wold-style-definition',
271 '-Wpointer-arith',
272 '-Winit-self',
273 '-Wdeclaration-after-statement',
274 '-Wfloat-equal',
275 '-Wsuggest-attribute=noreturn',
276 '-Werror=missing-prototypes',
277 '-Werror=implicit-function-declaration',
278 '-Werror=missing-declarations',
279 '-Werror=return-type',
280 '-Werror=incompatible-pointer-types',
281 '-Werror=format=2',
282 '-Wstrict-prototypes',
283 '-Wredundant-decls',
284 '-Wmissing-noreturn',
Zbigniew Jędrzejewski-Szmek97279d82017-11-20 14:23:40 +0100285 '-Wimplicit-fallthrough=5',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400286 '-Wshadow',
287 '-Wendif-labels',
288 '-Wstrict-aliasing=2',
289 '-Wwrite-strings',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400290 '-Werror=overflow',
291 '-Wdate-time',
292 '-Wnested-externs',
293 '-ffast-math',
294 '-fno-common',
295 '-fdiagnostics-show-option',
296 '-fno-strict-aliasing',
297 '-fvisibility=hidden',
298 '-fstack-protector',
299 '-fstack-protector-strong',
300 '-fPIE',
301 '--param=ssp-buffer-size=4',
302 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400303 if cc.has_argument(arg)
304 add_project_arguments(arg, language : 'c')
305 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400306endforeach
307
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400308# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
309# arguments, just emits a warnings. So test for the "positive" version instead.
310foreach arg : ['unused-parameter',
311 'missing-field-initializers',
312 'unused-result',
Zbigniew Jędrzejewski-Szmekfb1b5882017-09-04 19:49:12 +0300313 'format-signedness',
314 'error=nonnull', # work-around for gcc 7.1 turning this on on its own
315 ]
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400316 if cc.has_argument('-W' + arg)
317 add_project_arguments('-Wno-' + arg, language : 'c')
318 endif
319endforeach
320
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400321if cc.compiles('
322 #include <time.h>
323 #include <inttypes.h>
324 typedef uint64_t usec_t;
325 usec_t now(clockid_t clock);
326 int main(void) {
327 struct timespec now;
328 return 0;
329 }
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400330', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400331 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400332endif
333
334if cc.get_id() == 'clang'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400335 foreach arg : ['-Wno-typedef-redefinition',
336 '-Wno-gnu-variable-sized-type-not-at-end',
337 ]
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400338 if cc.has_argument(arg,
339 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400340 add_project_arguments(arg, language : 'c')
341 endif
342 endforeach
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400343endif
344
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400345link_test_c = files('tools/meson-link-test.c')
346
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400347# --as-needed and --no-undefined are provided by meson by default,
348# run mesonconf to see what is enabled
349foreach arg : ['-Wl,-z,relro',
350 '-Wl,-z,now',
351 '-pie',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400352 ]
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400353
354 have = run_command(check_compilation_sh,
355 cc.cmd_array(), '-x', 'c', arg,
356 '-include', link_test_c).returncode() == 0
357 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
358 if have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400359 add_project_link_arguments(arg, language : 'c')
360 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400361endforeach
362
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400363if get_option('buildtype') != 'debug'
364 foreach arg : ['-ffunction-sections',
365 '-fdata-sections']
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400366 if cc.has_argument(arg,
367 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400368 add_project_arguments(arg, language : 'c')
369 endif
370 endforeach
371
372 foreach arg : ['-Wl,--gc-sections']
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400373 have = run_command(check_compilation_sh,
374 cc.cmd_array(), '-x', 'c', arg,
375 '-include', link_test_c).returncode() == 0
376 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
377 if have
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400378 add_project_link_arguments(arg, language : 'c')
379 endif
380 endforeach
381endif
382
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400383cpp = ' '.join(cc.cmd_array()) + ' -E'
384
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400385#####################################################################
386# compilation result tests
387
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400388conf.set('_GNU_SOURCE', true)
389conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400390
391conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
392conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
393conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
394conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
395conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
396conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
397conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
398
399decl_headers = '''
400#include <uchar.h>
401#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000402#include <linux/fib_rules.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400403'''
404# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
405
406foreach decl : ['char16_t',
407 'char32_t',
408 'key_serial_t',
409 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000410 'struct fib_rule_uid_range',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400411 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400412
413 # We get -1 if the size cannot be determined
414 have = cc.sizeof(decl, prefix : decl_headers) > 0
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200415 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400416endforeach
417
418foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
419 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
420 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
421 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
422 ['IFLA_IPVLAN_MODE', 'linux/if_link.h'],
423 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
424 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
425 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
426 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
427 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530428 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400429 # if_tunnel.h is buggy and cannot be included on its own
430 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
431 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
432 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
433 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
434 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
435 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
436 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
437 ['NDA_IFINDEX', 'linux/neighbour.h'],
438 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000439 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400440 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530441 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400442 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400443 prefix = decl.length() > 2 ? decl[2] : ''
444 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200445 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400446endforeach
447
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400448foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200449 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400450endforeach
451
452foreach ident : [
Yu Watanabee4816452017-11-26 02:17:06 +0900453 ['memfd_create', '''#define _GNU_SOURCE
454 #include <sys/mman.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400455 ['gettid', '''#include <sys/types.h>'''],
456 ['pivot_root', '''#include <stdlib.h>'''], # no known header declares pivot_root
457 ['name_to_handle_at', '''#define _GNU_SOURCE
458 #include <sys/types.h>
459 #include <sys/stat.h>
460 #include <fcntl.h>'''],
461 ['setns', '''#define _GNU_SOURCE
462 #include <sched.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400463 ['renameat2', '''#include <stdio.h>'''],
464 ['kcmp', '''#include <linux/kcmp.h>'''],
465 ['keyctl', '''#include <sys/types.h>
466 #include <keyutils.h>'''],
467 ['copy_file_range', '''#include <sys/syscall.h>
468 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200469 ['bpf', '''#include <sys/syscall.h>
470 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmek38f1ae02017-04-19 16:14:16 -0400471 ['explicit_bzero' , '''#include <string.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400472]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400473
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400474 have = cc.has_function(ident[0], prefix : ident[1])
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200475 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400476endforeach
477
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400478if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200479 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200480 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400481else
482 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200483 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200484 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400485endif
486
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400487#####################################################################
488
489sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400490awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400491m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400492stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400493git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400494
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400495meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400496mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400497test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
498splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400499
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400500# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
501# /usr/sbin, /sbin, and fall back to the default from middle column.
502progs = [['telinit', '/lib/sysvinit/telinit'],
503 ['quotaon', '/usr/sbin/quotaon' ],
504 ['quotacheck', '/usr/sbin/quotacheck' ],
505 ['kill', '/usr/bin/kill' ],
506 ['kmod', '/usr/bin/kmod' ],
507 ['kexec', '/usr/sbin/kexec' ],
508 ['sulogin', '/usr/sbin/sulogin' ],
509 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
510 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
511 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
512 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
513 ]
514foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400515 path = get_option(prog[0] + '-path')
516 if path != ''
517 message('Using @1@ for @0@'.format(prog[0], path))
518 else
519 exe = find_program(prog[0],
520 '/usr/sbin/' + prog[0],
521 '/sbin/' + prog[0],
522 required: false)
523 path = exe.found() ? exe.path() : prog[1]
524 endif
525 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
526 conf.set_quoted(name, path)
527 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400528endforeach
529
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400530if run_command('ln', '--relative', '--help').returncode() != 0
531 error('ln does not support --relative')
532endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400533
534############################################################
535
536gperf = find_program('gperf')
537
538gperf_test_format = '''
539#include <string.h>
540const char * in_word_set(const char *, @0@);
541@1@
542'''
543gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
544gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
545gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
546if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400547 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400548else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400549 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
550 if cc.compiles(gperf_test)
551 gperf_len_type = 'unsigned'
552 else
553 error('unable to determine gperf len type')
554 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400555endif
556message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400557conf.set('GPERF_LEN_TYPE', gperf_len_type,
558 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400559
560############################################################
561
562if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400563 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400564endif
565foreach header : ['linux/btrfs.h',
566 'linux/memfd.h',
567 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200568 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400569 'valgrind/memcheck.h',
570 'valgrind/valgrind.h',
571 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400572
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200573 conf.set10('HAVE_' + header.underscorify().to_upper(),
574 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400575endforeach
576
577############################################################
578
579conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400580conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
581gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400582
583default_hierarchy = get_option('default-hierarchy')
584conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
585 description : 'default cgroup hierarchy as string')
586if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400587 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400588elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400589 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400590else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400591 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400592endif
593
594time_epoch = get_option('time-epoch')
595if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400596 NEWS = files('NEWS')
597 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400598endif
599time_epoch = time_epoch.to_int()
600conf.set('TIME_EPOCH', time_epoch)
601
602system_uid_max = get_option('system-uid-max')
603if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400604 system_uid_max = run_command(
605 awk,
606 'BEGIN { uid=999 } /^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
607 '/etc/login.defs').stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400608endif
609system_uid_max = system_uid_max.to_int()
610conf.set('SYSTEM_UID_MAX', system_uid_max)
611substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400612message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400613
614conf.set_quoted('NOBODY_USER_NAME', get_option('nobody-user'))
615conf.set_quoted('NOBODY_GROUP_NAME', get_option('nobody-group'))
616
617system_gid_max = get_option('system-gid-max')
618if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400619 system_gid_max = run_command(
620 awk,
621 'BEGIN { gid=999 } /^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
622 '/etc/login.defs').stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400623endif
624system_gid_max = system_gid_max.to_int()
625conf.set('SYSTEM_GID_MAX', system_gid_max)
626substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400627message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400628
629tty_gid = get_option('tty-gid')
630conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400631substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400632
633if get_option('adm-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400634 m4_defines += ['-DENABLE_ADM_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400635endif
636
637if get_option('wheel-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400638 m4_defines += ['-DENABLE_WHEEL_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400639endif
640
641substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700642substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400643
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400644kill_user_processes = get_option('default-kill-user-processes')
645conf.set10('KILL_USER_PROCESSES', kill_user_processes)
646substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400647
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400648dns_servers = get_option('dns-servers')
649conf.set_quoted('DNS_SERVERS', dns_servers)
650substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400651
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400652ntp_servers = get_option('ntp-servers')
653conf.set_quoted('NTP_SERVERS', ntp_servers)
654substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400655
656conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
657
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400658substs.set('SUSHELL', get_option('debug-shell'))
659substs.set('DEBUGTTY', get_option('debug-tty'))
660
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400661debug = get_option('debug')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200662enable_debug_hashmap = false
663enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400664if debug != ''
665 foreach name : debug.split(',')
666 if name == 'hashmap'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200667 enable_debug_hashmap = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400668 elif name == 'mmap-cache'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200669 enable_debug_mmap_cache = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400670 else
671 message('unknown debug option "@0@", ignoring'.format(name))
672 endif
673 endforeach
674endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200675conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
676conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400677
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400678#####################################################################
679
680threads = dependency('threads')
681librt = cc.find_library('rt')
682libm = cc.find_library('m')
683libdl = cc.find_library('dl')
684libcrypt = cc.find_library('crypt')
685
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400686libcap = dependency('libcap', required : false)
687if not libcap.found()
688 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
689 libcap = cc.find_library('cap')
690endif
691
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400692libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekd6e80962017-09-15 14:47:57 +0200693 version : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400694
695want_seccomp = get_option('seccomp')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400696if want_seccomp != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400697 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400698 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400699 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200700 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400701else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200702 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400703 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400704endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200705conf.set10('HAVE_SECCOMP', have)
706m4_defines += have ? ['-DHAVE_SECCOMP'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400707
708want_selinux = get_option('selinux')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400709if want_selinux != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400710 libselinux = dependency('libselinux',
711 version : '>= 2.1.9',
712 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200713 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400714else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200715 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400716 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400717endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200718conf.set10('HAVE_SELINUX', have)
719m4_defines += have ? ['-DHAVE_SELINUX'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400720
721want_apparmor = get_option('apparmor')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400722if want_apparmor != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400723 libapparmor = dependency('libapparmor',
724 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200725 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400726else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200727 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400728 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400729endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200730conf.set10('HAVE_APPARMOR', have)
731m4_defines += have ? ['-DHAVE_APPARMOR'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400732
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400733smack_run_label = get_option('smack-run-label')
734if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400735 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
736 m4_defines += ['-DHAVE_SMACK_RUN_LABEL']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400737endif
738
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400739want_polkit = get_option('polkit')
740install_polkit = false
741install_polkit_pkla = false
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400742if want_polkit != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400743 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400744
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400745 libpolkit = dependency('polkit-gobject-1',
746 required : false)
747 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
748 message('Old polkit detected, will install pkla files')
749 install_polkit_pkla = true
750 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400751endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200752conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400753
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400754want_acl = get_option('acl')
755if want_acl != 'false'
756 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200757 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400758else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200759 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400760 libacl = []
761endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200762conf.set10('HAVE_ACL', have)
763m4_defines += have ? ['-DHAVE_ACL'] : []
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400764
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400765want_audit = get_option('audit')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400766if want_audit != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400767 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200768 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400769else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200770 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400771 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400772endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200773conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400774
775want_blkid = get_option('blkid')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400776if want_blkid != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400777 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200778 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400779else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200780 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400781 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400782endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200783conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400784
785want_kmod = get_option('kmod')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400786if want_kmod != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400787 libkmod = dependency('libkmod',
788 version : '>= 15',
789 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200790 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400791else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200792 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400793 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400794endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200795conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400796
797want_pam = get_option('pam')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400798if want_pam != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400799 libpam = cc.find_library('pam', required : want_pam == 'true')
800 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200801 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400802else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200803 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400804 libpam = []
805 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400806endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200807conf.set10('HAVE_PAM', have)
808m4_defines += have ? ['-DHAVE_PAM'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400809
810want_microhttpd = get_option('microhttpd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400811if want_microhttpd != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400812 libmicrohttpd = dependency('libmicrohttpd',
813 version : '>= 0.9.33',
814 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200815 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400816else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200817 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400818 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400819endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200820conf.set10('HAVE_MICROHTTPD', have)
821m4_defines += have ? ['-DHAVE_MICROHTTPD'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400822
823want_libcryptsetup = get_option('libcryptsetup')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400824if want_libcryptsetup != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400825 libcryptsetup = dependency('libcryptsetup',
826 version : '>= 1.6.0',
827 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200828 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400829else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200830 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400831 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400832endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200833conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400834
835want_libcurl = get_option('libcurl')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400836if want_libcurl != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400837 libcurl = dependency('libcurl',
838 version : '>= 7.32.0',
839 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200840 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400841else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200842 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400843 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400844endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200845conf.set10('HAVE_LIBCURL', have)
846m4_defines += have ? ['-DHAVE_LIBCURL'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400847
848want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400849want_libidn2 = get_option('libidn2')
850if want_libidn == 'true' and want_libidn2 == 'true'
851 error('libidn and libidn2 cannot be requested simultaneously')
852endif
853
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400854if want_libidn != 'false' and want_libidn2 != 'true'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400855 libidn = dependency('libidn',
856 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200857 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400858else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200859 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400860 libidn = []
861endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200862conf.set10('HAVE_LIBIDN', have)
863m4_defines += have ? ['-DHAVE_LIBIDN'] : []
864if not have and want_libidn2 != 'false'
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400865 # libidn is used for both libidn and libidn2 objects
866 libidn = dependency('libidn2',
867 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200868 have = libidn.found()
869else
870 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400871endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200872conf.set10('HAVE_LIBIDN2', have)
873m4_defines += have ? ['-DHAVE_LIBIDN2'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400874
875want_libiptc = get_option('libiptc')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400876if want_libiptc != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400877 libiptc = dependency('libiptc',
878 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200879 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400880else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200881 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400882 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400883endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200884conf.set10('HAVE_LIBIPTC', have)
885m4_defines += have ? ['-DHAVE_LIBIPTC'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400886
887want_qrencode = get_option('qrencode')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400888if want_qrencode != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400889 libqrencode = dependency('libqrencode',
890 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200891 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400892else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200893 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400894 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400895endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200896conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400897
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400898want_gcrypt = get_option('gcrypt')
899if want_gcrypt != 'false'
900 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
901 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200902 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400903else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200904 have = false
905endif
906if not have
907 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400908 libgcrypt = []
909 libgpg_error = []
910endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200911conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400912
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400913want_gnutls = get_option('gnutls')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400914if want_gnutls != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400915 libgnutls = dependency('gnutls',
916 version : '>= 3.1.4',
917 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200918 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400919else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200920 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400921 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400922endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200923conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400924
925want_elfutils = get_option('elfutils')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400926if want_elfutils != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400927 libdw = dependency('libdw',
928 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200929 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400930else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200931 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400932 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400933endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200934conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400935
936want_zlib = get_option('zlib')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400937if want_zlib != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400938 libz = dependency('zlib',
939 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200940 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400941else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200942 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400943 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400944endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200945conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400946
947want_bzip2 = get_option('bzip2')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400948if want_bzip2 != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400949 libbzip2 = cc.find_library('bz2',
950 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200951 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400952else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200953 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400954 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400955endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200956conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400957
958want_xz = get_option('xz')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400959if want_xz != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400960 libxz = dependency('liblzma',
961 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200962 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400963else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200964 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400965 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400966endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200967conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400968
969want_lz4 = get_option('lz4')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400970if want_lz4 != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400971 liblz4 = dependency('liblz4',
972 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200973 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400974else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200975 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400976 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400977endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200978conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400979
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400980want_xkbcommon = get_option('xkbcommon')
981if want_xkbcommon != 'false'
982 libxkbcommon = dependency('xkbcommon',
983 version : '>= 0.3.0',
984 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200985 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400986else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200987 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400988 libxkbcommon = []
989endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200990conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400991
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -0400992want_glib = get_option('glib')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -0400993if want_glib != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400994 libglib = dependency('glib-2.0',
995 version : '>= 2.22.0',
996 required : want_glib == 'true')
997 libgobject = dependency('gobject-2.0',
998 version : '>= 2.22.0',
999 required : want_glib == 'true')
1000 libgio = dependency('gio-2.0',
1001 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001002 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001003else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001004 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001005 libglib = []
1006 libgobject = []
1007 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001008endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001009conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001010
1011want_dbus = get_option('dbus')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001012if want_dbus != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001013 libdbus = dependency('dbus-1',
1014 version : '>= 1.3.2',
1015 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001016 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001017else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001018 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001019 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001020endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001021conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001022
Yu Watanabe42303dc2017-06-18 05:22:32 +09001023default_dnssec = get_option('default-dnssec')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001024if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001025 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1026 default_dnssec = 'no'
1027endif
1028conf.set('DEFAULT_DNSSEC_MODE',
1029 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1030substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1031
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001032want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001033if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001034 have = (conf.get('HAVE_LIBCURL') == 1 and
1035 conf.get('HAVE_ZLIB') == 1 and
1036 conf.get('HAVE_BZIP2') == 1 and
1037 conf.get('HAVE_XZ') == 1 and
1038 conf.get('HAVE_GCRYPT') == 1)
1039 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001040 error('importd support was requested, but dependencies are not available')
1041 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001042else
1043 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001044endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001045conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001046
1047want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001048if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001049 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1050 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001051 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1052 # it's possible to build one without the other. Complain only if
1053 # support was explictly requested. The auxiliary files like sysusers
1054 # config should be installed when any of the programs are built.
1055 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1056 error('remote support was requested, but dependencies are not available')
1057 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001058 have = have_deps[0] or have_deps[1]
1059else
1060 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001061endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001062conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001063
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001064foreach term : ['utmp',
1065 'hibernate',
1066 'environment-d',
1067 'binfmt',
1068 'coredump',
1069 'resolve',
1070 'logind',
1071 'hostnamed',
1072 'localed',
1073 'machined',
1074 'networkd',
1075 'timedated',
1076 'timesyncd',
1077 'myhostname',
1078 'firstboot',
1079 'randomseed',
1080 'backlight',
1081 'vconsole',
1082 'quotacheck',
1083 'sysusers',
1084 'tmpfiles',
1085 'hwdb',
1086 'rfkill',
1087 'ldconfig',
1088 'efi',
1089 'tpm',
1090 'ima',
1091 'smack',
1092 'gshadow',
1093 'idn',
1094 'nss-systemd']
1095 have = get_option(term)
1096 name = 'ENABLE_' + term.underscorify().to_upper()
1097 conf.set10(name, have)
1098 m4_defines += have ? ['-D' + name] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001099endforeach
1100
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001101want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001102install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001103tests = []
1104
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001105conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', get_option('slow-tests'))
1106
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001107#####################################################################
1108
1109if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001110 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001111
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001112 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001113 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001114 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001115 elif efi_arch == 'x86_64'
1116 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001117 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001118 elif efi_arch == 'arm'
1119 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001120 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001121 elif efi_arch == 'aarch64'
1122 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001123 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001124 else
1125 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001126 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001127 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001128
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001129 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001130 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001131
1132 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001133else
1134 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001135endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001136conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001137
1138#####################################################################
1139
1140config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001141 output : 'config.h',
1142 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001143
1144includes = include_directories('src/basic',
1145 'src/shared',
1146 'src/systemd',
1147 'src/journal',
1148 'src/resolve',
1149 'src/timesync',
1150 'src/login',
1151 'src/udev',
1152 'src/libudev',
1153 'src/core',
1154 'src/libsystemd/sd-bus',
1155 'src/libsystemd/sd-device',
1156 'src/libsystemd/sd-hwdb',
1157 'src/libsystemd/sd-id128',
1158 'src/libsystemd/sd-netlink',
1159 'src/libsystemd/sd-network',
1160 'src/libsystemd-network',
Davide Cavalca5e1771a2017-08-30 08:34:44 -07001161 '.',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001162 )
1163
1164add_project_arguments('-include', 'config.h', language : 'c')
1165
1166gcrypt_util_sources = files('src/shared/gcrypt-util.h',
1167 'src/shared/gcrypt-util.c')
1168
1169subdir('po')
1170subdir('catalog')
1171subdir('src/systemd')
1172subdir('src/basic')
1173subdir('src/libsystemd')
1174subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001175subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001176subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001177
1178libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001179 'journal-core',
1180 libjournal_core_sources,
1181 journald_gperf_c,
1182 include_directories : includes,
1183 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001184
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001185libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001186libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001187 'systemd',
1188 libsystemd_internal_sources,
1189 journal_internal_sources,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001190 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001191 include_directories : includes,
1192 link_args : ['-shared',
1193 '-Wl,--version-script=' + libsystemd_sym_path],
1194 link_with : [libbasic],
1195 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001196 libgcrypt,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001197 librt,
1198 libxz,
1199 liblz4],
1200 link_depends : libsystemd_sym,
1201 install : true,
1202 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001203
1204############################################################
1205
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001206# binaries that have --help and are intended for use by humans,
1207# usually, but not always, installed in /bin.
1208public_programs = []
1209
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001210subdir('src/libudev')
1211subdir('src/shared')
1212subdir('src/core')
1213subdir('src/udev')
1214subdir('src/network')
1215
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001216subdir('src/analyze')
1217subdir('src/journal-remote')
1218subdir('src/coredump')
1219subdir('src/hostname')
1220subdir('src/import')
1221subdir('src/kernel-install')
1222subdir('src/locale')
1223subdir('src/machine')
1224subdir('src/nspawn')
1225subdir('src/resolve')
1226subdir('src/timedate')
1227subdir('src/timesync')
1228subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmek4e4ab1c2017-04-10 12:37:52 -04001229subdir('src/sulogin-shell')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001230subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001231
1232subdir('src/test')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001233subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001234subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001235
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001236############################################################
1237
1238# only static linking apart from libdl, to make sure that the
1239# module is linked to all libraries that it uses.
1240test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001241 'test-dlopen',
1242 test_dlopen_c,
1243 include_directories : includes,
1244 link_with : [libbasic],
1245 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001246
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001247foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001248 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001249 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001250 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001251
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001252 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001253 if condition
1254 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001255
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001256 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1257 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001258
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001259 nss = shared_library(
1260 'nss_' + module,
1261 'src/nss-@0@/nss-@0@.c'.format(module),
1262 version : '2',
1263 include_directories : includes,
1264 link_args : ['-shared',
1265 '-Wl,--version-script=' + version_script_arg,
1266 '-Wl,--undefined'],
1267 link_with : [libsystemd_internal,
1268 libbasic],
1269 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001270 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001271 link_depends : sym,
1272 install : true,
1273 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001274
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001275 # We cannot use shared_module because it does not support version suffix.
1276 # Unfortunately shared_library insists on creating the symlink…
1277 meson.add_install_script('sh', '-c',
1278 'rm $DESTDIR@0@/libnss_@1@.so'
1279 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001280
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001281 test('dlopen-nss_' + module,
1282 test_dlopen,
1283 args : [nss.full_path()]) # path to dlopen must include a slash
1284 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001285endforeach
1286
1287############################################################
1288
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001289executable('systemd',
1290 systemd_sources,
1291 include_directories : includes,
1292 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001293 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001294 dependencies : [threads,
1295 librt,
1296 libseccomp,
1297 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001298 libmount,
1299 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001300 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001301 install : true,
1302 install_dir : rootlibexecdir)
1303
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001304exe = executable('systemd-analyze',
1305 systemd_analyze_sources,
1306 include_directories : includes,
1307 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001308 libshared],
1309 dependencies : [threads,
1310 librt,
1311 libseccomp,
1312 libselinux,
1313 libmount,
1314 libblkid],
1315 install_rpath : rootlibexecdir,
1316 install : true)
1317public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001318
1319executable('systemd-journald',
1320 systemd_journald_sources,
1321 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001322 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001323 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001324 dependencies : [threads,
1325 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001326 liblz4,
1327 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001328 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001329 install : true,
1330 install_dir : rootlibexecdir)
1331
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001332exe = executable('systemd-cat',
1333 systemd_cat_sources,
1334 include_directories : includes,
1335 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001336 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001337 dependencies : [threads],
1338 install_rpath : rootlibexecdir,
1339 install : true)
1340public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001341
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001342exe = executable('journalctl',
1343 journalctl_sources,
1344 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001345 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001346 dependencies : [threads,
1347 libqrencode,
1348 libxz,
1349 liblz4],
1350 install_rpath : rootlibexecdir,
1351 install : true,
1352 install_dir : rootbindir)
1353public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001354
1355executable('systemd-getty-generator',
1356 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001357 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001358 link_with : [libshared],
1359 install_rpath : rootlibexecdir,
1360 install : true,
1361 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001362
1363executable('systemd-debug-generator',
1364 'src/debug-generator/debug-generator.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
1371executable('systemd-fstab-generator',
1372 'src/fstab-generator/fstab-generator.c',
1373 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001374 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001375 link_with : [libshared],
1376 install_rpath : rootlibexecdir,
1377 install : true,
1378 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001379
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001380if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001381 executable('30-systemd-environment-d-generator',
1382 'src/environment-d-generator/environment-d-generator.c',
1383 include_directories : includes,
1384 link_with : [libshared],
1385 install_rpath : rootlibexecdir,
1386 install : true,
1387 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001388
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001389 meson.add_install_script(meson_make_symlink,
1390 join_paths(sysconfdir, 'environment'),
1391 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001392endif
1393
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001394if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001395 executable('systemd-hibernate-resume-generator',
1396 'src/hibernate-resume/hibernate-resume-generator.c',
1397 include_directories : includes,
1398 link_with : [libshared],
1399 install_rpath : rootlibexecdir,
1400 install : true,
1401 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001402
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001403 executable('systemd-hibernate-resume',
1404 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001405 include_directories : includes,
1406 link_with : [libshared],
1407 install_rpath : rootlibexecdir,
1408 install : true,
1409 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001410endif
1411
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001412if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001413 executable('systemd-gpt-auto-generator',
1414 'src/gpt-auto-generator/gpt-auto-generator.c',
1415 'src/basic/blkid-util.h',
1416 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001417 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001418 dependencies : libblkid,
1419 install_rpath : rootlibexecdir,
1420 install : true,
1421 install_dir : systemgeneratordir)
1422
1423 exe = executable('systemd-dissect',
1424 'src/dissect/dissect.c',
1425 include_directories : includes,
1426 link_with : [libshared],
1427 install_rpath : rootlibexecdir,
1428 install : true,
1429 install_dir : rootlibexecdir)
1430 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001431endif
1432
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001433if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001434 executable('systemd-resolved',
1435 systemd_resolved_sources,
Michael Biebl76c87412017-04-21 23:45:54 +02001436 gcrypt_util_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001437 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001438 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001439 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001440 libgcrypt,
1441 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001442 libm,
1443 libidn],
1444 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001445 install : true,
1446 install_dir : rootlibexecdir)
1447
1448 exe = executable('systemd-resolve',
1449 systemd_resolve_sources,
Michael Biebl76c87412017-04-21 23:45:54 +02001450 gcrypt_util_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001451 include_directories : includes,
1452 link_with : [libshared],
1453 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001454 libgcrypt,
1455 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001456 libm,
1457 libidn],
1458 install_rpath : rootlibexecdir,
1459 install : true)
1460 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001461endif
1462
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001463if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001464 executable('systemd-logind',
1465 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001466 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001467 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001468 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001469 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001470 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001471 install_rpath : rootlibexecdir,
1472 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001473 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001474
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001475 exe = executable('loginctl',
1476 loginctl_sources,
1477 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001478 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001479 dependencies : [threads,
1480 liblz4,
1481 libxz],
1482 install_rpath : rootlibexecdir,
1483 install : true,
1484 install_dir : rootbindir)
1485 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001486
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001487 exe = executable('systemd-inhibit',
1488 'src/login/inhibit.c',
1489 include_directories : includes,
1490 link_with : [libshared],
1491 install_rpath : rootlibexecdir,
1492 install : true,
1493 install_dir : rootbindir)
1494 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001495
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001496 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001497 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1498 pam_systemd = shared_library(
1499 'pam_systemd',
1500 pam_systemd_c,
1501 name_prefix : '',
1502 include_directories : includes,
1503 link_args : ['-shared',
1504 '-Wl,--version-script=' + version_script_arg],
1505 link_with : [libsystemd_internal,
1506 libshared_static],
1507 dependencies : [threads,
1508 libpam,
1509 libpam_misc],
1510 link_depends : pam_systemd_sym,
1511 install : true,
1512 install_dir : pamlibdir)
1513
1514 test('dlopen-pam_systemd',
1515 test_dlopen,
1516 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1517 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001518endif
1519
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001520if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001521 executable('systemd-user-sessions',
1522 'src/user-sessions/user-sessions.c',
1523 include_directories : includes,
1524 link_with : [libshared],
1525 install_rpath : rootlibexecdir,
1526 install : true,
1527 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001528endif
1529
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001530if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001531 exe = executable('bootctl',
1532 'src/boot/bootctl.c',
1533 include_directories : includes,
1534 link_with : [libshared],
1535 dependencies : [libblkid],
1536 install_rpath : rootlibexecdir,
1537 install : true)
1538 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001539endif
1540
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001541exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1542 include_directories : includes,
1543 link_with : [libshared],
1544 dependencies : [threads],
1545 install_rpath : rootlibexecdir,
1546 install : true)
1547public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001548
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001549exe = executable('systemctl', 'src/systemctl/systemctl.c',
1550 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001551 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001552 dependencies : [threads,
1553 libcap,
1554 libselinux,
1555 libxz,
1556 liblz4],
1557 install_rpath : rootlibexecdir,
1558 install : true,
1559 install_dir : rootbindir)
1560public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001561
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001562if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001563 executable('systemd-backlight',
1564 'src/backlight/backlight.c',
1565 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001566 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001567 install_rpath : rootlibexecdir,
1568 install : true,
1569 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001570endif
1571
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001572if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001573 executable('systemd-rfkill',
1574 'src/rfkill/rfkill.c',
1575 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001576 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001577 install_rpath : rootlibexecdir,
1578 install : true,
1579 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001580endif
1581
1582executable('systemd-system-update-generator',
1583 'src/system-update-generator/system-update-generator.c',
1584 include_directories : includes,
1585 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001586 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001587 install : true,
1588 install_dir : systemgeneratordir)
1589
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001590if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001591 executable('systemd-cryptsetup',
1592 'src/cryptsetup/cryptsetup.c',
1593 include_directories : includes,
1594 link_with : [libshared],
1595 dependencies : [libcryptsetup],
1596 install_rpath : rootlibexecdir,
1597 install : true,
1598 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001599
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001600 executable('systemd-cryptsetup-generator',
1601 'src/cryptsetup/cryptsetup-generator.c',
1602 include_directories : includes,
1603 link_with : [libshared],
1604 dependencies : [libcryptsetup],
1605 install_rpath : rootlibexecdir,
1606 install : true,
1607 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001608
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001609 executable('systemd-veritysetup',
1610 'src/veritysetup/veritysetup.c',
1611 include_directories : includes,
1612 link_with : [libshared],
1613 dependencies : [libcryptsetup],
1614 install_rpath : rootlibexecdir,
1615 install : true,
1616 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001617
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001618 executable('systemd-veritysetup-generator',
1619 'src/veritysetup/veritysetup-generator.c',
1620 include_directories : includes,
1621 link_with : [libshared],
1622 dependencies : [libcryptsetup],
1623 install_rpath : rootlibexecdir,
1624 install : true,
1625 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001626endif
1627
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001628if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001629 executable('systemd-sysv-generator',
1630 'src/sysv-generator/sysv-generator.c',
1631 include_directories : includes,
1632 link_with : [libshared],
1633 install_rpath : rootlibexecdir,
1634 install : true,
1635 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001636
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001637 executable('systemd-rc-local-generator',
1638 'src/rc-local-generator/rc-local-generator.c',
1639 include_directories : includes,
1640 link_with : [libshared],
1641 install_rpath : rootlibexecdir,
1642 install : true,
1643 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001644endif
1645
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001646if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001647 executable('systemd-hostnamed',
1648 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001649 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001650 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001651 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001652 install : true,
1653 install_dir : rootlibexecdir)
1654
1655 exe = executable('hostnamectl',
1656 'src/hostname/hostnamectl.c',
1657 include_directories : includes,
1658 link_with : [libshared],
1659 install_rpath : rootlibexecdir,
1660 install : true)
1661 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001662endif
1663
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001664if conf.get('ENABLE_LOCALED') == 1
1665 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001666 # logind will load libxkbcommon.so dynamically on its own
1667 deps = [libdl]
1668 else
1669 deps = []
1670 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001671
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001672 executable('systemd-localed',
1673 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001674 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001675 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001676 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001677 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001678 install : true,
1679 install_dir : rootlibexecdir)
1680
1681 exe = executable('localectl',
1682 localectl_sources,
1683 include_directories : includes,
1684 link_with : [libshared],
1685 install_rpath : rootlibexecdir,
1686 install : true)
1687 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001688endif
1689
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001690if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001691 executable('systemd-timedated',
1692 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001693 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001694 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001695 install_rpath : rootlibexecdir,
1696 install : true,
1697 install_dir : rootlibexecdir)
1698
1699 exe = executable('timedatectl',
1700 'src/timedate/timedatectl.c',
1701 include_directories : includes,
1702 install_rpath : rootlibexecdir,
1703 link_with : [libshared],
1704 install : true)
1705 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001706endif
1707
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001708if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001709 executable('systemd-timesyncd',
1710 systemd_timesyncd_sources,
1711 include_directories : includes,
1712 link_with : [libshared],
1713 dependencies : [threads,
1714 libm],
1715 install_rpath : rootlibexecdir,
1716 install : true,
1717 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001718endif
1719
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001720if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001721 executable('systemd-machined',
1722 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001723 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001724 link_with : [libmachine_core,
1725 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001726 install_rpath : rootlibexecdir,
1727 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001728 install_dir : rootlibexecdir)
1729
1730 exe = executable('machinectl',
1731 'src/machine/machinectl.c',
1732 include_directories : includes,
1733 link_with : [libshared],
1734 dependencies : [threads,
1735 libxz,
1736 liblz4],
1737 install_rpath : rootlibexecdir,
1738 install : true,
1739 install_dir : rootbindir)
1740 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001741endif
1742
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001743if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001744 executable('systemd-importd',
1745 systemd_importd_sources,
1746 include_directories : includes,
1747 link_with : [libshared],
1748 dependencies : [threads],
1749 install_rpath : rootlibexecdir,
1750 install : true,
1751 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001752
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001753 systemd_pull = executable('systemd-pull',
1754 systemd_pull_sources,
1755 include_directories : includes,
1756 link_with : [libshared],
1757 dependencies : [libcurl,
1758 libz,
1759 libbzip2,
1760 libxz,
1761 libgcrypt],
1762 install_rpath : rootlibexecdir,
1763 install : true,
1764 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001765
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001766 systemd_import = executable('systemd-import',
1767 systemd_import_sources,
1768 include_directories : includes,
1769 link_with : [libshared],
1770 dependencies : [libcurl,
1771 libz,
1772 libbzip2,
1773 libxz],
1774 install_rpath : rootlibexecdir,
1775 install : true,
1776 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001777
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001778 systemd_export = executable('systemd-export',
1779 systemd_export_sources,
1780 include_directories : includes,
1781 link_with : [libshared],
1782 dependencies : [libcurl,
1783 libz,
1784 libbzip2,
1785 libxz],
1786 install_rpath : rootlibexecdir,
1787 install : true,
1788 install_dir : rootlibexecdir)
1789 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001790endif
1791
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001792if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001793 exe = executable('systemd-journal-upload',
1794 systemd_journal_upload_sources,
1795 include_directories : includes,
1796 link_with : [libshared],
1797 dependencies : [threads,
1798 libcurl,
1799 libgnutls,
1800 libxz,
1801 liblz4],
1802 install_rpath : rootlibexecdir,
1803 install : true,
1804 install_dir : rootlibexecdir)
1805 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001806endif
1807
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001808if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001809 s_j_remote = executable('systemd-journal-remote',
1810 systemd_journal_remote_sources,
1811 include_directories : includes,
1812 link_with : [libshared],
1813 dependencies : [threads,
1814 libmicrohttpd,
1815 libgnutls,
1816 libxz,
1817 liblz4],
1818 install_rpath : rootlibexecdir,
1819 install : true,
1820 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001821
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001822 s_j_gatewayd = executable('systemd-journal-gatewayd',
1823 systemd_journal_gatewayd_sources,
1824 include_directories : includes,
1825 link_with : [libshared],
1826 dependencies : [threads,
1827 libmicrohttpd,
1828 libgnutls,
1829 libxz,
1830 liblz4],
1831 install_rpath : rootlibexecdir,
1832 install : true,
1833 install_dir : rootlibexecdir)
1834 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001835endif
1836
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001837if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001838 executable('systemd-coredump',
1839 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001840 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001841 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001842 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001843 libacl,
1844 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001845 libxz,
1846 liblz4],
1847 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001848 install : true,
1849 install_dir : rootlibexecdir)
1850
1851 exe = executable('coredumpctl',
1852 coredumpctl_sources,
1853 include_directories : includes,
1854 link_with : [libshared],
1855 dependencies : [threads,
1856 libxz,
1857 liblz4],
1858 install_rpath : rootlibexecdir,
1859 install : true)
1860 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001861endif
1862
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001863if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001864 exe = executable('systemd-binfmt',
1865 'src/binfmt/binfmt.c',
1866 include_directories : includes,
1867 link_with : [libshared],
1868 install_rpath : rootlibexecdir,
1869 install : true,
1870 install_dir : rootlibexecdir)
1871 public_programs += [exe]
1872
1873 meson.add_install_script('sh', '-c',
1874 mkdir_p.format(binfmtdir))
1875 meson.add_install_script('sh', '-c',
1876 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
1877endif
1878
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001879if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001880 executable('systemd-vconsole-setup',
1881 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001882 include_directories : includes,
1883 link_with : [libshared],
1884 install_rpath : rootlibexecdir,
1885 install : true,
1886 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001887endif
1888
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001889if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001890 executable('systemd-random-seed',
1891 'src/random-seed/random-seed.c',
1892 include_directories : includes,
1893 link_with : [libshared],
1894 install_rpath : rootlibexecdir,
1895 install : true,
1896 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001897endif
1898
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001899if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001900 executable('systemd-firstboot',
1901 'src/firstboot/firstboot.c',
1902 include_directories : includes,
1903 link_with : [libshared],
1904 dependencies : [libcrypt],
1905 install_rpath : rootlibexecdir,
1906 install : true,
1907 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001908endif
1909
1910executable('systemd-remount-fs',
1911 'src/remount-fs/remount-fs.c',
1912 'src/core/mount-setup.c',
1913 'src/core/mount-setup.h',
1914 include_directories : includes,
1915 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001916 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001917 install : true,
1918 install_dir : rootlibexecdir)
1919
1920executable('systemd-machine-id-setup',
1921 'src/machine-id-setup/machine-id-setup-main.c',
1922 'src/core/machine-id-setup.c',
1923 'src/core/machine-id-setup.h',
1924 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001925 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001926 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001927 install : true,
1928 install_dir : rootbindir)
1929
1930executable('systemd-fsck',
1931 'src/fsck/fsck.c',
1932 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001933 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001934 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001935 install : true,
1936 install_dir : rootlibexecdir)
1937
1938executable('systemd-sleep',
1939 'src/sleep/sleep.c',
1940 include_directories : includes,
1941 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001942 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001943 install : true,
1944 install_dir : rootlibexecdir)
1945
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001946exe = executable('systemd-sysctl',
1947 'src/sysctl/sysctl.c',
1948 include_directories : includes,
1949 link_with : [libshared],
1950 install_rpath : rootlibexecdir,
1951 install : true,
1952 install_dir : rootlibexecdir)
1953public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001954
1955executable('systemd-ac-power',
1956 'src/ac-power/ac-power.c',
1957 include_directories : includes,
1958 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001959 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001960 install : true,
1961 install_dir : rootlibexecdir)
1962
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001963exe = executable('systemd-detect-virt',
1964 'src/detect-virt/detect-virt.c',
1965 include_directories : includes,
1966 link_with : [libshared],
1967 install_rpath : rootlibexecdir,
1968 install : true)
1969public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001970
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001971exe = executable('systemd-delta',
1972 'src/delta/delta.c',
1973 include_directories : includes,
1974 link_with : [libshared],
1975 install_rpath : rootlibexecdir,
1976 install : true)
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-escape',
1980 'src/escape/escape.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
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001988exe = executable('systemd-notify',
1989 'src/notify/notify.c',
1990 include_directories : includes,
1991 link_with : [libshared],
1992 install_rpath : rootlibexecdir,
1993 install : true,
1994 install_dir : rootbindir)
1995public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001996
1997executable('systemd-volatile-root',
1998 'src/volatile-root/volatile-root.c',
1999 include_directories : includes,
2000 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002001 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002002 install : true,
2003 install_dir : rootlibexecdir)
2004
2005executable('systemd-cgroups-agent',
2006 'src/cgroups-agent/cgroups-agent.c',
2007 include_directories : includes,
2008 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002009 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002010 install : true,
2011 install_dir : rootlibexecdir)
2012
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002013exe = executable('systemd-path',
2014 'src/path/path.c',
2015 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002016 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002017 install_rpath : rootlibexecdir,
2018 install : true)
2019public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002020
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002021exe = executable('systemd-ask-password',
2022 'src/ask-password/ask-password.c',
2023 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002024 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002025 install_rpath : rootlibexecdir,
2026 install : true,
2027 install_dir : rootbindir)
2028public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002029
2030executable('systemd-reply-password',
2031 'src/reply-password/reply-password.c',
2032 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002033 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002034 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002035 install : true,
2036 install_dir : rootlibexecdir)
2037
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002038exe = executable('systemd-tty-ask-password-agent',
2039 'src/tty-ask-password-agent/tty-ask-password-agent.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,
2044 install_dir : rootbindir)
2045public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002046
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002047exe = executable('systemd-cgls',
2048 'src/cgls/cgls.c',
2049 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002050 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002051 install_rpath : rootlibexecdir,
2052 install : true)
2053public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002054
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002055exe = executable('systemd-cgtop',
2056 'src/cgtop/cgtop.c',
2057 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002058 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002059 install_rpath : rootlibexecdir,
2060 install : true)
2061public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002062
2063executable('systemd-initctl',
2064 'src/initctl/initctl.c',
2065 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002066 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002067 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002068 install : true,
2069 install_dir : rootlibexecdir)
2070
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002071exe = executable('systemd-mount',
2072 'src/mount/mount-tool.c',
2073 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002074 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002075 install_rpath : rootlibexecdir,
2076 install : true)
2077public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002078
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002079meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002080 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002081
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002082exe = executable('systemd-run',
2083 'src/run/run.c',
2084 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002085 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002086 install_rpath : rootlibexecdir,
2087 install : true)
2088public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002089
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002090exe = executable('systemd-stdio-bridge',
2091 'src/stdio-bridge/stdio-bridge.c',
2092 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002093 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002094 install_rpath : rootlibexecdir,
2095 install : true)
2096public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002097
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002098exe = executable('busctl',
2099 'src/busctl/busctl.c',
2100 'src/busctl/busctl-introspect.c',
2101 'src/busctl/busctl-introspect.h',
2102 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002103 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002104 install_rpath : rootlibexecdir,
2105 install : true)
2106public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002107
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002108if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002109 exe = executable('systemd-sysusers',
2110 'src/sysusers/sysusers.c',
2111 include_directories : includes,
2112 link_with : [libshared],
2113 install_rpath : rootlibexecdir,
2114 install : true,
2115 install_dir : rootbindir)
2116 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002117endif
2118
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002119if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002120 exe = executable('systemd-tmpfiles',
2121 'src/tmpfiles/tmpfiles.c',
2122 include_directories : includes,
2123 link_with : [libshared],
2124 dependencies : [libacl],
2125 install_rpath : rootlibexecdir,
2126 install : true,
2127 install_dir : rootbindir)
2128 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002129endif
2130
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002131if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002132 exe = executable('systemd-hwdb',
2133 'src/hwdb/hwdb.c',
2134 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2135 include_directories : includes,
Michael Biebl0da6f392017-04-21 18:32:14 +02002136 link_with : [libudev_internal],
2137 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002138 install : true,
2139 install_dir : rootbindir)
2140 public_programs += [exe]
2141endif
2142
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002143if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002144 executable('systemd-quotacheck',
2145 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002146 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 install_rpath : rootlibexecdir,
2149 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002150 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002151endif
2152
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002153exe = executable('systemd-socket-proxyd',
2154 'src/socket-proxy/socket-proxyd.c',
2155 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002156 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002157 dependencies : [threads],
2158 install_rpath : rootlibexecdir,
2159 install : true,
2160 install_dir : rootlibexecdir)
2161public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002162
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002163exe = executable('systemd-udevd',
2164 systemd_udevd_sources,
2165 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002166 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002167 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002168 libsystemd_network,
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002169 libudev_internal],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002170 dependencies : [threads,
2171 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002172 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002173 libacl,
2174 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002175 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002176 install : true,
2177 install_dir : rootlibexecdir)
2178public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002179
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002180exe = executable('udevadm',
2181 udevadm_sources,
2182 include_directories : includes,
2183 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002184 libsystemd_network,
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002185 libudev_internal],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002186 dependencies : [threads,
2187 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002188 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002189 libacl,
2190 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002191 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002192 install : true,
2193 install_dir : rootbindir)
2194public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002195
2196executable('systemd-shutdown',
2197 systemd_shutdown_sources,
2198 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002199 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002200 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002201 install : true,
2202 install_dir : rootlibexecdir)
2203
2204executable('systemd-update-done',
2205 'src/update-done/update-done.c',
2206 include_directories : includes,
2207 link_with : [libshared],
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
2212executable('systemd-update-utmp',
2213 'src/update-utmp/update-utmp.c',
2214 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002215 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002216 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002217 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002218 install : true,
2219 install_dir : rootlibexecdir)
2220
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002221if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002222 executable('systemd-modules-load',
2223 'src/modules-load/modules-load.c',
2224 include_directories : includes,
2225 link_with : [libshared],
2226 dependencies : [libkmod],
2227 install_rpath : rootlibexecdir,
2228 install : true,
2229 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002230
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002231 meson.add_install_script('sh', '-c',
2232 mkdir_p.format(modulesloaddir))
2233 meson.add_install_script('sh', '-c',
2234 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002235endif
2236
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002237exe = executable('systemd-nspawn',
2238 systemd_nspawn_sources,
2239 'src/core/mount-setup.c', # FIXME: use a variable?
2240 'src/core/mount-setup.h',
2241 'src/core/loopback-setup.c',
2242 'src/core/loopback-setup.h',
2243 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002244 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002245 dependencies : [libacl,
2246 libblkid,
2247 libseccomp,
2248 libselinux],
2249 install_rpath : rootlibexecdir,
2250 install : true)
2251public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002252
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002253if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002254 executable('systemd-networkd',
2255 systemd_networkd_sources,
2256 include_directories : includes,
2257 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002258 libsystemd_network,
2259 libudev_internal,
2260 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002261 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002262 install_rpath : rootlibexecdir,
2263 install : true,
2264 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002265
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002266 executable('systemd-networkd-wait-online',
2267 systemd_networkd_wait_online_sources,
2268 include_directories : includes,
2269 link_with : [libnetworkd_core,
2270 libshared],
2271 install_rpath : rootlibexecdir,
2272 install : true,
2273 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002274
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002275 exe = executable('networkctl',
2276 networkctl_sources,
2277 include_directories : includes,
2278 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002279 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002280 install_rpath : rootlibexecdir,
2281 install : true,
2282 install_dir : rootbindir)
2283 public_programs += [exe]
2284endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002285############################################################
2286
2287foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002288 sources = tuple[0]
2289 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2290 dependencies = tuple[2]
2291 condition = tuple.length() >= 4 ? tuple[3] : ''
2292 type = tuple.length() >= 5 ? tuple[4] : ''
2293 defs = tuple.length() >= 6 ? tuple[5] : []
2294 incs = tuple.length() >= 7 ? tuple[6] : includes
2295 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002296
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002297 name = sources[0].split('/')[-1].split('.')[0]
2298 if type.startswith('timeout=')
2299 timeout = type.split('=')[1].to_int()
2300 type = ''
2301 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002302
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002303 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002304 exe = executable(
2305 name,
2306 sources,
2307 include_directories : incs,
2308 link_with : link_with,
2309 dependencies : dependencies,
2310 c_args : defs,
2311 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002312 install : install_tests,
2313 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002314
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002315 if type == 'manual'
2316 message('@0@ is a manual test'.format(name))
2317 elif type == 'unsafe' and want_tests != 'unsafe'
2318 message('@0@ is an unsafe test'.format(name))
2319 else
2320 test(name, exe,
2321 env : test_env,
2322 timeout : timeout)
2323 endif
2324 else
2325 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2326 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002327endforeach
2328
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002329test_libsystemd_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002330 'test-libsystemd-sym',
2331 test_libsystemd_sym_c,
2332 include_directories : includes,
2333 link_with : [libsystemd],
2334 install : install_tests,
2335 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002336test('test-libsystemd-sym',
2337 test_libsystemd_sym)
2338
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002339test_libudev_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002340 'test-libudev-sym',
2341 test_libudev_sym_c,
2342 include_directories : includes,
2343 c_args : ['-Wno-deprecated-declarations'],
2344 link_with : [libudev],
2345 install : install_tests,
2346 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002347test('test-libudev-sym',
2348 test_libudev_sym)
2349
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002350############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002351
2352make_directive_index_py = find_program('tools/make-directive-index.py')
2353make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002354xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002355hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002356
2357subdir('units')
2358subdir('sysctl.d')
2359subdir('sysusers.d')
2360subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002361subdir('hwdb')
2362subdir('network')
2363subdir('man')
2364subdir('shell-completion/bash')
2365subdir('shell-completion/zsh')
2366subdir('docs/sysvinit')
2367subdir('docs/var-log')
2368
2369# FIXME: figure out if the warning is true:
2370# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2371install_subdir('factory/etc',
2372 install_dir : factorydir)
2373
2374
2375install_data('xorg/50-systemd-user.sh',
2376 install_dir : xinitrcdir)
2377install_data('system-preset/90-systemd.preset',
2378 install_dir : systempresetdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002379install_data('modprobe.d/systemd.conf',
2380 install_dir : modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002381install_data('README',
2382 'NEWS',
2383 'CODING_STYLE',
2384 'DISTRO_PORTING',
2385 'ENVIRONMENT.md',
2386 'LICENSE.GPL2',
2387 'LICENSE.LGPL2.1',
2388 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2389 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002390
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002391meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2392meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2393
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002394############################################################
2395
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002396meson_check_help = find_program('tools/meson-check-help.sh')
2397
2398foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002399 name = exec.full_path().split('/')[-1]
2400 test('check-help-' + name,
2401 meson_check_help,
2402 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002403endforeach
2404
2405############################################################
2406
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002407if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002408 all_files = run_command(
2409 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002410 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002411 'ls-files',
2412 ':/*.[ch]'])
2413 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002414
userwithuide85a6902017-08-09 13:41:44 +00002415 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002416 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002417 output : 'tags',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002418 command : ['env', 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002419 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002420 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002421 output : 'ctags',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002422 command : ['env', 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002423endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002424
2425if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002426 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002427 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002428 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002429 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002430endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002431
2432if git.found()
2433 git_head = run_command(
2434 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002435 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002436 'rev-parse', 'HEAD']).stdout().strip()
2437 git_head_short = run_command(
2438 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002439 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002440 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2441
2442 run_target(
2443 'git-snapshot',
2444 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002445 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002446 git_head_short),
2447 '--prefix', 'systemd-@0@/'.format(git_head),
2448 'HEAD'])
2449endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002450
2451############################################################
2452
2453status = [
2454 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2455
Yu Watanabe359b4962017-11-25 20:35:24 +09002456 'prefix directory: @0@'.format(prefixdir),
2457 'rootprefix directory: @0@'.format(rootprefixdir),
2458 'sysconf directory: @0@'.format(sysconfdir),
2459 'include directory: @0@'.format(includedir),
2460 'lib directory: @0@'.format(libdir),
2461 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002462 'SysV init scripts: @0@'.format(sysvinit_path),
2463 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002464 'PAM modules directory: @0@'.format(pamlibdir),
2465 'PAM configuration directory: @0@'.format(pamconfdir),
2466 'RPM macros directory: @0@'.format(rpmmacrosdir),
2467 'modprobe.d directory: @0@'.format(modprobedir),
2468 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2469 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2470 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2471 'bash completions directory: @0@'.format(bashcompletiondir),
2472 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002473 'extra start script: @0@'.format(get_option('rc-local')),
2474 'extra stop script: @0@'.format(get_option('halt-local')),
2475 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2476 get_option('debug-tty')),
2477 'TTY GID: @0@'.format(tty_gid),
2478 'maximum system UID: @0@'.format(system_uid_max),
2479 'maximum system GID: @0@'.format(system_gid_max),
2480 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002481 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002482 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002483 'support URL: @0@'.format(support_url),
2484 'nobody user name: @0@'.format(get_option('nobody-user')),
2485 'nobody group name: @0@'.format(get_option('nobody-group')),
2486 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002487 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002488
2489 'default DNSSEC mode: @0@'.format(default_dnssec),
2490 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2491 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2492
2493alt_dns_servers = '\n '.join(dns_servers.split(' '))
2494alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2495status += [
2496 'default DNS servers: @0@'.format(alt_dns_servers),
2497 'default NTP servers: @0@'.format(alt_ntp_servers)]
2498
2499alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2500 '@@0@'.format(time_epoch)).stdout().strip()
2501status += [
2502 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2503
2504# TODO:
2505# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2506# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2507# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2508
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002509if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002510 status += [
2511 'efi arch: @0@'.format(efi_arch)]
2512
2513 if have_gnu_efi
2514 status += [
2515 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2516 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002517 'EFI lib directory: @0@'.format(efi_libdir),
2518 'EFI lds directory: @0@'.format(efi_ldsdir),
2519 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002520 endif
2521endif
2522
2523found = []
2524missing = []
2525
2526foreach tuple : [
2527 ['libcryptsetup'],
2528 ['PAM'],
2529 ['AUDIT'],
2530 ['IMA'],
2531 ['AppArmor'],
2532 ['SELinux'],
2533 ['SECCOMP'],
2534 ['SMACK'],
2535 ['zlib'],
2536 ['xz'],
2537 ['lz4'],
2538 ['bzip2'],
2539 ['ACL'],
2540 ['gcrypt'],
2541 ['qrencode'],
2542 ['microhttpd'],
2543 ['gnutls'],
2544 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002545 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002546 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002547 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002548 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002549 ['libiptc'],
2550 ['elfutils'],
2551 ['binfmt'],
2552 ['vconsole'],
2553 ['quotacheck'],
2554 ['tmpfiles'],
2555 ['environment.d'],
2556 ['sysusers'],
2557 ['firstboot'],
2558 ['randomseed'],
2559 ['backlight'],
2560 ['rfkill'],
2561 ['logind'],
2562 ['machined'],
2563 ['importd'],
2564 ['hostnamed'],
2565 ['timedated'],
2566 ['timesyncd'],
2567 ['localed'],
2568 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002569 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002570 ['coredump'],
2571 ['polkit'],
2572 ['legacy pkla', install_polkit_pkla],
2573 ['efi'],
2574 ['gnu-efi', have_gnu_efi],
2575 ['kmod'],
2576 ['xkbcommon'],
2577 ['blkid'],
2578 ['dbus'],
2579 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002580 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002581 ['hwdb'],
2582 ['tpm'],
2583 ['man pages', want_man],
2584 ['html pages', want_html],
2585 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002586 ['split /usr', conf.get('HAVE_SPLIT_USR') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002587 ['SysV compat'],
2588 ['utmp'],
2589 ['ldconfig'],
2590 ['hibernate'],
2591 ['adm group', get_option('adm-group')],
2592 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002593 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002594 ['debug hashmap'],
2595 ['debug mmap cache'],
2596]
2597
2598 cond = tuple.get(1, '')
2599 if cond == ''
2600 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2601 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002602 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002603 endif
2604 if cond
2605 found += [tuple[0]]
2606 else
2607 missing += [tuple[0]]
2608 endif
2609endforeach
2610
2611status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002612 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002613 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002614 '',
2615 'disabled features: @0@'.format(', '.join(missing)),
2616 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002617message('\n '.join(status))