blob: cbe2185ad9a224d8063bb69831d560e1d609b733 [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
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01004
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04005project('systemd', 'c',
Zbigniew Jędrzejewski-Szmekad6a0852018-03-05 17:12:48 +01006 version : '238',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04007 license : 'LGPLv2+',
8 default_options: [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04009 'c_std=gnu99',
10 'prefix=/usr',
11 'sysconfdir=/etc',
12 'localstatedir=/var',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040013 ],
Zbigniew Jędrzejewski-Szmek86ea8d72017-11-20 08:08:43 +010014 meson_version : '>= 0.41',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040015 )
16
Zbigniew Jędrzejewski-Szmekad6a0852018-03-05 17:12:48 +010017libsystemd_version = '0.22.0'
18libudev_version = '1.6.10'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020019
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040020# We need the same data in three different formats, ugh!
21# Also, for hysterical reasons, we use different variable
22# names, sometimes. Not all variables are included in every
23# set. Ugh, ugh, ugh!
24conf = configuration_data()
25conf.set_quoted('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version())
26conf.set_quoted('PACKAGE_VERSION', meson.project_version())
27
28substs = configuration_data()
29substs.set('PACKAGE_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
30substs.set('PACKAGE_VERSION', meson.project_version())
31
32m4_defines = []
33
34#####################################################################
35
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040036# Try to install the git pre-commit hook
37git_hook = run_command(join_paths(meson.source_root(), 'tools/add-git-hook.sh'))
38if git_hook.returncode() == 0
39 message(git_hook.stdout().strip())
40endif
41
42#####################################################################
43
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010044if get_option('split-usr') == 'auto'
45 split_usr = run_command('test', '-L', '/bin').returncode() != 0
46else
47 split_usr = get_option('split-usr') == 'true'
48endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010049conf.set10('HAVE_SPLIT_USR', split_usr,
50 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010051
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010052if get_option('split-bin') == 'auto'
53 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
54else
55 split_bin = get_option('split-bin') == 'true'
56endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010057conf.set10('HAVE_SPLIT_BIN', split_bin,
58 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010059
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010060rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010061# Unusual rootprefixdir values are used by some distros
62# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010063rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010064if rootprefixdir == ''
65 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010066endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040067
68sysvinit_path = get_option('sysvinit-path')
69sysvrcnd_path = get_option('sysvrcnd-path')
Max Harmathy54248242017-12-15 16:05:25 +010070have = sysvinit_path != '' and sysvrcnd_path != ''
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020071conf.set10('HAVE_SYSV_COMPAT', have,
72 description : 'SysV init scripts and rcN.d links are supported')
73m4_defines += have ? ['-DHAVE_SYSV_COMPAT'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040074
75# join_paths ignore the preceding arguments if an absolute component is
76# encountered, so this should canonicalize various paths when they are
77# absolute or relative.
78prefixdir = get_option('prefix')
79if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040080 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040081endif
82bindir = join_paths(prefixdir, get_option('bindir'))
83libdir = join_paths(prefixdir, get_option('libdir'))
84sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
85includedir = join_paths(prefixdir, get_option('includedir'))
86datadir = join_paths(prefixdir, get_option('datadir'))
87localstatedir = join_paths('/', get_option('localstatedir'))
88
89rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010090rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040091rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
92
93rootlibdir = get_option('rootlibdir')
94if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040095 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040096endif
97
98# Dirs of external packages
Michael Bieble17e5ba2017-04-13 10:30:56 -040099pkgconfigdatadir = join_paths(datadir, 'pkgconfig')
100pkgconfiglibdir = join_paths(libdir, 'pkgconfig')
101polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
102polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
103polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
104varlogdir = join_paths(localstatedir, 'log')
105xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900106rpmmacrosdir = get_option('rpmmacrosdir')
107if rpmmacrosdir != 'no'
108 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
109endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200110modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400111
112# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400113pkgdatadir = join_paths(datadir, 'systemd')
114environmentdir = join_paths(prefixdir, 'lib/environment.d')
115pkgsysconfdir = join_paths(sysconfdir, 'systemd')
116userunitdir = join_paths(prefixdir, 'lib/systemd/user')
117userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
118tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
119sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
120sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
121binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
122modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
123networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
124pkgincludedir = join_paths(includedir, 'systemd')
125systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
126usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
127systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
128userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
129systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
130systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
131systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
132systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
133udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
134udevhomedir = udevlibexecdir
135udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
136udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
137catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
138kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
139factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400140bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
141testsdir = join_paths(prefixdir, 'lib/systemd/tests')
142systemdstatedir = join_paths(localstatedir, 'lib/systemd')
143catalogstatedir = join_paths(systemdstatedir, 'catalog')
144randomseeddir = join_paths(localstatedir, 'lib/systemd')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400145
tblume75aaade2018-02-01 22:46:15 +0100146docdir = get_option('docdir')
147if docdir == ''
148 docdir = join_paths(datadir, 'doc/systemd')
149endif
150
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400151dbuspolicydir = get_option('dbuspolicydir')
152if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400153 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400154endif
155
156dbussessionservicedir = get_option('dbussessionservicedir')
157if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400158 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400159endif
160
161dbussystemservicedir = get_option('dbussystemservicedir')
162if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400163 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400164endif
165
166pamlibdir = get_option('pamlibdir')
167if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400168 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400169endif
170
171pamconfdir = get_option('pamconfdir')
172if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400173 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400174endif
175
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100176memory_accounting_default = get_option('memory-accounting-default')
177
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400178conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400179conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400180conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
181conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
182conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400183conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
184conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100185
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100186conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100187
Michael Bieble17e5ba2017-04-13 10:30:56 -0400188conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400189conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
190conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400191conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
192conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
193conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
194conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100195conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100196conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400197conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
198conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
199conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
200conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
201conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100202conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400203conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400204conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
205conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400206conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
207conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
208conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
209conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
210conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
211conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400212conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
213conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400214conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400215conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400216conf.set_quoted('LIBDIR', libdir)
217conf.set_quoted('ROOTLIBDIR', rootlibdir)
218conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
219conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400220conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
221conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
222conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
223conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
224conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
225conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100226conf.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'true' : 'false')
Michal Koutný7f672e82018-03-09 18:27:13 +0100227conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400228
229conf.set_quoted('ABS_BUILD_DIR', meson.build_root())
230conf.set_quoted('ABS_SRC_DIR', meson.source_root())
231
232substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400233substs.set('exec_prefix', prefixdir)
234substs.set('libdir', libdir)
235substs.set('rootlibdir', rootlibdir)
236substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400237substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400238substs.set('bindir', bindir)
239substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400240substs.set('rootlibexecdir', rootlibexecdir)
241substs.set('systemunitdir', systemunitdir)
242substs.set('userunitdir', userunitdir)
243substs.set('systempresetdir', systempresetdir)
244substs.set('userpresetdir', userpresetdir)
245substs.set('udevhwdbdir', udevhwdbdir)
246substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400247substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400248substs.set('catalogdir', catalogdir)
249substs.set('tmpfilesdir', tmpfilesdir)
250substs.set('sysusersdir', sysusersdir)
251substs.set('sysctldir', sysctldir)
252substs.set('binfmtdir', binfmtdir)
253substs.set('modulesloaddir', modulesloaddir)
254substs.set('systemgeneratordir', systemgeneratordir)
255substs.set('usergeneratordir', usergeneratordir)
256substs.set('systemenvgeneratordir', systemenvgeneratordir)
257substs.set('userenvgeneratordir', userenvgeneratordir)
258substs.set('systemshutdowndir', systemshutdowndir)
259substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400260substs.set('VARLOGDIR', varlogdir)
261substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400262substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
263substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400264substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
265substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
266substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
267substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100268substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400269
270#####################################################################
271
272cc = meson.get_compiler('c')
273pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400274check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100275meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400276
Adam Duskett08318a22018-01-15 06:25:46 -0500277if get_option('tests') != 'false'
278 cxx = find_program('c++', required : false)
279 if cxx.found()
280 # Used only for tests
281 add_languages('cpp')
282 endif
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400283endif
284
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500285want_ossfuzz = get_option('oss-fuzz')
286want_libfuzzer = get_option('llvm-fuzz')
287fuzzer_build = want_ossfuzz or want_libfuzzer
288if want_ossfuzz and want_libfuzzer
289 error('only one of oss-fuzz and llvm-fuzz can be specified')
290endif
291if want_libfuzzer
292 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
293endif
294if want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500295 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
296endif
297
Zbigniew Jędrzejewski-Szmek75cf1d62017-07-04 17:59:15 -0400298foreach arg : ['-Wextra',
Zbigniew Jędrzejewski-Szmek70160ce2017-10-03 12:11:49 +0200299 '-Werror=undef',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400300 '-Wlogical-op',
301 '-Wmissing-include-dirs',
302 '-Wold-style-definition',
303 '-Wpointer-arith',
304 '-Winit-self',
305 '-Wdeclaration-after-statement',
306 '-Wfloat-equal',
307 '-Wsuggest-attribute=noreturn',
308 '-Werror=missing-prototypes',
309 '-Werror=implicit-function-declaration',
310 '-Werror=missing-declarations',
311 '-Werror=return-type',
312 '-Werror=incompatible-pointer-types',
313 '-Werror=format=2',
314 '-Wstrict-prototypes',
315 '-Wredundant-decls',
316 '-Wmissing-noreturn',
Zbigniew Jędrzejewski-Szmek97279d82017-11-20 14:23:40 +0100317 '-Wimplicit-fallthrough=5',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400318 '-Wshadow',
319 '-Wendif-labels',
320 '-Wstrict-aliasing=2',
321 '-Wwrite-strings',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400322 '-Werror=overflow',
323 '-Wdate-time',
324 '-Wnested-externs',
325 '-ffast-math',
326 '-fno-common',
327 '-fdiagnostics-show-option',
328 '-fno-strict-aliasing',
329 '-fvisibility=hidden',
330 '-fstack-protector',
331 '-fstack-protector-strong',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400332 '--param=ssp-buffer-size=4',
333 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400334 if cc.has_argument(arg)
335 add_project_arguments(arg, language : 'c')
336 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400337endforeach
338
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500339# the oss-fuzz fuzzers are not built with -fPIE, so don't
340# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500341if not fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500342 if cc.has_argument('-fPIE')
343 add_project_arguments('-fPIE', language : 'c')
344 endif
345endif
346
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400347# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
348# arguments, just emits a warnings. So test for the "positive" version instead.
349foreach arg : ['unused-parameter',
350 'missing-field-initializers',
351 'unused-result',
Zbigniew Jędrzejewski-Szmekfb1b5882017-09-04 19:49:12 +0300352 'format-signedness',
353 'error=nonnull', # work-around for gcc 7.1 turning this on on its own
354 ]
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400355 if cc.has_argument('-W' + arg)
356 add_project_arguments('-Wno-' + arg, language : 'c')
357 endif
358endforeach
359
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800360if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400361 #include <time.h>
362 #include <inttypes.h>
363 typedef uint64_t usec_t;
364 usec_t now(clockid_t clock);
365 int main(void) {
366 struct timespec now;
367 return 0;
368 }
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800369''', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400370 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400371endif
372
373if cc.get_id() == 'clang'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400374 foreach arg : ['-Wno-typedef-redefinition',
375 '-Wno-gnu-variable-sized-type-not-at-end',
376 ]
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400377 if cc.has_argument(arg,
378 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400379 add_project_arguments(arg, language : 'c')
380 endif
381 endforeach
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400382endif
383
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400384link_test_c = files('tools/meson-link-test.c')
385
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400386# --as-needed and --no-undefined are provided by meson by default,
387# run mesonconf to see what is enabled
388foreach arg : ['-Wl,-z,relro',
389 '-Wl,-z,now',
390 '-pie',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400391 ]
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400392
393 have = run_command(check_compilation_sh,
394 cc.cmd_array(), '-x', 'c', arg,
395 '-include', link_test_c).returncode() == 0
396 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500397 if have and (arg != '-pie' or not fuzzer_build)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400398 add_project_link_arguments(arg, language : 'c')
399 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400400endforeach
401
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400402if get_option('buildtype') != 'debug'
403 foreach arg : ['-ffunction-sections',
404 '-fdata-sections']
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400405 if cc.has_argument(arg,
406 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400407 add_project_arguments(arg, language : 'c')
408 endif
409 endforeach
410
411 foreach arg : ['-Wl,--gc-sections']
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400412 have = run_command(check_compilation_sh,
413 cc.cmd_array(), '-x', 'c', arg,
414 '-include', link_test_c).returncode() == 0
415 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
416 if have
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400417 add_project_link_arguments(arg, language : 'c')
418 endif
419 endforeach
420endif
421
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400422cpp = ' '.join(cc.cmd_array()) + ' -E'
423
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400424#####################################################################
425# compilation result tests
426
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400427conf.set('_GNU_SOURCE', true)
428conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400429
430conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
431conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
432conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
433conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
434conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
435conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
436conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
437
438decl_headers = '''
439#include <uchar.h>
440#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000441#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100442#include <linux/stat.h>
443#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400444'''
445# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
446
447foreach decl : ['char16_t',
448 'char32_t',
449 'key_serial_t',
450 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000451 'struct fib_rule_uid_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100452 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400453 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400454
455 # We get -1 if the size cannot be determined
456 have = cc.sizeof(decl, prefix : decl_headers) > 0
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200457 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400458endforeach
459
460foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
461 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
462 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
463 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530464 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400465 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
466 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
467 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
468 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
469 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530470 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400471 # if_tunnel.h is buggy and cannot be included on its own
472 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
473 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
474 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
475 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
476 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
477 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
478 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530479 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400480 ['NDA_IFINDEX', 'linux/neighbour.h'],
481 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000482 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400483 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530484 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400485 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400486 prefix = decl.length() > 2 ? decl[2] : ''
487 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200488 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400489endforeach
490
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400491foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200492 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400493endforeach
494
495foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100496 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100497 ['gettid', '''#include <sys/types.h>
498 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100499 ['pivot_root', '''#include <stdlib.h>
500 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100501 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400502 #include <sys/stat.h>
503 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100504 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100505 ['renameat2', '''#include <stdio.h>
506 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400507 ['kcmp', '''#include <linux/kcmp.h>'''],
508 ['keyctl', '''#include <sys/types.h>
509 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100510 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400511 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200512 ['bpf', '''#include <sys/syscall.h>
513 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100514 ['statx', '''#include <sys/types.h>
515 #include <sys/stat.h>
516 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100517 ['explicit_bzero' , '''#include <string.h>'''],
518 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400519]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400520
Lennart Poettering85db59b2017-12-25 12:01:14 +0100521 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200522 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400523endforeach
524
Lennart Poettering85db59b2017-12-25 12:01:14 +0100525if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200526 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200527 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400528else
529 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200530 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200531 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400532endif
533
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400534#####################################################################
535
536sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400537awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400538m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400539stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400540git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100541env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100542perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400543
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400544meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400545mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400546test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
547splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400548
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400549# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
550# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500551progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400552 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400553 ['kmod', '/usr/bin/kmod' ],
554 ['kexec', '/usr/sbin/kexec' ],
555 ['sulogin', '/usr/sbin/sulogin' ],
556 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
557 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
558 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
559 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
560 ]
561foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400562 path = get_option(prog[0] + '-path')
563 if path != ''
564 message('Using @1@ for @0@'.format(prog[0], path))
565 else
566 exe = find_program(prog[0],
567 '/usr/sbin/' + prog[0],
568 '/sbin/' + prog[0],
569 required: false)
570 path = exe.found() ? exe.path() : prog[1]
571 endif
572 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
573 conf.set_quoted(name, path)
574 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400575endforeach
576
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500577conf.set_quoted('TELINIT', get_option('telinit-path'))
578
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400579if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100580 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400581endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400582
583############################################################
584
585gperf = find_program('gperf')
586
587gperf_test_format = '''
588#include <string.h>
589const char * in_word_set(const char *, @0@);
590@1@
591'''
592gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
593gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
594gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
595if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400596 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400597else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400598 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
599 if cc.compiles(gperf_test)
600 gperf_len_type = 'unsigned'
601 else
602 error('unable to determine gperf len type')
603 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400604endif
605message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400606conf.set('GPERF_LEN_TYPE', gperf_len_type,
607 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400608
609############################################################
610
611if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400612 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400613endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100614foreach header : ['crypt.h',
615 'linux/btrfs.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400616 'linux/memfd.h',
617 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200618 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400619 'valgrind/memcheck.h',
620 'valgrind/valgrind.h',
621 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400622
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200623 conf.set10('HAVE_' + header.underscorify().to_upper(),
624 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400625endforeach
626
627############################################################
628
629conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400630conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
631gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400632
633default_hierarchy = get_option('default-hierarchy')
634conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
635 description : 'default cgroup hierarchy as string')
636if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400637 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400638elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400639 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400640else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400641 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400642endif
643
644time_epoch = get_option('time-epoch')
645if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400646 NEWS = files('NEWS')
647 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400648endif
649time_epoch = time_epoch.to_int()
650conf.set('TIME_EPOCH', time_epoch)
651
652system_uid_max = get_option('system-uid-max')
653if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400654 system_uid_max = run_command(
655 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800656 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
657 '/etc/login.defs').stdout().strip()
658 if system_uid_max == ''
659 system_uid_max = '999'
660 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400661endif
662system_uid_max = system_uid_max.to_int()
663conf.set('SYSTEM_UID_MAX', system_uid_max)
664substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400665message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400666
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400667system_gid_max = get_option('system-gid-max')
668if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400669 system_gid_max = run_command(
670 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800671 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
672 '/etc/login.defs').stdout().strip()
673 if system_gid_max == ''
674 system_gid_max = '999'
675 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400676endif
677system_gid_max = system_gid_max.to_int()
678conf.set('SYSTEM_GID_MAX', system_gid_max)
679substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400680message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400681
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100682dynamic_uid_min = get_option('dynamic-uid-min').to_int()
683dynamic_uid_max = get_option('dynamic-uid-max').to_int()
684conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
685conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
686substs.set('dynamicuidmin', dynamic_uid_min)
687substs.set('dynamicuidmax', dynamic_uid_max)
688
689container_uid_base_min = get_option('container-uid-base-min').to_int()
690container_uid_base_max = get_option('container-uid-base-max').to_int()
691conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
692conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
693substs.set('containeruidbasemin', container_uid_base_min)
694substs.set('containeruidbasemax', container_uid_base_max)
695
Lennart Poetteringafde4572017-12-05 11:00:24 +0100696nobody_user = get_option('nobody-user')
697nobody_group = get_option('nobody-group')
698
699getent_result = run_command('getent', 'passwd', '65534')
700if getent_result.returncode() == 0
701 name = getent_result.stdout().split(':')[0]
702 if name != nobody_user
703 message('WARNING:\n' +
704 ' The local user with the UID 65534 does not match the configured user name "@0@" of the nobody user (its name is @1@).\n'.format(nobody_user, name) +
705 ' Your build will result in an user table setup that is incompatible with the local system.')
706 endif
707endif
708id_result = run_command('id', '-u', nobody_user)
709if id_result.returncode() == 0
710 id = id_result.stdout().to_int()
711 if id != 65534
712 message('WARNING:\n' +
713 ' The local user with the configured user name "@0@" of the nobody user does not have UID 65534 (it has @1@).\n'.format(nobody_user, id) +
714 ' Your build will result in an user table setup that is incompatible with the local system.')
715 endif
716endif
717
718getent_result = run_command('getent', 'group', '65534')
719if getent_result.returncode() == 0
720 name = getent_result.stdout().split(':')[0]
721 if name != nobody_group
722 message('WARNING:\n' +
723 ' The local group with the GID 65534 does not match the configured group name "@0@" of the nobody group (its name is @1@).\n'.format(nobody_group, name) +
724 ' Your build will result in an group table setup that is incompatible with the local system.')
725 endif
726endif
727id_result = run_command('id', '-g', nobody_group)
728if id_result.returncode() == 0
729 id = id_result.stdout().to_int()
730 if id != 65534
731 message('WARNING:\n' +
732 ' The local group with the configured group name "@0@" of the nobody group does not have UID 65534 (it has @1@).\n'.format(nobody_group, id) +
733 ' Your build will result in an group table setup that is incompatible with the local system.')
734 endif
735endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900736if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
737 message('WARNING:\n' +
738 ' The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
739 ' Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
740endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100741
742conf.set_quoted('NOBODY_USER_NAME', nobody_user)
743conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900744substs.set('NOBODY_USER_NAME', nobody_user)
745substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100746
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400747tty_gid = get_option('tty-gid')
748conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400749substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400750
Ikey Doherty84786b82017-12-03 12:28:23 +0000751# Ensure provided GID argument is numeric, otherwise fallback to default assignment
752if get_option('users-gid') != ''
Yu Watanabed6806872017-12-05 14:01:39 +0900753 users_gid = get_option('users-gid').to_int()
Ikey Doherty84786b82017-12-03 12:28:23 +0000754else
Yu Watanabed6806872017-12-05 14:01:39 +0900755 users_gid = '-'
Ikey Doherty84786b82017-12-03 12:28:23 +0000756endif
757substs.set('USERS_GID', users_gid)
758
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400759if get_option('adm-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400760 m4_defines += ['-DENABLE_ADM_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400761endif
762
763if get_option('wheel-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400764 m4_defines += ['-DENABLE_WHEEL_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400765endif
766
767substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700768substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400769
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400770kill_user_processes = get_option('default-kill-user-processes')
771conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100772conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400773substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400774
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400775dns_servers = get_option('dns-servers')
776conf.set_quoted('DNS_SERVERS', dns_servers)
777substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400778
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400779ntp_servers = get_option('ntp-servers')
780conf.set_quoted('NTP_SERVERS', ntp_servers)
781substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400782
783conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
784
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400785substs.set('SUSHELL', get_option('debug-shell'))
786substs.set('DEBUGTTY', get_option('debug-tty'))
787
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400788debug = get_option('debug')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200789enable_debug_hashmap = false
790enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400791if debug != ''
792 foreach name : debug.split(',')
793 if name == 'hashmap'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200794 enable_debug_hashmap = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400795 elif name == 'mmap-cache'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200796 enable_debug_mmap_cache = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400797 else
798 message('unknown debug option "@0@", ignoring'.format(name))
799 endif
800 endforeach
801endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200802conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
803conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400804
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400805#####################################################################
806
807threads = dependency('threads')
808librt = cc.find_library('rt')
809libm = cc.find_library('m')
810libdl = cc.find_library('dl')
811libcrypt = cc.find_library('crypt')
812
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400813libcap = dependency('libcap', required : false)
814if not libcap.found()
815 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
816 libcap = cc.find_library('cap')
817endif
818
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400819libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100820 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400821
822want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500823if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400824 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400825 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400826 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200827 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400828else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200829 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400830 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400831endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200832conf.set10('HAVE_SECCOMP', have)
833m4_defines += have ? ['-DHAVE_SECCOMP'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400834
835want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500836if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400837 libselinux = dependency('libselinux',
838 version : '>= 2.1.9',
839 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200840 have = libselinux.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 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400844endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200845conf.set10('HAVE_SELINUX', have)
846m4_defines += have ? ['-DHAVE_SELINUX'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400847
848want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500849if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400850 libapparmor = dependency('libapparmor',
851 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200852 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400853else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200854 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400855 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400856endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200857conf.set10('HAVE_APPARMOR', have)
858m4_defines += have ? ['-DHAVE_APPARMOR'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400859
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400860smack_run_label = get_option('smack-run-label')
861if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400862 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
863 m4_defines += ['-DHAVE_SMACK_RUN_LABEL']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400864endif
865
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400866want_polkit = get_option('polkit')
867install_polkit = false
868install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500869if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400870 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400871
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400872 libpolkit = dependency('polkit-gobject-1',
873 required : false)
874 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
875 message('Old polkit detected, will install pkla files')
876 install_polkit_pkla = true
877 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400878endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200879conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400880
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400881want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500882if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400883 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200884 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400885else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200886 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400887 libacl = []
888endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200889conf.set10('HAVE_ACL', have)
890m4_defines += have ? ['-DHAVE_ACL'] : []
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400891
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400892want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500893if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400894 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200895 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400896else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200897 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400898 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400899endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200900conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400901
902want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500903if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400904 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200905 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400906else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200907 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400908 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400909endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200910conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400911
912want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500913if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400914 libkmod = dependency('libkmod',
915 version : '>= 15',
916 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200917 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400918else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200919 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400920 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400921endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200922conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400923
924want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500925if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400926 libpam = cc.find_library('pam', required : want_pam == 'true')
927 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200928 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400929else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200930 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400931 libpam = []
932 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400933endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200934conf.set10('HAVE_PAM', have)
935m4_defines += have ? ['-DHAVE_PAM'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400936
937want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500938if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400939 libmicrohttpd = dependency('libmicrohttpd',
940 version : '>= 0.9.33',
941 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200942 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400943else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200944 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400945 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400946endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200947conf.set10('HAVE_MICROHTTPD', have)
948m4_defines += have ? ['-DHAVE_MICROHTTPD'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400949
950want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500951if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400952 libcryptsetup = dependency('libcryptsetup',
953 version : '>= 1.6.0',
954 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200955 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400956else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200957 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400958 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400959endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200960conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400961
962want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500963if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400964 libcurl = dependency('libcurl',
965 version : '>= 7.32.0',
966 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200967 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400968else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200969 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400970 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400971endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200972conf.set10('HAVE_LIBCURL', have)
973m4_defines += have ? ['-DHAVE_LIBCURL'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400974
975want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400976want_libidn2 = get_option('libidn2')
977if want_libidn == 'true' and want_libidn2 == 'true'
978 error('libidn and libidn2 cannot be requested simultaneously')
979endif
980
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500981if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400982 libidn = dependency('libidn',
983 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200984 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400985else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200986 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400987 libidn = []
988endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200989conf.set10('HAVE_LIBIDN', have)
990m4_defines += have ? ['-DHAVE_LIBIDN'] : []
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500991if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400992 # libidn is used for both libidn and libidn2 objects
993 libidn = dependency('libidn2',
994 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200995 have = libidn.found()
996else
997 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400998endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200999conf.set10('HAVE_LIBIDN2', have)
1000m4_defines += have ? ['-DHAVE_LIBIDN2'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001001
1002want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001003if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001004 libiptc = dependency('libiptc',
1005 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001006 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001007else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001008 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001009 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001010endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001011conf.set10('HAVE_LIBIPTC', have)
1012m4_defines += have ? ['-DHAVE_LIBIPTC'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001013
1014want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001015if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001016 libqrencode = dependency('libqrencode',
1017 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001018 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001019else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001020 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001021 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001022endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001023conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001024
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001025want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001026if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001027 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1028 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001029 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001030else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001031 have = false
1032endif
1033if not have
1034 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001035 libgcrypt = []
1036 libgpg_error = []
1037endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001038conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001039
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001040want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001041if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001042 libgnutls = dependency('gnutls',
1043 version : '>= 3.1.4',
1044 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001045 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001046else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001047 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001048 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001049endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001050conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001051
1052want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001053if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001054 libdw = dependency('libdw',
1055 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001056 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001057else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001058 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001059 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001060endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001061conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001062
1063want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001064if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001065 libz = dependency('zlib',
1066 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001067 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001068else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001069 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001070 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001071endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001072conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001073
1074want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001075if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001076 libbzip2 = cc.find_library('bz2',
1077 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001078 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001079else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001080 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001081 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001082endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001083conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001084
1085want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001086if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001087 libxz = dependency('liblzma',
1088 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001089 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001090else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001091 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001092 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001093endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001094conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001095
1096want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001097if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001098 liblz4 = dependency('liblz4',
1099 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001100 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001101else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001102 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001103 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001104endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001105conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001106
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001107want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001108if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001109 libxkbcommon = dependency('xkbcommon',
1110 version : '>= 0.3.0',
1111 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001112 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001113else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001114 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001115 libxkbcommon = []
1116endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001117conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001118
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001119want_pcre2 = get_option('pcre2')
1120if want_pcre2 != 'false'
1121 libpcre2 = dependency('libpcre2-8',
1122 required : want_pcre2 == 'true')
1123 have = libpcre2.found()
1124else
1125 have = false
1126 libpcre2 = []
1127endif
1128conf.set10('HAVE_PCRE2', have)
1129
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001130want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001131if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001132 libglib = dependency('glib-2.0',
1133 version : '>= 2.22.0',
1134 required : want_glib == 'true')
1135 libgobject = dependency('gobject-2.0',
1136 version : '>= 2.22.0',
1137 required : want_glib == 'true')
1138 libgio = dependency('gio-2.0',
1139 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001140 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001141else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001142 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001143 libglib = []
1144 libgobject = []
1145 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001146endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001147conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001148
1149want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001150if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001151 libdbus = dependency('dbus-1',
1152 version : '>= 1.3.2',
1153 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001154 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001155else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001156 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001157 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001158endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001159conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001160
Yu Watanabe42303dc2017-06-18 05:22:32 +09001161default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001162if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001163 default_dnssec = 'no'
1164endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001165if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001166 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1167 default_dnssec = 'no'
1168endif
1169conf.set('DEFAULT_DNSSEC_MODE',
1170 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1171substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1172
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001173want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001174if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001175 have = (conf.get('HAVE_LIBCURL') == 1 and
1176 conf.get('HAVE_ZLIB') == 1 and
1177 conf.get('HAVE_BZIP2') == 1 and
1178 conf.get('HAVE_XZ') == 1 and
1179 conf.get('HAVE_GCRYPT') == 1)
1180 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001181 error('importd support was requested, but dependencies are not available')
1182 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001183else
1184 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001185endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001186conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001187
1188want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001189if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001190 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1191 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001192 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1193 # it's possible to build one without the other. Complain only if
1194 # support was explictly requested. The auxiliary files like sysusers
1195 # config should be installed when any of the programs are built.
1196 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1197 error('remote support was requested, but dependencies are not available')
1198 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001199 have = have_deps[0] or have_deps[1]
1200else
1201 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001202endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001203conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001204
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001205foreach term : ['utmp',
1206 'hibernate',
1207 'environment-d',
1208 'binfmt',
1209 'coredump',
1210 'resolve',
1211 'logind',
1212 'hostnamed',
1213 'localed',
1214 'machined',
1215 'networkd',
1216 'timedated',
1217 'timesyncd',
1218 'myhostname',
1219 'firstboot',
1220 'randomseed',
1221 'backlight',
1222 'vconsole',
1223 'quotacheck',
1224 'sysusers',
1225 'tmpfiles',
1226 'hwdb',
1227 'rfkill',
1228 'ldconfig',
1229 'efi',
1230 'tpm',
1231 'ima',
1232 'smack',
1233 'gshadow',
1234 'idn',
1235 'nss-systemd']
1236 have = get_option(term)
1237 name = 'ENABLE_' + term.underscorify().to_upper()
1238 conf.set10(name, have)
1239 m4_defines += have ? ['-D' + name] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001240endforeach
1241
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001242want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001243install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001244slow_tests = get_option('slow-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001245tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001246fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001247
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001248conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001249
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001250#####################################################################
1251
1252if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001253 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001254
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001255 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001256 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001257 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001258 elif efi_arch == 'x86_64'
1259 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001260 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001261 elif efi_arch == 'arm'
1262 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001263 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001264 elif efi_arch == 'aarch64'
1265 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001266 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001267 else
1268 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001269 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001270 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001271
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001272 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001273 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001274
1275 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001276else
1277 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001278endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001279conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001280
1281#####################################################################
1282
1283config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001284 output : 'config.h',
1285 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001286
1287includes = include_directories('src/basic',
1288 'src/shared',
1289 'src/systemd',
1290 'src/journal',
1291 'src/resolve',
1292 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001293 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001294 'src/login',
1295 'src/udev',
1296 'src/libudev',
1297 'src/core',
1298 'src/libsystemd/sd-bus',
1299 'src/libsystemd/sd-device',
1300 'src/libsystemd/sd-hwdb',
1301 'src/libsystemd/sd-id128',
1302 'src/libsystemd/sd-netlink',
1303 'src/libsystemd/sd-network',
1304 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001305 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001306
1307add_project_arguments('-include', 'config.h', language : 'c')
1308
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001309subdir('po')
1310subdir('catalog')
1311subdir('src/systemd')
1312subdir('src/basic')
1313subdir('src/libsystemd')
1314subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001315subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001316subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001317
1318libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001319 'journal-core',
1320 libjournal_core_sources,
1321 journald_gperf_c,
1322 include_directories : includes,
1323 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001324
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001325libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001326libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001327 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001328 'src/systemd/sd-id128.h', # pick a header file at random to work around old meson bug
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001329 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001330 include_directories : includes,
1331 link_args : ['-shared',
1332 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001333 link_with : [libbasic,
1334 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001335 link_whole : [libsystemd_static,
1336 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001337 dependencies : [threads,
1338 librt,
1339 libxz,
1340 liblz4],
1341 link_depends : libsystemd_sym,
1342 install : true,
1343 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001344
Davide Cavalca70848ec2018-04-09 02:43:35 -07001345static_libsystemd = get_option('static-libsystemd')
1346static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1347
1348install_libsystemd_static = static_library(
1349 'systemd',
1350 libsystemd_sources,
1351 journal_client_sources,
1352 include_directories : includes,
1353 link_with : [libbasic,
1354 libbasic_gcrypt],
1355 build_by_default : static_libsystemd != 'false',
1356 install : static_libsystemd != 'false',
1357 install_dir : rootlibdir,
1358 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1359 dependencies : [threads,
1360 librt,
1361 libxz,
1362 liblz4,
1363 libgcrypt],
1364 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1365
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001366############################################################
1367
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001368# binaries that have --help and are intended for use by humans,
1369# usually, but not always, installed in /bin.
1370public_programs = []
1371
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001372subdir('src/libudev')
1373subdir('src/shared')
1374subdir('src/core')
1375subdir('src/udev')
1376subdir('src/network')
1377
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001378subdir('src/analyze')
1379subdir('src/journal-remote')
1380subdir('src/coredump')
1381subdir('src/hostname')
1382subdir('src/import')
1383subdir('src/kernel-install')
1384subdir('src/locale')
1385subdir('src/machine')
1386subdir('src/nspawn')
1387subdir('src/resolve')
1388subdir('src/timedate')
1389subdir('src/timesync')
1390subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001391subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001392
1393subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001394subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001395subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001396subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001397
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001398############################################################
1399
1400# only static linking apart from libdl, to make sure that the
1401# module is linked to all libraries that it uses.
1402test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001403 'test-dlopen',
1404 test_dlopen_c,
1405 include_directories : includes,
1406 link_with : [libbasic],
1407 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001408
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001409foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001410 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001411 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001412 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001413
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001414 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001415 if condition
1416 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001417
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001418 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1419 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001420
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001421 nss = shared_library(
1422 'nss_' + module,
1423 'src/nss-@0@/nss-@0@.c'.format(module),
1424 version : '2',
1425 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001426 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1427 link_args : ['-Wl,-z,nodelete',
1428 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001429 '-Wl,--version-script=' + version_script_arg,
1430 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001431 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001432 libbasic],
1433 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001434 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001435 link_depends : sym,
1436 install : true,
1437 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001438
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001439 # We cannot use shared_module because it does not support version suffix.
1440 # Unfortunately shared_library insists on creating the symlink…
1441 meson.add_install_script('sh', '-c',
1442 'rm $DESTDIR@0@/libnss_@1@.so'
1443 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001444
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001445 test('dlopen-nss_' + module,
1446 test_dlopen,
1447 args : [nss.full_path()]) # path to dlopen must include a slash
1448 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001449endforeach
1450
1451############################################################
1452
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001453executable('systemd',
1454 systemd_sources,
1455 include_directories : includes,
1456 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001457 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001458 dependencies : [threads,
1459 librt,
1460 libseccomp,
1461 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001462 libmount,
1463 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001464 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001465 install : true,
1466 install_dir : rootlibexecdir)
1467
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001468meson.add_install_script(meson_make_symlink,
1469 join_paths(rootlibexecdir, 'systemd'),
1470 join_paths(rootsbindir, 'init'))
1471
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001472exe = executable('systemd-analyze',
1473 systemd_analyze_sources,
1474 include_directories : includes,
1475 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001476 libshared],
1477 dependencies : [threads,
1478 librt,
1479 libseccomp,
1480 libselinux,
1481 libmount,
1482 libblkid],
1483 install_rpath : rootlibexecdir,
1484 install : true)
1485public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001486
1487executable('systemd-journald',
1488 systemd_journald_sources,
1489 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001490 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001491 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001492 dependencies : [threads,
1493 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001494 liblz4,
1495 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001496 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001497 install : true,
1498 install_dir : rootlibexecdir)
1499
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001500exe = executable('systemd-cat',
1501 systemd_cat_sources,
1502 include_directories : includes,
1503 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001504 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001505 dependencies : [threads],
1506 install_rpath : rootlibexecdir,
1507 install : true)
1508public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001509
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001510exe = executable('journalctl',
1511 journalctl_sources,
1512 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001513 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001514 dependencies : [threads,
1515 libqrencode,
1516 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001517 liblz4,
1518 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001519 install_rpath : rootlibexecdir,
1520 install : true,
1521 install_dir : rootbindir)
1522public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001523
1524executable('systemd-getty-generator',
1525 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001526 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001527 link_with : [libshared],
1528 install_rpath : rootlibexecdir,
1529 install : true,
1530 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001531
1532executable('systemd-debug-generator',
1533 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001534 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001535 link_with : [libshared],
1536 install_rpath : rootlibexecdir,
1537 install : true,
1538 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001539
1540executable('systemd-fstab-generator',
1541 'src/fstab-generator/fstab-generator.c',
1542 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001543 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001544 link_with : [libshared],
1545 install_rpath : rootlibexecdir,
1546 install : true,
1547 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001548
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001549if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001550 executable('30-systemd-environment-d-generator',
1551 'src/environment-d-generator/environment-d-generator.c',
1552 include_directories : includes,
1553 link_with : [libshared],
1554 install_rpath : rootlibexecdir,
1555 install : true,
1556 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001557
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001558 meson.add_install_script(meson_make_symlink,
1559 join_paths(sysconfdir, 'environment'),
1560 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001561endif
1562
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001563if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001564 executable('systemd-hibernate-resume-generator',
1565 'src/hibernate-resume/hibernate-resume-generator.c',
1566 include_directories : includes,
1567 link_with : [libshared],
1568 install_rpath : rootlibexecdir,
1569 install : true,
1570 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001571
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001572 executable('systemd-hibernate-resume',
1573 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001574 include_directories : includes,
1575 link_with : [libshared],
1576 install_rpath : rootlibexecdir,
1577 install : true,
1578 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001579endif
1580
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001581if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001582 executable('systemd-gpt-auto-generator',
1583 'src/gpt-auto-generator/gpt-auto-generator.c',
1584 'src/basic/blkid-util.h',
1585 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001586 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001587 dependencies : libblkid,
1588 install_rpath : rootlibexecdir,
1589 install : true,
1590 install_dir : systemgeneratordir)
1591
1592 exe = executable('systemd-dissect',
1593 'src/dissect/dissect.c',
1594 include_directories : includes,
1595 link_with : [libshared],
1596 install_rpath : rootlibexecdir,
1597 install : true,
1598 install_dir : rootlibexecdir)
1599 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001600endif
1601
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001602if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001603 executable('systemd-resolved',
1604 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001605 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001606 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001607 libbasic_gcrypt,
1608 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001609 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001610 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001611 libm,
1612 libidn],
1613 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001614 install : true,
1615 install_dir : rootlibexecdir)
1616
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001617 exe = executable('resolvectl',
1618 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001619 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001620 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001621 libbasic_gcrypt,
1622 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001623 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001624 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001625 libm,
1626 libidn],
1627 install_rpath : rootlibexecdir,
1628 install : true)
1629 public_programs += [exe]
Lennart Poettering088c1362018-02-27 17:48:54 +01001630
1631 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001632 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001633 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001634
1635 meson.add_install_script(meson_make_symlink,
1636 join_paths(bindir, 'resolvectl'),
1637 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001638endif
1639
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001640if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001641 executable('systemd-logind',
1642 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001643 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001644 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001645 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001646 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001647 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001648 install_rpath : rootlibexecdir,
1649 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001650 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001651
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001652 exe = executable('loginctl',
1653 loginctl_sources,
1654 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001655 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001656 dependencies : [threads,
1657 liblz4,
1658 libxz],
1659 install_rpath : rootlibexecdir,
1660 install : true,
1661 install_dir : rootbindir)
1662 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001663
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001664 exe = executable('systemd-inhibit',
1665 'src/login/inhibit.c',
1666 include_directories : includes,
1667 link_with : [libshared],
1668 install_rpath : rootlibexecdir,
1669 install : true,
1670 install_dir : rootbindir)
1671 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001672
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001673 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001674 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1675 pam_systemd = shared_library(
1676 'pam_systemd',
1677 pam_systemd_c,
1678 name_prefix : '',
1679 include_directories : includes,
1680 link_args : ['-shared',
1681 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001682 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001683 libshared_static],
1684 dependencies : [threads,
1685 libpam,
1686 libpam_misc],
1687 link_depends : pam_systemd_sym,
1688 install : true,
1689 install_dir : pamlibdir)
1690
1691 test('dlopen-pam_systemd',
1692 test_dlopen,
1693 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1694 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001695endif
1696
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001697if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001698 executable('systemd-user-sessions',
1699 'src/user-sessions/user-sessions.c',
1700 include_directories : includes,
1701 link_with : [libshared],
1702 install_rpath : rootlibexecdir,
1703 install : true,
1704 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001705endif
1706
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001707if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001708 exe = executable('bootctl',
1709 'src/boot/bootctl.c',
1710 include_directories : includes,
1711 link_with : [libshared],
1712 dependencies : [libblkid],
1713 install_rpath : rootlibexecdir,
1714 install : true)
1715 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001716endif
1717
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001718exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1719 include_directories : includes,
1720 link_with : [libshared],
1721 dependencies : [threads],
1722 install_rpath : rootlibexecdir,
1723 install : true)
1724public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001725
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001726exe = executable('systemctl', 'src/systemctl/systemctl.c',
1727 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001728 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001729 dependencies : [threads,
1730 libcap,
1731 libselinux,
1732 libxz,
1733 liblz4],
1734 install_rpath : rootlibexecdir,
1735 install : true,
1736 install_dir : rootbindir)
1737public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001738
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001739foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1740 meson.add_install_script(meson_make_symlink,
1741 join_paths(rootbindir, 'systemctl'),
1742 join_paths(rootsbindir, alias))
1743endforeach
1744
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001745if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001746 executable('systemd-backlight',
1747 'src/backlight/backlight.c',
1748 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001749 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001750 install_rpath : rootlibexecdir,
1751 install : true,
1752 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001753endif
1754
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001755if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001756 executable('systemd-rfkill',
1757 'src/rfkill/rfkill.c',
1758 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001759 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001760 install_rpath : rootlibexecdir,
1761 install : true,
1762 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001763endif
1764
1765executable('systemd-system-update-generator',
1766 'src/system-update-generator/system-update-generator.c',
1767 include_directories : includes,
1768 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001769 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001770 install : true,
1771 install_dir : systemgeneratordir)
1772
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001773if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001774 executable('systemd-cryptsetup',
1775 'src/cryptsetup/cryptsetup.c',
1776 include_directories : includes,
1777 link_with : [libshared],
1778 dependencies : [libcryptsetup],
1779 install_rpath : rootlibexecdir,
1780 install : true,
1781 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001782
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001783 executable('systemd-cryptsetup-generator',
1784 'src/cryptsetup/cryptsetup-generator.c',
1785 include_directories : includes,
1786 link_with : [libshared],
1787 dependencies : [libcryptsetup],
1788 install_rpath : rootlibexecdir,
1789 install : true,
1790 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001791
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001792 executable('systemd-veritysetup',
1793 'src/veritysetup/veritysetup.c',
1794 include_directories : includes,
1795 link_with : [libshared],
1796 dependencies : [libcryptsetup],
1797 install_rpath : rootlibexecdir,
1798 install : true,
1799 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001800
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001801 executable('systemd-veritysetup-generator',
1802 'src/veritysetup/veritysetup-generator.c',
1803 include_directories : includes,
1804 link_with : [libshared],
1805 dependencies : [libcryptsetup],
1806 install_rpath : rootlibexecdir,
1807 install : true,
1808 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001809endif
1810
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001811if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001812 executable('systemd-sysv-generator',
1813 'src/sysv-generator/sysv-generator.c',
1814 include_directories : includes,
1815 link_with : [libshared],
1816 install_rpath : rootlibexecdir,
1817 install : true,
1818 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001819
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001820 executable('systemd-rc-local-generator',
1821 'src/rc-local-generator/rc-local-generator.c',
1822 include_directories : includes,
1823 link_with : [libshared],
1824 install_rpath : rootlibexecdir,
1825 install : true,
1826 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001827endif
1828
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001829if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001830 executable('systemd-hostnamed',
1831 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001832 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001833 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001834 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001835 install : true,
1836 install_dir : rootlibexecdir)
1837
1838 exe = executable('hostnamectl',
1839 'src/hostname/hostnamectl.c',
1840 include_directories : includes,
1841 link_with : [libshared],
1842 install_rpath : rootlibexecdir,
1843 install : true)
1844 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001845endif
1846
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001847if conf.get('ENABLE_LOCALED') == 1
1848 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001849 # logind will load libxkbcommon.so dynamically on its own
1850 deps = [libdl]
1851 else
1852 deps = []
1853 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001854
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001855 executable('systemd-localed',
1856 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001857 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001858 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001859 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001860 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001861 install : true,
1862 install_dir : rootlibexecdir)
1863
1864 exe = executable('localectl',
1865 localectl_sources,
1866 include_directories : includes,
1867 link_with : [libshared],
1868 install_rpath : rootlibexecdir,
1869 install : true)
1870 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001871endif
1872
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001873if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001874 executable('systemd-timedated',
1875 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001876 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001877 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001878 install_rpath : rootlibexecdir,
1879 install : true,
1880 install_dir : rootlibexecdir)
1881
1882 exe = executable('timedatectl',
1883 'src/timedate/timedatectl.c',
1884 include_directories : includes,
1885 install_rpath : rootlibexecdir,
1886 link_with : [libshared],
1887 install : true)
1888 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001889endif
1890
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001891if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001892 executable('systemd-timesyncd',
1893 systemd_timesyncd_sources,
1894 include_directories : includes,
1895 link_with : [libshared],
1896 dependencies : [threads,
1897 libm],
1898 install_rpath : rootlibexecdir,
1899 install : true,
1900 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001901
1902 executable('systemd-time-wait-sync',
1903 'src/time-wait-sync/time-wait-sync.c',
1904 include_directories : includes,
1905 link_with : [libshared],
1906 install_rpath : rootlibexecdir,
1907 install : true,
1908 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001909endif
1910
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001911if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001912 executable('systemd-machined',
1913 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001914 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001915 link_with : [libmachine_core,
1916 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001917 install_rpath : rootlibexecdir,
1918 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001919 install_dir : rootlibexecdir)
1920
1921 exe = executable('machinectl',
1922 'src/machine/machinectl.c',
1923 include_directories : includes,
1924 link_with : [libshared],
1925 dependencies : [threads,
1926 libxz,
1927 liblz4],
1928 install_rpath : rootlibexecdir,
1929 install : true,
1930 install_dir : rootbindir)
1931 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001932endif
1933
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001934if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001935 executable('systemd-importd',
1936 systemd_importd_sources,
1937 include_directories : includes,
1938 link_with : [libshared],
1939 dependencies : [threads],
1940 install_rpath : rootlibexecdir,
1941 install : true,
1942 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001943
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001944 systemd_pull = executable('systemd-pull',
1945 systemd_pull_sources,
1946 include_directories : includes,
1947 link_with : [libshared],
1948 dependencies : [libcurl,
1949 libz,
1950 libbzip2,
1951 libxz,
1952 libgcrypt],
1953 install_rpath : rootlibexecdir,
1954 install : true,
1955 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001956
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001957 systemd_import = executable('systemd-import',
1958 systemd_import_sources,
1959 include_directories : includes,
1960 link_with : [libshared],
1961 dependencies : [libcurl,
1962 libz,
1963 libbzip2,
1964 libxz],
1965 install_rpath : rootlibexecdir,
1966 install : true,
1967 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001968
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001969 systemd_export = executable('systemd-export',
1970 systemd_export_sources,
1971 include_directories : includes,
1972 link_with : [libshared],
1973 dependencies : [libcurl,
1974 libz,
1975 libbzip2,
1976 libxz],
1977 install_rpath : rootlibexecdir,
1978 install : true,
1979 install_dir : rootlibexecdir)
1980 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001981endif
1982
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001983if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001984 exe = executable('systemd-journal-upload',
1985 systemd_journal_upload_sources,
1986 include_directories : includes,
1987 link_with : [libshared],
1988 dependencies : [threads,
1989 libcurl,
1990 libgnutls,
1991 libxz,
1992 liblz4],
1993 install_rpath : rootlibexecdir,
1994 install : true,
1995 install_dir : rootlibexecdir)
1996 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001997endif
1998
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001999if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002000 s_j_remote = executable('systemd-journal-remote',
2001 systemd_journal_remote_sources,
2002 include_directories : includes,
2003 link_with : [libshared],
2004 dependencies : [threads,
2005 libmicrohttpd,
2006 libgnutls,
2007 libxz,
2008 liblz4],
2009 install_rpath : rootlibexecdir,
2010 install : true,
2011 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002012
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002013 s_j_gatewayd = executable('systemd-journal-gatewayd',
2014 systemd_journal_gatewayd_sources,
2015 include_directories : includes,
2016 link_with : [libshared],
2017 dependencies : [threads,
2018 libmicrohttpd,
2019 libgnutls,
2020 libxz,
2021 liblz4],
2022 install_rpath : rootlibexecdir,
2023 install : true,
2024 install_dir : rootlibexecdir)
2025 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002026endif
2027
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002028if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002029 executable('systemd-coredump',
2030 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002031 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002032 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002033 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002034 libacl,
2035 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002036 libxz,
2037 liblz4],
2038 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002039 install : true,
2040 install_dir : rootlibexecdir)
2041
2042 exe = executable('coredumpctl',
2043 coredumpctl_sources,
2044 include_directories : includes,
2045 link_with : [libshared],
2046 dependencies : [threads,
2047 libxz,
2048 liblz4],
2049 install_rpath : rootlibexecdir,
2050 install : true)
2051 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002052endif
2053
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002054if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002055 exe = executable('systemd-binfmt',
2056 'src/binfmt/binfmt.c',
2057 include_directories : includes,
2058 link_with : [libshared],
2059 install_rpath : rootlibexecdir,
2060 install : true,
2061 install_dir : rootlibexecdir)
2062 public_programs += [exe]
2063
2064 meson.add_install_script('sh', '-c',
2065 mkdir_p.format(binfmtdir))
2066 meson.add_install_script('sh', '-c',
2067 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2068endif
2069
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002070if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002071 executable('systemd-vconsole-setup',
2072 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002073 include_directories : includes,
2074 link_with : [libshared],
2075 install_rpath : rootlibexecdir,
2076 install : true,
2077 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002078endif
2079
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002080if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002081 executable('systemd-random-seed',
2082 'src/random-seed/random-seed.c',
2083 include_directories : includes,
2084 link_with : [libshared],
2085 install_rpath : rootlibexecdir,
2086 install : true,
2087 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002088endif
2089
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002090if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002091 executable('systemd-firstboot',
2092 'src/firstboot/firstboot.c',
2093 include_directories : includes,
2094 link_with : [libshared],
2095 dependencies : [libcrypt],
2096 install_rpath : rootlibexecdir,
2097 install : true,
2098 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002099endif
2100
2101executable('systemd-remount-fs',
2102 'src/remount-fs/remount-fs.c',
2103 'src/core/mount-setup.c',
2104 'src/core/mount-setup.h',
2105 include_directories : includes,
2106 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002107 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002108 install : true,
2109 install_dir : rootlibexecdir)
2110
2111executable('systemd-machine-id-setup',
2112 'src/machine-id-setup/machine-id-setup-main.c',
2113 'src/core/machine-id-setup.c',
2114 'src/core/machine-id-setup.h',
2115 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002116 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002117 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002118 install : true,
2119 install_dir : rootbindir)
2120
2121executable('systemd-fsck',
2122 'src/fsck/fsck.c',
2123 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002124 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002125 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002126 install : true,
2127 install_dir : rootlibexecdir)
2128
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002129executable('systemd-growfs',
2130 'src/partition/growfs.c',
2131 include_directories : includes,
2132 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002133 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002134 install_rpath : rootlibexecdir,
2135 install : true,
2136 install_dir : rootlibexecdir)
2137
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002138executable('systemd-makefs',
2139 'src/partition/makefs.c',
2140 include_directories : includes,
2141 link_with : [libshared],
2142 install_rpath : rootlibexecdir,
2143 install : true,
2144 install_dir : rootlibexecdir)
2145
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002146executable('systemd-sleep',
2147 'src/sleep/sleep.c',
2148 include_directories : includes,
2149 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002150 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002151 install : true,
2152 install_dir : rootlibexecdir)
2153
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002154exe = executable('systemd-sysctl',
2155 'src/sysctl/sysctl.c',
2156 include_directories : includes,
2157 link_with : [libshared],
2158 install_rpath : rootlibexecdir,
2159 install : true,
2160 install_dir : rootlibexecdir)
2161public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002162
2163executable('systemd-ac-power',
2164 'src/ac-power/ac-power.c',
2165 include_directories : includes,
2166 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002167 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002168 install : true,
2169 install_dir : rootlibexecdir)
2170
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002171exe = executable('systemd-detect-virt',
2172 'src/detect-virt/detect-virt.c',
2173 include_directories : includes,
2174 link_with : [libshared],
2175 install_rpath : rootlibexecdir,
2176 install : true)
2177public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002178
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002179exe = executable('systemd-delta',
2180 'src/delta/delta.c',
2181 include_directories : includes,
2182 link_with : [libshared],
2183 install_rpath : rootlibexecdir,
2184 install : true)
2185public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002186
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002187exe = executable('systemd-escape',
2188 'src/escape/escape.c',
2189 include_directories : includes,
2190 link_with : [libshared],
2191 install_rpath : rootlibexecdir,
2192 install : true,
2193 install_dir : rootbindir)
2194public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002195
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002196exe = executable('systemd-notify',
2197 'src/notify/notify.c',
2198 include_directories : includes,
2199 link_with : [libshared],
2200 install_rpath : rootlibexecdir,
2201 install : true,
2202 install_dir : rootbindir)
2203public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002204
2205executable('systemd-volatile-root',
2206 'src/volatile-root/volatile-root.c',
2207 include_directories : includes,
2208 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002209 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002210 install : true,
2211 install_dir : rootlibexecdir)
2212
2213executable('systemd-cgroups-agent',
2214 'src/cgroups-agent/cgroups-agent.c',
2215 include_directories : includes,
2216 link_with : [libshared],
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-Szmek005a29f2017-04-13 11:52:05 -04002221exe = executable('systemd-path',
2222 'src/path/path.c',
2223 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002224 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002225 install_rpath : rootlibexecdir,
2226 install : true)
2227public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002228
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002229exe = executable('systemd-ask-password',
2230 'src/ask-password/ask-password.c',
2231 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002232 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002233 install_rpath : rootlibexecdir,
2234 install : true,
2235 install_dir : rootbindir)
2236public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002237
2238executable('systemd-reply-password',
2239 'src/reply-password/reply-password.c',
2240 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002241 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002242 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002243 install : true,
2244 install_dir : rootlibexecdir)
2245
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002246exe = executable('systemd-tty-ask-password-agent',
2247 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2248 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002249 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002250 install_rpath : rootlibexecdir,
2251 install : true,
2252 install_dir : rootbindir)
2253public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002254
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002255exe = executable('systemd-cgls',
2256 'src/cgls/cgls.c',
2257 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002258 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002259 install_rpath : rootlibexecdir,
2260 install : true)
2261public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002262
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002263exe = executable('systemd-cgtop',
2264 'src/cgtop/cgtop.c',
2265 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002266 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002267 install_rpath : rootlibexecdir,
2268 install : true)
2269public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002270
2271executable('systemd-initctl',
2272 'src/initctl/initctl.c',
2273 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002274 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002275 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002276 install : true,
2277 install_dir : rootlibexecdir)
2278
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002279exe = executable('systemd-mount',
2280 'src/mount/mount-tool.c',
2281 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002282 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002283 install_rpath : rootlibexecdir,
2284 install : true)
2285public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002286
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002287meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002288 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002289
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002290exe = executable('systemd-run',
2291 'src/run/run.c',
2292 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002293 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002294 install_rpath : rootlibexecdir,
2295 install : true)
2296public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002297
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002298exe = executable('systemd-stdio-bridge',
2299 'src/stdio-bridge/stdio-bridge.c',
2300 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002301 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002302 install_rpath : rootlibexecdir,
2303 install : true)
2304public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002305
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002306exe = executable('busctl',
2307 'src/busctl/busctl.c',
2308 'src/busctl/busctl-introspect.c',
2309 'src/busctl/busctl-introspect.h',
2310 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002311 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002312 install_rpath : rootlibexecdir,
2313 install : true)
2314public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002315
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002316if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002317 exe = executable('systemd-sysusers',
2318 'src/sysusers/sysusers.c',
2319 include_directories : includes,
2320 link_with : [libshared],
2321 install_rpath : rootlibexecdir,
2322 install : true,
2323 install_dir : rootbindir)
2324 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002325endif
2326
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002327if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002328 exe = executable('systemd-tmpfiles',
2329 'src/tmpfiles/tmpfiles.c',
2330 include_directories : includes,
2331 link_with : [libshared],
2332 dependencies : [libacl],
2333 install_rpath : rootlibexecdir,
2334 install : true,
2335 install_dir : rootbindir)
2336 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002337
2338 test('test-systemd-tmpfiles',
2339 test_systemd_tmpfiles_py,
2340 args : exe.full_path())
2341 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002342endif
2343
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002344if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002345 exe = executable('systemd-hwdb',
2346 'src/hwdb/hwdb.c',
2347 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2348 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002349 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002350 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002351 install : true,
2352 install_dir : rootbindir)
2353 public_programs += [exe]
2354endif
2355
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002356if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002357 executable('systemd-quotacheck',
2358 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002359 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002360 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002361 install_rpath : rootlibexecdir,
2362 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002363 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002364endif
2365
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002366exe = executable('systemd-socket-proxyd',
2367 'src/socket-proxy/socket-proxyd.c',
2368 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002369 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002370 dependencies : [threads],
2371 install_rpath : rootlibexecdir,
2372 install : true,
2373 install_dir : rootlibexecdir)
2374public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002375
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002376exe = executable('systemd-udevd',
2377 systemd_udevd_sources,
2378 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002379 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002380 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002381 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002382 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002383 dependencies : [threads,
2384 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002385 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002386 libacl,
2387 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002388 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002389 install : true,
2390 install_dir : rootlibexecdir)
2391public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002392
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002393exe = executable('udevadm',
2394 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002395 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002396 include_directories : includes,
2397 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002398 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002399 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002400 dependencies : [threads,
2401 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002402 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002403 libacl,
2404 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002405 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002406 install : true,
2407 install_dir : rootbindir)
2408public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002409
2410executable('systemd-shutdown',
2411 systemd_shutdown_sources,
2412 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002413 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002414 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002415 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002416 install : true,
2417 install_dir : rootlibexecdir)
2418
2419executable('systemd-update-done',
2420 'src/update-done/update-done.c',
2421 include_directories : includes,
2422 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002423 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002424 install : true,
2425 install_dir : rootlibexecdir)
2426
2427executable('systemd-update-utmp',
2428 'src/update-utmp/update-utmp.c',
2429 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002430 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002431 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002432 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002433 install : true,
2434 install_dir : rootlibexecdir)
2435
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002436if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002437 executable('systemd-modules-load',
2438 'src/modules-load/modules-load.c',
2439 include_directories : includes,
2440 link_with : [libshared],
2441 dependencies : [libkmod],
2442 install_rpath : rootlibexecdir,
2443 install : true,
2444 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002445
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002446 meson.add_install_script('sh', '-c',
2447 mkdir_p.format(modulesloaddir))
2448 meson.add_install_script('sh', '-c',
2449 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002450endif
2451
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002452exe = executable('systemd-nspawn',
2453 systemd_nspawn_sources,
2454 'src/core/mount-setup.c', # FIXME: use a variable?
2455 'src/core/mount-setup.h',
2456 'src/core/loopback-setup.c',
2457 'src/core/loopback-setup.h',
2458 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002459 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002460 dependencies : [libacl,
2461 libblkid,
2462 libseccomp,
2463 libselinux],
2464 install_rpath : rootlibexecdir,
2465 install : true)
2466public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002467
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002468if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002469 executable('systemd-networkd',
2470 systemd_networkd_sources,
2471 include_directories : includes,
2472 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002473 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002474 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002475 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002476 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002477 install_rpath : rootlibexecdir,
2478 install : true,
2479 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002480
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002481 executable('systemd-networkd-wait-online',
2482 systemd_networkd_wait_online_sources,
2483 include_directories : includes,
2484 link_with : [libnetworkd_core,
2485 libshared],
2486 install_rpath : rootlibexecdir,
2487 install : true,
2488 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002489
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002490 exe = executable('networkctl',
2491 networkctl_sources,
2492 include_directories : includes,
2493 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002494 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002495 install_rpath : rootlibexecdir,
2496 install : true,
2497 install_dir : rootbindir)
2498 public_programs += [exe]
2499endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002500
2501executable('systemd-sulogin-shell',
2502 ['src/sulogin-shell/sulogin-shell.c'],
2503 include_directories : includes,
2504 link_with : [libshared],
2505 install_rpath : rootlibexecdir,
2506 install : true,
2507 install_dir : rootlibexecdir)
2508
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002509############################################################
2510
2511foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002512 sources = tuple[0]
2513 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2514 dependencies = tuple[2]
2515 condition = tuple.length() >= 4 ? tuple[3] : ''
2516 type = tuple.length() >= 5 ? tuple[4] : ''
2517 defs = tuple.length() >= 6 ? tuple[5] : []
2518 incs = tuple.length() >= 7 ? tuple[6] : includes
2519 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002520
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002521 name = sources[0].split('/')[-1].split('.')[0]
2522 if type.startswith('timeout=')
2523 timeout = type.split('=')[1].to_int()
2524 type = ''
2525 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002526 if want_tests == 'false'
2527 message('Not compiling @0@ because tests is set to false'.format(name))
2528 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002529 exe = executable(
2530 name,
2531 sources,
2532 include_directories : incs,
2533 link_with : link_with,
2534 dependencies : dependencies,
2535 c_args : defs,
2536 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002537 install : install_tests,
2538 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002539
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002540 if type == 'manual'
2541 message('@0@ is a manual test'.format(name))
2542 elif type == 'unsafe' and want_tests != 'unsafe'
2543 message('@0@ is an unsafe test'.format(name))
2544 else
2545 test(name, exe,
2546 env : test_env,
2547 timeout : timeout)
2548 endif
2549 else
2550 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2551 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002552endforeach
2553
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002554exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002555 'test-libsystemd-sym',
2556 test_libsystemd_sym_c,
2557 include_directories : includes,
2558 link_with : [libsystemd],
2559 install : install_tests,
2560 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002561test('test-libsystemd-sym', exe)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002562
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002563exe = executable(
2564 'test-libsystemd-static-sym',
2565 test_libsystemd_sym_c,
2566 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002567 link_with : [install_libsystemd_static],
2568 dependencies : [threads], # threads is already included in dependencies on the library,
2569 # but does not seem to get propagated. Add here as a work-around.
Davide Cavalca20f3d322018-04-24 13:34:48 -07002570 build_by_default : static_libsystemd_pic,
2571 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002572 install_dir : testsdir)
Davide Cavalca20f3d322018-04-24 13:34:48 -07002573if static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002574 test('test-libsystemd-static-sym', exe)
2575endif
2576
2577exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002578 'test-libudev-sym',
2579 test_libudev_sym_c,
2580 include_directories : includes,
2581 c_args : ['-Wno-deprecated-declarations'],
2582 link_with : [libudev],
2583 install : install_tests,
2584 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002585test('test-libudev-sym', exe)
2586
2587exe = executable(
2588 'test-libudev-static-sym',
2589 test_libudev_sym_c,
2590 include_directories : includes,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002591 c_args : ['-Wno-deprecated-declarations'],
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002592 link_with : [install_libudev_static],
Davide Cavalca20f3d322018-04-24 13:34:48 -07002593 build_by_default : static_libudev_pic,
2594 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002595 install_dir : testsdir)
Davide Cavalca20f3d322018-04-24 13:34:48 -07002596if static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002597 test('test-libudev-static-sym', exe)
2598endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002599
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002600############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002601
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002602fuzzer_exes = []
2603
2604foreach tuple : fuzzers
2605 sources = tuple[0]
2606 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2607 dependencies = tuple[2]
2608 defs = tuple.length() >= 4 ? tuple[3] : []
2609 incs = tuple.length() >= 5 ? tuple[4] : includes
2610
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002611 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002612 dependencies += fuzzing_engine
2613 else
2614 sources += 'src/fuzz/fuzz-main.c'
2615 endif
2616
2617 name = sources[0].split('/')[-1].split('.')[0]
2618
2619 fuzzer_exes += executable(
2620 name,
2621 sources,
2622 include_directories : [incs, include_directories('src/fuzz')],
2623 link_with : link_with,
2624 dependencies : dependencies,
2625 c_args : defs,
2626 install : false)
2627endforeach
2628
2629run_target('fuzzers',
2630 depends : fuzzer_exes,
2631 command : ['true'])
2632
2633############################################################
2634
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002635make_directive_index_py = find_program('tools/make-directive-index.py')
2636make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002637xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002638hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002639
2640subdir('units')
2641subdir('sysctl.d')
2642subdir('sysusers.d')
2643subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002644subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002645subdir('hwdb')
2646subdir('network')
2647subdir('man')
2648subdir('shell-completion/bash')
2649subdir('shell-completion/zsh')
Lennart Poettering2d684e62018-03-28 16:58:37 +02002650subdir('doc/sysvinit')
2651subdir('doc/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002652
2653# FIXME: figure out if the warning is true:
2654# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2655install_subdir('factory/etc',
2656 install_dir : factorydir)
2657
2658
2659install_data('xorg/50-systemd-user.sh',
2660 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002661install_data('modprobe.d/systemd.conf',
2662 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002663install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002664 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002665 'NEWS',
2666 'README',
2667 'doc/CODING_STYLE',
2668 'doc/DISTRO_PORTING',
2669 'doc/ENVIRONMENT.md',
2670 'doc/HACKING',
2671 'doc/TRANSIENT-SETTINGS.md',
2672 'doc/TRANSLATORS',
2673 'doc/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002674 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2675 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002676
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002677meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2678meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2679
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002680############################################################
2681
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002682meson_check_help = find_program('tools/meson-check-help.sh')
2683
2684foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002685 name = exec.full_path().split('/')[-1]
2686 test('check-help-' + name,
2687 meson_check_help,
2688 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002689endforeach
2690
2691############################################################
2692
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002693# Enable tests for all supported sanitizers
2694foreach tuple : sanitizers
2695 sanitizer = tuple[0]
2696 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002697
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002698 have = run_command(check_compilation_sh,
2699 cc.cmd_array(), '-x', 'c',
2700 '-fsanitize=@0@'.format(sanitizer),
2701 '-include', link_test_c).returncode() == 0
2702 message('@0@ sanitizer supported: @1@'.format(sanitizer, have ? 'yes' : 'no'))
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002703
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002704 if have
2705 prev = ''
2706 foreach p : fuzz_regression_tests
2707 b = p.split('/')[-2]
2708 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002709
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002710 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002711
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002712 if name != prev
2713 if want_tests == 'false'
2714 message('Not compiling @0@ because tests is set to false'.format(name))
2715 elif slow_tests
2716 exe = custom_target(
2717 name,
2718 output : name,
2719 depends : build,
2720 command : [env, 'ln', '-fs',
2721 join_paths(build.full_path(), b),
2722 '@OUTPUT@'],
2723 build_by_default : true)
2724 else
2725 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2726 endif
2727 endif
2728 prev = name
2729
2730 if want_tests != 'false' and slow_tests
2731 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2732 env,
2733 args : [exe.full_path(),
2734 join_paths(meson.source_root(),
2735 'test/fuzz-regressions',
2736 p)])
2737 endif
2738 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002739 endif
2740endforeach
2741
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002742
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002743############################################################
2744
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002745if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002746 all_files = run_command(
2747 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002748 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002749 'ls-files',
2750 ':/*.[ch]'])
2751 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002752
userwithuide85a6902017-08-09 13:41:44 +00002753 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002754 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002755 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002756 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002757 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002758 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002759 output : 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002760 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002761endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002762
2763if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002764 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002765 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002766 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002767 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002768endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002769
2770if git.found()
2771 git_head = run_command(
2772 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002773 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002774 'rev-parse', 'HEAD']).stdout().strip()
2775 git_head_short = run_command(
2776 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002777 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002778 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2779
2780 run_target(
2781 'git-snapshot',
2782 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002783 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002784 git_head_short),
2785 '--prefix', 'systemd-@0@/'.format(git_head),
2786 'HEAD'])
2787endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002788
2789############################################################
2790
Lennart Poettering51b13862017-12-20 12:51:14 +01002791meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2792run_target(
2793 'check-api-docs',
2794 depends : [man, libsystemd, libudev],
2795 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2796
2797############################################################
2798
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002799status = [
2800 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2801
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002802 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002803 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002804 'prefix directory: @0@'.format(prefixdir),
2805 'rootprefix directory: @0@'.format(rootprefixdir),
2806 'sysconf directory: @0@'.format(sysconfdir),
2807 'include directory: @0@'.format(includedir),
2808 'lib directory: @0@'.format(libdir),
2809 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002810 'SysV init scripts: @0@'.format(sysvinit_path),
2811 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002812 'PAM modules directory: @0@'.format(pamlibdir),
2813 'PAM configuration directory: @0@'.format(pamconfdir),
2814 'RPM macros directory: @0@'.format(rpmmacrosdir),
2815 'modprobe.d directory: @0@'.format(modprobedir),
2816 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2817 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2818 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2819 'bash completions directory: @0@'.format(bashcompletiondir),
2820 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002821 'extra start script: @0@'.format(get_option('rc-local')),
2822 'extra stop script: @0@'.format(get_option('halt-local')),
2823 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2824 get_option('debug-tty')),
2825 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002826 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002827 'maximum system UID: @0@'.format(system_uid_max),
2828 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002829 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2830 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2831 'minimum container UID base: @0@'.format(container_uid_base_min),
2832 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002833 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002834 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002835 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002836 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002837 'nobody user name: @0@'.format(nobody_user),
2838 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002839 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002840 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002841
2842 'default DNSSEC mode: @0@'.format(default_dnssec),
2843 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2844 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2845
2846alt_dns_servers = '\n '.join(dns_servers.split(' '))
2847alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2848status += [
2849 'default DNS servers: @0@'.format(alt_dns_servers),
2850 'default NTP servers: @0@'.format(alt_ntp_servers)]
2851
2852alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2853 '@@0@'.format(time_epoch)).stdout().strip()
2854status += [
2855 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2856
2857# TODO:
2858# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2859# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2860# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2861
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002862if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002863 status += [
2864 'efi arch: @0@'.format(efi_arch)]
2865
2866 if have_gnu_efi
2867 status += [
2868 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2869 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002870 'EFI lib directory: @0@'.format(efi_libdir),
2871 'EFI lds directory: @0@'.format(efi_ldsdir),
2872 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002873 endif
2874endif
2875
2876found = []
2877missing = []
2878
2879foreach tuple : [
2880 ['libcryptsetup'],
2881 ['PAM'],
2882 ['AUDIT'],
2883 ['IMA'],
2884 ['AppArmor'],
2885 ['SELinux'],
2886 ['SECCOMP'],
2887 ['SMACK'],
2888 ['zlib'],
2889 ['xz'],
2890 ['lz4'],
2891 ['bzip2'],
2892 ['ACL'],
2893 ['gcrypt'],
2894 ['qrencode'],
2895 ['microhttpd'],
2896 ['gnutls'],
2897 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002898 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002899 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002900 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002901 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002902 ['libiptc'],
2903 ['elfutils'],
2904 ['binfmt'],
2905 ['vconsole'],
2906 ['quotacheck'],
2907 ['tmpfiles'],
2908 ['environment.d'],
2909 ['sysusers'],
2910 ['firstboot'],
2911 ['randomseed'],
2912 ['backlight'],
2913 ['rfkill'],
2914 ['logind'],
2915 ['machined'],
2916 ['importd'],
2917 ['hostnamed'],
2918 ['timedated'],
2919 ['timesyncd'],
2920 ['localed'],
2921 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002922 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002923 ['coredump'],
2924 ['polkit'],
2925 ['legacy pkla', install_polkit_pkla],
2926 ['efi'],
2927 ['gnu-efi', have_gnu_efi],
2928 ['kmod'],
2929 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01002930 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002931 ['blkid'],
2932 ['dbus'],
2933 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002934 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002935 ['hwdb'],
2936 ['tpm'],
2937 ['man pages', want_man],
2938 ['html pages', want_html],
2939 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002940 ['SysV compat'],
2941 ['utmp'],
2942 ['ldconfig'],
2943 ['hibernate'],
2944 ['adm group', get_option('adm-group')],
2945 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002946 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002947 ['debug hashmap'],
2948 ['debug mmap cache'],
2949]
2950
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01002951 if tuple.length() >= 2
2952 cond = tuple[1]
2953 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002954 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2955 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002956 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002957 endif
2958 if cond
2959 found += [tuple[0]]
2960 else
2961 missing += [tuple[0]]
2962 endif
2963endforeach
2964
2965status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002966 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002967 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002968 '',
2969 'disabled features: @0@'.format(', '.join(missing)),
2970 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002971message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002972
2973if rootprefixdir != rootprefix_default
2974 message('WARNING:\n' +
2975 ' Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2976 ' systemd used fixed names for unit file directories and other paths, so anything\n' +
2977 ' except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
2978endif