blob: 7b8943f67de1d5dd2e9cc0b419c9fc03c1f80133 [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,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001352 basic_sources,
1353 basic_gcrypt_sources,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001354 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001355 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,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001363 libcap,
1364 libblkid,
1365 libmount,
1366 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001367 libgcrypt],
1368 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1369
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001370############################################################
1371
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001372# binaries that have --help and are intended for use by humans,
1373# usually, but not always, installed in /bin.
1374public_programs = []
1375
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001376subdir('src/libudev')
1377subdir('src/shared')
1378subdir('src/core')
1379subdir('src/udev')
1380subdir('src/network')
1381
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001382subdir('src/analyze')
1383subdir('src/journal-remote')
1384subdir('src/coredump')
1385subdir('src/hostname')
1386subdir('src/import')
1387subdir('src/kernel-install')
1388subdir('src/locale')
1389subdir('src/machine')
1390subdir('src/nspawn')
1391subdir('src/resolve')
1392subdir('src/timedate')
1393subdir('src/timesync')
1394subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001395subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001396
1397subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001398subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001399subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001400subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001401
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001402############################################################
1403
1404# only static linking apart from libdl, to make sure that the
1405# module is linked to all libraries that it uses.
1406test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001407 'test-dlopen',
1408 test_dlopen_c,
1409 include_directories : includes,
1410 link_with : [libbasic],
1411 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001412
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001413foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001414 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001415 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001416 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001417
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001418 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001419 if condition
1420 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001421
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001422 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1423 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001424
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001425 nss = shared_library(
1426 'nss_' + module,
1427 'src/nss-@0@/nss-@0@.c'.format(module),
1428 version : '2',
1429 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001430 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1431 link_args : ['-Wl,-z,nodelete',
1432 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001433 '-Wl,--version-script=' + version_script_arg,
1434 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001435 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001436 libbasic],
1437 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001438 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001439 link_depends : sym,
1440 install : true,
1441 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001442
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001443 # We cannot use shared_module because it does not support version suffix.
1444 # Unfortunately shared_library insists on creating the symlink…
1445 meson.add_install_script('sh', '-c',
1446 'rm $DESTDIR@0@/libnss_@1@.so'
1447 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001448
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001449 test('dlopen-nss_' + module,
1450 test_dlopen,
1451 args : [nss.full_path()]) # path to dlopen must include a slash
1452 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001453endforeach
1454
1455############################################################
1456
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001457executable('systemd',
1458 systemd_sources,
1459 include_directories : includes,
1460 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001461 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001462 dependencies : [threads,
1463 librt,
1464 libseccomp,
1465 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001466 libmount,
1467 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001468 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001469 install : true,
1470 install_dir : rootlibexecdir)
1471
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001472meson.add_install_script(meson_make_symlink,
1473 join_paths(rootlibexecdir, 'systemd'),
1474 join_paths(rootsbindir, 'init'))
1475
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001476exe = executable('systemd-analyze',
1477 systemd_analyze_sources,
1478 include_directories : includes,
1479 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001480 libshared],
1481 dependencies : [threads,
1482 librt,
1483 libseccomp,
1484 libselinux,
1485 libmount,
1486 libblkid],
1487 install_rpath : rootlibexecdir,
1488 install : true)
1489public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001490
1491executable('systemd-journald',
1492 systemd_journald_sources,
1493 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001494 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001495 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001496 dependencies : [threads,
1497 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001498 liblz4,
1499 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001500 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001501 install : true,
1502 install_dir : rootlibexecdir)
1503
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001504exe = executable('systemd-cat',
1505 systemd_cat_sources,
1506 include_directories : includes,
1507 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001508 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001509 dependencies : [threads],
1510 install_rpath : rootlibexecdir,
1511 install : true)
1512public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001513
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001514exe = executable('journalctl',
1515 journalctl_sources,
1516 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001517 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001518 dependencies : [threads,
1519 libqrencode,
1520 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001521 liblz4,
1522 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001523 install_rpath : rootlibexecdir,
1524 install : true,
1525 install_dir : rootbindir)
1526public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001527
1528executable('systemd-getty-generator',
1529 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001530 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001531 link_with : [libshared],
1532 install_rpath : rootlibexecdir,
1533 install : true,
1534 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001535
1536executable('systemd-debug-generator',
1537 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001538 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001539 link_with : [libshared],
1540 install_rpath : rootlibexecdir,
1541 install : true,
1542 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001543
1544executable('systemd-fstab-generator',
1545 'src/fstab-generator/fstab-generator.c',
1546 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001547 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001548 link_with : [libshared],
1549 install_rpath : rootlibexecdir,
1550 install : true,
1551 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001552
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001553if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001554 executable('30-systemd-environment-d-generator',
1555 'src/environment-d-generator/environment-d-generator.c',
1556 include_directories : includes,
1557 link_with : [libshared],
1558 install_rpath : rootlibexecdir,
1559 install : true,
1560 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001561
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001562 meson.add_install_script(meson_make_symlink,
1563 join_paths(sysconfdir, 'environment'),
1564 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001565endif
1566
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001567if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001568 executable('systemd-hibernate-resume-generator',
1569 'src/hibernate-resume/hibernate-resume-generator.c',
1570 include_directories : includes,
1571 link_with : [libshared],
1572 install_rpath : rootlibexecdir,
1573 install : true,
1574 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001575
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001576 executable('systemd-hibernate-resume',
1577 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001578 include_directories : includes,
1579 link_with : [libshared],
1580 install_rpath : rootlibexecdir,
1581 install : true,
1582 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001583endif
1584
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001585if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001586 executable('systemd-gpt-auto-generator',
1587 'src/gpt-auto-generator/gpt-auto-generator.c',
1588 'src/basic/blkid-util.h',
1589 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001590 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001591 dependencies : libblkid,
1592 install_rpath : rootlibexecdir,
1593 install : true,
1594 install_dir : systemgeneratordir)
1595
1596 exe = executable('systemd-dissect',
1597 'src/dissect/dissect.c',
1598 include_directories : includes,
1599 link_with : [libshared],
1600 install_rpath : rootlibexecdir,
1601 install : true,
1602 install_dir : rootlibexecdir)
1603 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001604endif
1605
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001606if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001607 executable('systemd-resolved',
1608 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001609 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001610 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001611 libbasic_gcrypt,
1612 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001613 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001614 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001615 libm,
1616 libidn],
1617 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001618 install : true,
1619 install_dir : rootlibexecdir)
1620
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001621 exe = executable('resolvectl',
1622 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001623 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001624 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001625 libbasic_gcrypt,
1626 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001627 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001628 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001629 libm,
1630 libidn],
1631 install_rpath : rootlibexecdir,
1632 install : true)
1633 public_programs += [exe]
Lennart Poettering088c1362018-02-27 17:48:54 +01001634
1635 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001636 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001637 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001638
1639 meson.add_install_script(meson_make_symlink,
1640 join_paths(bindir, 'resolvectl'),
1641 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001642endif
1643
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001644if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001645 executable('systemd-logind',
1646 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001647 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001648 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001649 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001650 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001651 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001652 install_rpath : rootlibexecdir,
1653 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001654 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001655
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001656 exe = executable('loginctl',
1657 loginctl_sources,
1658 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001659 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001660 dependencies : [threads,
1661 liblz4,
1662 libxz],
1663 install_rpath : rootlibexecdir,
1664 install : true,
1665 install_dir : rootbindir)
1666 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001667
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001668 exe = executable('systemd-inhibit',
1669 'src/login/inhibit.c',
1670 include_directories : includes,
1671 link_with : [libshared],
1672 install_rpath : rootlibexecdir,
1673 install : true,
1674 install_dir : rootbindir)
1675 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001676
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001677 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001678 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1679 pam_systemd = shared_library(
1680 'pam_systemd',
1681 pam_systemd_c,
1682 name_prefix : '',
1683 include_directories : includes,
1684 link_args : ['-shared',
1685 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001686 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001687 libshared_static],
1688 dependencies : [threads,
1689 libpam,
1690 libpam_misc],
1691 link_depends : pam_systemd_sym,
1692 install : true,
1693 install_dir : pamlibdir)
1694
1695 test('dlopen-pam_systemd',
1696 test_dlopen,
1697 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1698 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001699endif
1700
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001701if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001702 executable('systemd-user-sessions',
1703 'src/user-sessions/user-sessions.c',
1704 include_directories : includes,
1705 link_with : [libshared],
1706 install_rpath : rootlibexecdir,
1707 install : true,
1708 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001709endif
1710
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001711if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001712 exe = executable('bootctl',
1713 'src/boot/bootctl.c',
1714 include_directories : includes,
1715 link_with : [libshared],
1716 dependencies : [libblkid],
1717 install_rpath : rootlibexecdir,
1718 install : true)
1719 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001720endif
1721
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001722exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1723 include_directories : includes,
1724 link_with : [libshared],
1725 dependencies : [threads],
1726 install_rpath : rootlibexecdir,
1727 install : true)
1728public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001729
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001730exe = executable('systemctl', 'src/systemctl/systemctl.c',
1731 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001732 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001733 dependencies : [threads,
1734 libcap,
1735 libselinux,
1736 libxz,
1737 liblz4],
1738 install_rpath : rootlibexecdir,
1739 install : true,
1740 install_dir : rootbindir)
1741public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001742
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001743foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1744 meson.add_install_script(meson_make_symlink,
1745 join_paths(rootbindir, 'systemctl'),
1746 join_paths(rootsbindir, alias))
1747endforeach
1748
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001749if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001750 executable('systemd-backlight',
1751 'src/backlight/backlight.c',
1752 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001753 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001754 install_rpath : rootlibexecdir,
1755 install : true,
1756 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001757endif
1758
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001759if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001760 executable('systemd-rfkill',
1761 'src/rfkill/rfkill.c',
1762 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001763 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001764 install_rpath : rootlibexecdir,
1765 install : true,
1766 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001767endif
1768
1769executable('systemd-system-update-generator',
1770 'src/system-update-generator/system-update-generator.c',
1771 include_directories : includes,
1772 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001773 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001774 install : true,
1775 install_dir : systemgeneratordir)
1776
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001777if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001778 executable('systemd-cryptsetup',
1779 'src/cryptsetup/cryptsetup.c',
1780 include_directories : includes,
1781 link_with : [libshared],
1782 dependencies : [libcryptsetup],
1783 install_rpath : rootlibexecdir,
1784 install : true,
1785 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001786
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001787 executable('systemd-cryptsetup-generator',
1788 'src/cryptsetup/cryptsetup-generator.c',
1789 include_directories : includes,
1790 link_with : [libshared],
1791 dependencies : [libcryptsetup],
1792 install_rpath : rootlibexecdir,
1793 install : true,
1794 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001795
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001796 executable('systemd-veritysetup',
1797 'src/veritysetup/veritysetup.c',
1798 include_directories : includes,
1799 link_with : [libshared],
1800 dependencies : [libcryptsetup],
1801 install_rpath : rootlibexecdir,
1802 install : true,
1803 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001804
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001805 executable('systemd-veritysetup-generator',
1806 'src/veritysetup/veritysetup-generator.c',
1807 include_directories : includes,
1808 link_with : [libshared],
1809 dependencies : [libcryptsetup],
1810 install_rpath : rootlibexecdir,
1811 install : true,
1812 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001813endif
1814
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001815if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001816 executable('systemd-sysv-generator',
1817 'src/sysv-generator/sysv-generator.c',
1818 include_directories : includes,
1819 link_with : [libshared],
1820 install_rpath : rootlibexecdir,
1821 install : true,
1822 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001823
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001824 executable('systemd-rc-local-generator',
1825 'src/rc-local-generator/rc-local-generator.c',
1826 include_directories : includes,
1827 link_with : [libshared],
1828 install_rpath : rootlibexecdir,
1829 install : true,
1830 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001831endif
1832
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001833if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001834 executable('systemd-hostnamed',
1835 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001836 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001837 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001838 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001839 install : true,
1840 install_dir : rootlibexecdir)
1841
1842 exe = executable('hostnamectl',
1843 'src/hostname/hostnamectl.c',
1844 include_directories : includes,
1845 link_with : [libshared],
1846 install_rpath : rootlibexecdir,
1847 install : true)
1848 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001849endif
1850
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001851if conf.get('ENABLE_LOCALED') == 1
1852 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001853 # logind will load libxkbcommon.so dynamically on its own
1854 deps = [libdl]
1855 else
1856 deps = []
1857 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001858
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001859 executable('systemd-localed',
1860 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001861 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001862 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001863 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001864 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001865 install : true,
1866 install_dir : rootlibexecdir)
1867
1868 exe = executable('localectl',
1869 localectl_sources,
1870 include_directories : includes,
1871 link_with : [libshared],
1872 install_rpath : rootlibexecdir,
1873 install : true)
1874 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001875endif
1876
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001877if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001878 executable('systemd-timedated',
1879 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001880 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001881 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001882 install_rpath : rootlibexecdir,
1883 install : true,
1884 install_dir : rootlibexecdir)
1885
1886 exe = executable('timedatectl',
1887 'src/timedate/timedatectl.c',
1888 include_directories : includes,
1889 install_rpath : rootlibexecdir,
1890 link_with : [libshared],
1891 install : true)
1892 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001893endif
1894
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001895if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001896 executable('systemd-timesyncd',
1897 systemd_timesyncd_sources,
1898 include_directories : includes,
1899 link_with : [libshared],
1900 dependencies : [threads,
1901 libm],
1902 install_rpath : rootlibexecdir,
1903 install : true,
1904 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001905
1906 executable('systemd-time-wait-sync',
1907 'src/time-wait-sync/time-wait-sync.c',
1908 include_directories : includes,
1909 link_with : [libshared],
1910 install_rpath : rootlibexecdir,
1911 install : true,
1912 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001913endif
1914
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001915if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001916 executable('systemd-machined',
1917 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001918 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001919 link_with : [libmachine_core,
1920 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001921 install_rpath : rootlibexecdir,
1922 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001923 install_dir : rootlibexecdir)
1924
1925 exe = executable('machinectl',
1926 'src/machine/machinectl.c',
1927 include_directories : includes,
1928 link_with : [libshared],
1929 dependencies : [threads,
1930 libxz,
1931 liblz4],
1932 install_rpath : rootlibexecdir,
1933 install : true,
1934 install_dir : rootbindir)
1935 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001936endif
1937
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001938if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001939 executable('systemd-importd',
1940 systemd_importd_sources,
1941 include_directories : includes,
1942 link_with : [libshared],
1943 dependencies : [threads],
1944 install_rpath : rootlibexecdir,
1945 install : true,
1946 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001947
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001948 systemd_pull = executable('systemd-pull',
1949 systemd_pull_sources,
1950 include_directories : includes,
1951 link_with : [libshared],
1952 dependencies : [libcurl,
1953 libz,
1954 libbzip2,
1955 libxz,
1956 libgcrypt],
1957 install_rpath : rootlibexecdir,
1958 install : true,
1959 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001960
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001961 systemd_import = executable('systemd-import',
1962 systemd_import_sources,
1963 include_directories : includes,
1964 link_with : [libshared],
1965 dependencies : [libcurl,
1966 libz,
1967 libbzip2,
1968 libxz],
1969 install_rpath : rootlibexecdir,
1970 install : true,
1971 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001972
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001973 systemd_export = executable('systemd-export',
1974 systemd_export_sources,
1975 include_directories : includes,
1976 link_with : [libshared],
1977 dependencies : [libcurl,
1978 libz,
1979 libbzip2,
1980 libxz],
1981 install_rpath : rootlibexecdir,
1982 install : true,
1983 install_dir : rootlibexecdir)
1984 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001985endif
1986
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001987if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001988 exe = executable('systemd-journal-upload',
1989 systemd_journal_upload_sources,
1990 include_directories : includes,
1991 link_with : [libshared],
1992 dependencies : [threads,
1993 libcurl,
1994 libgnutls,
1995 libxz,
1996 liblz4],
1997 install_rpath : rootlibexecdir,
1998 install : true,
1999 install_dir : rootlibexecdir)
2000 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002001endif
2002
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002003if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002004 s_j_remote = executable('systemd-journal-remote',
2005 systemd_journal_remote_sources,
2006 include_directories : includes,
2007 link_with : [libshared],
2008 dependencies : [threads,
2009 libmicrohttpd,
2010 libgnutls,
2011 libxz,
2012 liblz4],
2013 install_rpath : rootlibexecdir,
2014 install : true,
2015 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002016
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002017 s_j_gatewayd = executable('systemd-journal-gatewayd',
2018 systemd_journal_gatewayd_sources,
2019 include_directories : includes,
2020 link_with : [libshared],
2021 dependencies : [threads,
2022 libmicrohttpd,
2023 libgnutls,
2024 libxz,
2025 liblz4],
2026 install_rpath : rootlibexecdir,
2027 install : true,
2028 install_dir : rootlibexecdir)
2029 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002030endif
2031
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002032if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002033 executable('systemd-coredump',
2034 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002035 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002036 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002037 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002038 libacl,
2039 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002040 libxz,
2041 liblz4],
2042 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002043 install : true,
2044 install_dir : rootlibexecdir)
2045
2046 exe = executable('coredumpctl',
2047 coredumpctl_sources,
2048 include_directories : includes,
2049 link_with : [libshared],
2050 dependencies : [threads,
2051 libxz,
2052 liblz4],
2053 install_rpath : rootlibexecdir,
2054 install : true)
2055 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002056endif
2057
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002058if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002059 exe = executable('systemd-binfmt',
2060 'src/binfmt/binfmt.c',
2061 include_directories : includes,
2062 link_with : [libshared],
2063 install_rpath : rootlibexecdir,
2064 install : true,
2065 install_dir : rootlibexecdir)
2066 public_programs += [exe]
2067
2068 meson.add_install_script('sh', '-c',
2069 mkdir_p.format(binfmtdir))
2070 meson.add_install_script('sh', '-c',
2071 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2072endif
2073
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002074if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002075 executable('systemd-vconsole-setup',
2076 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002077 include_directories : includes,
2078 link_with : [libshared],
2079 install_rpath : rootlibexecdir,
2080 install : true,
2081 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002082endif
2083
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002084if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002085 executable('systemd-random-seed',
2086 'src/random-seed/random-seed.c',
2087 include_directories : includes,
2088 link_with : [libshared],
2089 install_rpath : rootlibexecdir,
2090 install : true,
2091 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002092endif
2093
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002094if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002095 executable('systemd-firstboot',
2096 'src/firstboot/firstboot.c',
2097 include_directories : includes,
2098 link_with : [libshared],
2099 dependencies : [libcrypt],
2100 install_rpath : rootlibexecdir,
2101 install : true,
2102 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002103endif
2104
2105executable('systemd-remount-fs',
2106 'src/remount-fs/remount-fs.c',
2107 'src/core/mount-setup.c',
2108 'src/core/mount-setup.h',
2109 include_directories : includes,
2110 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002111 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002112 install : true,
2113 install_dir : rootlibexecdir)
2114
2115executable('systemd-machine-id-setup',
2116 'src/machine-id-setup/machine-id-setup-main.c',
2117 'src/core/machine-id-setup.c',
2118 'src/core/machine-id-setup.h',
2119 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002120 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002121 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002122 install : true,
2123 install_dir : rootbindir)
2124
2125executable('systemd-fsck',
2126 'src/fsck/fsck.c',
2127 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002128 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002129 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002130 install : true,
2131 install_dir : rootlibexecdir)
2132
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002133executable('systemd-growfs',
2134 'src/partition/growfs.c',
2135 include_directories : includes,
2136 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002137 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002138 install_rpath : rootlibexecdir,
2139 install : true,
2140 install_dir : rootlibexecdir)
2141
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002142executable('systemd-makefs',
2143 'src/partition/makefs.c',
2144 include_directories : includes,
2145 link_with : [libshared],
2146 install_rpath : rootlibexecdir,
2147 install : true,
2148 install_dir : rootlibexecdir)
2149
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002150executable('systemd-sleep',
2151 'src/sleep/sleep.c',
2152 include_directories : includes,
2153 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002154 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002155 install : true,
2156 install_dir : rootlibexecdir)
2157
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002158exe = executable('systemd-sysctl',
2159 'src/sysctl/sysctl.c',
2160 include_directories : includes,
2161 link_with : [libshared],
2162 install_rpath : rootlibexecdir,
2163 install : true,
2164 install_dir : rootlibexecdir)
2165public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002166
2167executable('systemd-ac-power',
2168 'src/ac-power/ac-power.c',
2169 include_directories : includes,
2170 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002171 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002172 install : true,
2173 install_dir : rootlibexecdir)
2174
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002175exe = executable('systemd-detect-virt',
2176 'src/detect-virt/detect-virt.c',
2177 include_directories : includes,
2178 link_with : [libshared],
2179 install_rpath : rootlibexecdir,
2180 install : true)
2181public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002182
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002183exe = executable('systemd-delta',
2184 'src/delta/delta.c',
2185 include_directories : includes,
2186 link_with : [libshared],
2187 install_rpath : rootlibexecdir,
2188 install : true)
2189public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002190
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002191exe = executable('systemd-escape',
2192 'src/escape/escape.c',
2193 include_directories : includes,
2194 link_with : [libshared],
2195 install_rpath : rootlibexecdir,
2196 install : true,
2197 install_dir : rootbindir)
2198public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002199
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002200exe = executable('systemd-notify',
2201 'src/notify/notify.c',
2202 include_directories : includes,
2203 link_with : [libshared],
2204 install_rpath : rootlibexecdir,
2205 install : true,
2206 install_dir : rootbindir)
2207public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002208
2209executable('systemd-volatile-root',
2210 'src/volatile-root/volatile-root.c',
2211 include_directories : includes,
2212 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002213 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002214 install : true,
2215 install_dir : rootlibexecdir)
2216
2217executable('systemd-cgroups-agent',
2218 'src/cgroups-agent/cgroups-agent.c',
2219 include_directories : includes,
2220 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002221 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002222 install : true,
2223 install_dir : rootlibexecdir)
2224
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002225exe = executable('systemd-path',
2226 'src/path/path.c',
2227 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002228 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002229 install_rpath : rootlibexecdir,
2230 install : true)
2231public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002232
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002233exe = executable('systemd-ask-password',
2234 'src/ask-password/ask-password.c',
2235 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002236 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002237 install_rpath : rootlibexecdir,
2238 install : true,
2239 install_dir : rootbindir)
2240public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002241
2242executable('systemd-reply-password',
2243 'src/reply-password/reply-password.c',
2244 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002245 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002246 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002247 install : true,
2248 install_dir : rootlibexecdir)
2249
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002250exe = executable('systemd-tty-ask-password-agent',
2251 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2252 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002253 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002254 install_rpath : rootlibexecdir,
2255 install : true,
2256 install_dir : rootbindir)
2257public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002258
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002259exe = executable('systemd-cgls',
2260 'src/cgls/cgls.c',
2261 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002262 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002263 install_rpath : rootlibexecdir,
2264 install : true)
2265public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002266
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002267exe = executable('systemd-cgtop',
2268 'src/cgtop/cgtop.c',
2269 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002270 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002271 install_rpath : rootlibexecdir,
2272 install : true)
2273public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002274
2275executable('systemd-initctl',
2276 'src/initctl/initctl.c',
2277 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002278 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002279 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002280 install : true,
2281 install_dir : rootlibexecdir)
2282
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002283exe = executable('systemd-mount',
2284 'src/mount/mount-tool.c',
2285 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002286 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002287 install_rpath : rootlibexecdir,
2288 install : true)
2289public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002290
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002291meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002292 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002293
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002294exe = executable('systemd-run',
2295 'src/run/run.c',
2296 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002297 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002298 install_rpath : rootlibexecdir,
2299 install : true)
2300public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002301
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002302exe = executable('systemd-stdio-bridge',
2303 'src/stdio-bridge/stdio-bridge.c',
2304 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002305 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002306 install_rpath : rootlibexecdir,
2307 install : true)
2308public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002309
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002310exe = executable('busctl',
2311 'src/busctl/busctl.c',
2312 'src/busctl/busctl-introspect.c',
2313 'src/busctl/busctl-introspect.h',
2314 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002315 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002316 install_rpath : rootlibexecdir,
2317 install : true)
2318public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002319
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002320if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002321 exe = executable('systemd-sysusers',
2322 'src/sysusers/sysusers.c',
2323 include_directories : includes,
2324 link_with : [libshared],
2325 install_rpath : rootlibexecdir,
2326 install : true,
2327 install_dir : rootbindir)
2328 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002329endif
2330
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002331if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002332 exe = executable('systemd-tmpfiles',
2333 'src/tmpfiles/tmpfiles.c',
2334 include_directories : includes,
2335 link_with : [libshared],
2336 dependencies : [libacl],
2337 install_rpath : rootlibexecdir,
2338 install : true,
2339 install_dir : rootbindir)
2340 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002341
2342 test('test-systemd-tmpfiles',
2343 test_systemd_tmpfiles_py,
2344 args : exe.full_path())
2345 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002346endif
2347
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002348if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002349 exe = executable('systemd-hwdb',
2350 'src/hwdb/hwdb.c',
2351 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2352 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002353 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002354 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002355 install : true,
2356 install_dir : rootbindir)
2357 public_programs += [exe]
2358endif
2359
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002360if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002361 executable('systemd-quotacheck',
2362 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002363 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002364 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002365 install_rpath : rootlibexecdir,
2366 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002367 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002368endif
2369
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002370exe = executable('systemd-socket-proxyd',
2371 'src/socket-proxy/socket-proxyd.c',
2372 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002373 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002374 dependencies : [threads],
2375 install_rpath : rootlibexecdir,
2376 install : true,
2377 install_dir : rootlibexecdir)
2378public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002379
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002380exe = executable('systemd-udevd',
2381 systemd_udevd_sources,
2382 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002383 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002384 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002385 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002386 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002387 dependencies : [threads,
2388 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002389 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002390 libacl,
2391 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002392 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002393 install : true,
2394 install_dir : rootlibexecdir)
2395public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002396
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002397exe = executable('udevadm',
2398 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002399 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002400 include_directories : includes,
2401 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002402 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002403 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002404 dependencies : [threads,
2405 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002406 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002407 libacl,
2408 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002409 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002410 install : true,
2411 install_dir : rootbindir)
2412public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002413
2414executable('systemd-shutdown',
2415 systemd_shutdown_sources,
2416 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002417 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002418 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002419 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002420 install : true,
2421 install_dir : rootlibexecdir)
2422
2423executable('systemd-update-done',
2424 'src/update-done/update-done.c',
2425 include_directories : includes,
2426 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002427 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002428 install : true,
2429 install_dir : rootlibexecdir)
2430
2431executable('systemd-update-utmp',
2432 'src/update-utmp/update-utmp.c',
2433 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002434 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002435 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002436 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002437 install : true,
2438 install_dir : rootlibexecdir)
2439
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002440if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002441 executable('systemd-modules-load',
2442 'src/modules-load/modules-load.c',
2443 include_directories : includes,
2444 link_with : [libshared],
2445 dependencies : [libkmod],
2446 install_rpath : rootlibexecdir,
2447 install : true,
2448 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002449
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002450 meson.add_install_script('sh', '-c',
2451 mkdir_p.format(modulesloaddir))
2452 meson.add_install_script('sh', '-c',
2453 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002454endif
2455
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002456exe = executable('systemd-nspawn',
2457 systemd_nspawn_sources,
2458 'src/core/mount-setup.c', # FIXME: use a variable?
2459 'src/core/mount-setup.h',
2460 'src/core/loopback-setup.c',
2461 'src/core/loopback-setup.h',
2462 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002463 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002464 dependencies : [libacl,
2465 libblkid,
2466 libseccomp,
2467 libselinux],
2468 install_rpath : rootlibexecdir,
2469 install : true)
2470public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002471
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002472if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002473 executable('systemd-networkd',
2474 systemd_networkd_sources,
2475 include_directories : includes,
2476 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002477 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002478 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002479 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002480 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002481 install_rpath : rootlibexecdir,
2482 install : true,
2483 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002484
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002485 executable('systemd-networkd-wait-online',
2486 systemd_networkd_wait_online_sources,
2487 include_directories : includes,
2488 link_with : [libnetworkd_core,
2489 libshared],
2490 install_rpath : rootlibexecdir,
2491 install : true,
2492 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002493
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002494 exe = executable('networkctl',
2495 networkctl_sources,
2496 include_directories : includes,
2497 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002498 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002499 install_rpath : rootlibexecdir,
2500 install : true,
2501 install_dir : rootbindir)
2502 public_programs += [exe]
2503endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002504
2505executable('systemd-sulogin-shell',
2506 ['src/sulogin-shell/sulogin-shell.c'],
2507 include_directories : includes,
2508 link_with : [libshared],
2509 install_rpath : rootlibexecdir,
2510 install : true,
2511 install_dir : rootlibexecdir)
2512
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002513############################################################
2514
2515foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002516 sources = tuple[0]
2517 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2518 dependencies = tuple[2]
2519 condition = tuple.length() >= 4 ? tuple[3] : ''
2520 type = tuple.length() >= 5 ? tuple[4] : ''
2521 defs = tuple.length() >= 6 ? tuple[5] : []
2522 incs = tuple.length() >= 7 ? tuple[6] : includes
2523 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002524
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002525 name = sources[0].split('/')[-1].split('.')[0]
2526 if type.startswith('timeout=')
2527 timeout = type.split('=')[1].to_int()
2528 type = ''
2529 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002530 if want_tests == 'false'
2531 message('Not compiling @0@ because tests is set to false'.format(name))
2532 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002533 exe = executable(
2534 name,
2535 sources,
2536 include_directories : incs,
2537 link_with : link_with,
2538 dependencies : dependencies,
2539 c_args : defs,
2540 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002541 install : install_tests,
2542 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002543
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002544 if type == 'manual'
2545 message('@0@ is a manual test'.format(name))
2546 elif type == 'unsafe' and want_tests != 'unsafe'
2547 message('@0@ is an unsafe test'.format(name))
2548 else
2549 test(name, exe,
2550 env : test_env,
2551 timeout : timeout)
2552 endif
2553 else
2554 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2555 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002556endforeach
2557
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002558exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002559 'test-libsystemd-sym',
2560 test_libsystemd_sym_c,
2561 include_directories : includes,
2562 link_with : [libsystemd],
2563 install : install_tests,
2564 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002565test('test-libsystemd-sym', exe)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002566
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002567exe = executable(
2568 'test-libsystemd-static-sym',
2569 test_libsystemd_sym_c,
2570 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002571 link_with : [install_libsystemd_static],
2572 dependencies : [threads], # threads is already included in dependencies on the library,
2573 # but does not seem to get propagated. Add here as a work-around.
Davide Cavalca20f3d322018-04-24 13:34:48 -07002574 build_by_default : static_libsystemd_pic,
2575 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002576 install_dir : testsdir)
Davide Cavalca20f3d322018-04-24 13:34:48 -07002577if static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002578 test('test-libsystemd-static-sym', exe)
2579endif
2580
2581exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002582 'test-libudev-sym',
2583 test_libudev_sym_c,
2584 include_directories : includes,
2585 c_args : ['-Wno-deprecated-declarations'],
2586 link_with : [libudev],
2587 install : install_tests,
2588 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002589test('test-libudev-sym', exe)
2590
2591exe = executable(
2592 'test-libudev-static-sym',
2593 test_libudev_sym_c,
2594 include_directories : includes,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002595 c_args : ['-Wno-deprecated-declarations'],
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002596 link_with : [install_libudev_static],
Davide Cavalca20f3d322018-04-24 13:34:48 -07002597 build_by_default : static_libudev_pic,
2598 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002599 install_dir : testsdir)
Davide Cavalca20f3d322018-04-24 13:34:48 -07002600if static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002601 test('test-libudev-static-sym', exe)
2602endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002603
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002604############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002605
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002606fuzzer_exes = []
2607
2608foreach tuple : fuzzers
2609 sources = tuple[0]
2610 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2611 dependencies = tuple[2]
2612 defs = tuple.length() >= 4 ? tuple[3] : []
2613 incs = tuple.length() >= 5 ? tuple[4] : includes
2614
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002615 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002616 dependencies += fuzzing_engine
2617 else
2618 sources += 'src/fuzz/fuzz-main.c'
2619 endif
2620
2621 name = sources[0].split('/')[-1].split('.')[0]
2622
2623 fuzzer_exes += executable(
2624 name,
2625 sources,
2626 include_directories : [incs, include_directories('src/fuzz')],
2627 link_with : link_with,
2628 dependencies : dependencies,
2629 c_args : defs,
2630 install : false)
2631endforeach
2632
2633run_target('fuzzers',
2634 depends : fuzzer_exes,
2635 command : ['true'])
2636
2637############################################################
2638
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002639make_directive_index_py = find_program('tools/make-directive-index.py')
2640make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002641xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002642hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002643
2644subdir('units')
2645subdir('sysctl.d')
2646subdir('sysusers.d')
2647subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002648subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002649subdir('hwdb')
2650subdir('network')
2651subdir('man')
2652subdir('shell-completion/bash')
2653subdir('shell-completion/zsh')
Lennart Poettering2d684e62018-03-28 16:58:37 +02002654subdir('doc/sysvinit')
2655subdir('doc/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002656
2657# FIXME: figure out if the warning is true:
2658# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2659install_subdir('factory/etc',
2660 install_dir : factorydir)
2661
2662
2663install_data('xorg/50-systemd-user.sh',
2664 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002665install_data('modprobe.d/systemd.conf',
2666 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002667install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002668 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002669 'NEWS',
2670 'README',
2671 'doc/CODING_STYLE',
2672 'doc/DISTRO_PORTING',
2673 'doc/ENVIRONMENT.md',
2674 'doc/HACKING',
2675 'doc/TRANSIENT-SETTINGS.md',
2676 'doc/TRANSLATORS',
2677 'doc/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002678 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2679 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002680
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002681meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2682meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2683
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002684############################################################
2685
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002686meson_check_help = find_program('tools/meson-check-help.sh')
2687
2688foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002689 name = exec.full_path().split('/')[-1]
2690 test('check-help-' + name,
2691 meson_check_help,
2692 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002693endforeach
2694
2695############################################################
2696
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002697# Enable tests for all supported sanitizers
2698foreach tuple : sanitizers
2699 sanitizer = tuple[0]
2700 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002701
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002702 have = run_command(check_compilation_sh,
2703 cc.cmd_array(), '-x', 'c',
2704 '-fsanitize=@0@'.format(sanitizer),
2705 '-include', link_test_c).returncode() == 0
2706 message('@0@ sanitizer supported: @1@'.format(sanitizer, have ? 'yes' : 'no'))
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002707
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002708 if have
2709 prev = ''
2710 foreach p : fuzz_regression_tests
2711 b = p.split('/')[-2]
2712 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002713
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002714 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002715
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002716 if name != prev
2717 if want_tests == 'false'
2718 message('Not compiling @0@ because tests is set to false'.format(name))
2719 elif slow_tests
2720 exe = custom_target(
2721 name,
2722 output : name,
2723 depends : build,
2724 command : [env, 'ln', '-fs',
2725 join_paths(build.full_path(), b),
2726 '@OUTPUT@'],
2727 build_by_default : true)
2728 else
2729 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2730 endif
2731 endif
2732 prev = name
2733
2734 if want_tests != 'false' and slow_tests
2735 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2736 env,
2737 args : [exe.full_path(),
2738 join_paths(meson.source_root(),
2739 'test/fuzz-regressions',
2740 p)])
2741 endif
2742 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002743 endif
2744endforeach
2745
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002746
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002747############################################################
2748
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002749if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002750 all_files = run_command(
2751 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002752 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002753 'ls-files',
2754 ':/*.[ch]'])
2755 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002756
userwithuide85a6902017-08-09 13:41:44 +00002757 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002758 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002759 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002760 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002761 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002762 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002763 output : 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002764 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002765endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002766
2767if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002768 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002769 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002770 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002771 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002772endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002773
2774if git.found()
2775 git_head = 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', 'HEAD']).stdout().strip()
2779 git_head_short = run_command(
2780 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002781 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002782 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2783
2784 run_target(
2785 'git-snapshot',
2786 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002787 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002788 git_head_short),
2789 '--prefix', 'systemd-@0@/'.format(git_head),
2790 'HEAD'])
2791endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002792
2793############################################################
2794
Lennart Poettering51b13862017-12-20 12:51:14 +01002795meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2796run_target(
2797 'check-api-docs',
2798 depends : [man, libsystemd, libudev],
2799 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2800
2801############################################################
2802
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002803status = [
2804 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2805
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002806 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002807 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002808 'prefix directory: @0@'.format(prefixdir),
2809 'rootprefix directory: @0@'.format(rootprefixdir),
2810 'sysconf directory: @0@'.format(sysconfdir),
2811 'include directory: @0@'.format(includedir),
2812 'lib directory: @0@'.format(libdir),
2813 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002814 'SysV init scripts: @0@'.format(sysvinit_path),
2815 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002816 'PAM modules directory: @0@'.format(pamlibdir),
2817 'PAM configuration directory: @0@'.format(pamconfdir),
2818 'RPM macros directory: @0@'.format(rpmmacrosdir),
2819 'modprobe.d directory: @0@'.format(modprobedir),
2820 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2821 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2822 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2823 'bash completions directory: @0@'.format(bashcompletiondir),
2824 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002825 'extra start script: @0@'.format(get_option('rc-local')),
2826 'extra stop script: @0@'.format(get_option('halt-local')),
2827 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2828 get_option('debug-tty')),
2829 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002830 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002831 'maximum system UID: @0@'.format(system_uid_max),
2832 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002833 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2834 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2835 'minimum container UID base: @0@'.format(container_uid_base_min),
2836 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002837 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002838 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002839 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002840 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002841 'nobody user name: @0@'.format(nobody_user),
2842 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002843 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002844 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002845
2846 'default DNSSEC mode: @0@'.format(default_dnssec),
2847 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2848 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2849
2850alt_dns_servers = '\n '.join(dns_servers.split(' '))
2851alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2852status += [
2853 'default DNS servers: @0@'.format(alt_dns_servers),
2854 'default NTP servers: @0@'.format(alt_ntp_servers)]
2855
2856alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2857 '@@0@'.format(time_epoch)).stdout().strip()
2858status += [
2859 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2860
2861# TODO:
2862# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2863# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2864# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2865
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002866if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002867 status += [
2868 'efi arch: @0@'.format(efi_arch)]
2869
2870 if have_gnu_efi
2871 status += [
2872 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2873 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002874 'EFI lib directory: @0@'.format(efi_libdir),
2875 'EFI lds directory: @0@'.format(efi_ldsdir),
2876 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002877 endif
2878endif
2879
2880found = []
2881missing = []
2882
2883foreach tuple : [
2884 ['libcryptsetup'],
2885 ['PAM'],
2886 ['AUDIT'],
2887 ['IMA'],
2888 ['AppArmor'],
2889 ['SELinux'],
2890 ['SECCOMP'],
2891 ['SMACK'],
2892 ['zlib'],
2893 ['xz'],
2894 ['lz4'],
2895 ['bzip2'],
2896 ['ACL'],
2897 ['gcrypt'],
2898 ['qrencode'],
2899 ['microhttpd'],
2900 ['gnutls'],
2901 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002902 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002903 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002904 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002905 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002906 ['libiptc'],
2907 ['elfutils'],
2908 ['binfmt'],
2909 ['vconsole'],
2910 ['quotacheck'],
2911 ['tmpfiles'],
2912 ['environment.d'],
2913 ['sysusers'],
2914 ['firstboot'],
2915 ['randomseed'],
2916 ['backlight'],
2917 ['rfkill'],
2918 ['logind'],
2919 ['machined'],
2920 ['importd'],
2921 ['hostnamed'],
2922 ['timedated'],
2923 ['timesyncd'],
2924 ['localed'],
2925 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002926 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002927 ['coredump'],
2928 ['polkit'],
2929 ['legacy pkla', install_polkit_pkla],
2930 ['efi'],
2931 ['gnu-efi', have_gnu_efi],
2932 ['kmod'],
2933 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01002934 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002935 ['blkid'],
2936 ['dbus'],
2937 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002938 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002939 ['hwdb'],
2940 ['tpm'],
2941 ['man pages', want_man],
2942 ['html pages', want_html],
2943 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002944 ['SysV compat'],
2945 ['utmp'],
2946 ['ldconfig'],
2947 ['hibernate'],
2948 ['adm group', get_option('adm-group')],
2949 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002950 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002951 ['debug hashmap'],
2952 ['debug mmap cache'],
2953]
2954
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01002955 if tuple.length() >= 2
2956 cond = tuple[1]
2957 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002958 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2959 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002960 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002961 endif
2962 if cond
2963 found += [tuple[0]]
2964 else
2965 missing += [tuple[0]]
2966 endif
2967endforeach
2968
2969status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002970 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002971 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002972 '',
2973 'disabled features: @0@'.format(', '.join(missing)),
2974 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002975message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002976
2977if rootprefixdir != rootprefix_default
2978 message('WARNING:\n' +
2979 ' Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2980 ' systemd used fixed names for unit file directories and other paths, so anything\n' +
2981 ' except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
2982endif