blob: 2986b5b5759dff5807843b828084c82b55e92075 [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 ]
Yu Watanabe8ac42232018-04-26 17:53:10 +0900377 if cc.has_argument(arg)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400378 add_project_arguments(arg, language : 'c')
379 endif
380 endforeach
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400381endif
382
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400383link_test_c = files('tools/meson-link-test.c')
384
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400385# --as-needed and --no-undefined are provided by meson by default,
386# run mesonconf to see what is enabled
387foreach arg : ['-Wl,-z,relro',
388 '-Wl,-z,now',
389 '-pie',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400390 ]
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400391
392 have = run_command(check_compilation_sh,
393 cc.cmd_array(), '-x', 'c', arg,
394 '-include', link_test_c).returncode() == 0
395 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500396 if have and (arg != '-pie' or not fuzzer_build)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400397 add_project_link_arguments(arg, language : 'c')
398 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400399endforeach
400
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400401if get_option('buildtype') != 'debug'
402 foreach arg : ['-ffunction-sections',
403 '-fdata-sections']
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400404 if cc.has_argument(arg,
405 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400406 add_project_arguments(arg, language : 'c')
407 endif
408 endforeach
409
410 foreach arg : ['-Wl,--gc-sections']
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400411 have = run_command(check_compilation_sh,
412 cc.cmd_array(), '-x', 'c', arg,
413 '-include', link_test_c).returncode() == 0
414 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
415 if have
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400416 add_project_link_arguments(arg, language : 'c')
417 endif
418 endforeach
419endif
420
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400421cpp = ' '.join(cc.cmd_array()) + ' -E'
422
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400423#####################################################################
424# compilation result tests
425
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400426conf.set('_GNU_SOURCE', true)
427conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400428
429conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
430conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
431conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
432conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
433conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
434conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
435conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
436
437decl_headers = '''
438#include <uchar.h>
439#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000440#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100441#include <linux/stat.h>
442#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400443'''
444# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
445
446foreach decl : ['char16_t',
447 'char32_t',
448 'key_serial_t',
449 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000450 'struct fib_rule_uid_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100451 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400452 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400453
454 # We get -1 if the size cannot be determined
455 have = cc.sizeof(decl, prefix : decl_headers) > 0
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200456 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400457endforeach
458
459foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
460 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
461 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
462 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530463 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400464 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
465 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
466 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
467 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
468 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530469 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400470 # if_tunnel.h is buggy and cannot be included on its own
471 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
472 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
473 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
474 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
475 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
476 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
477 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530478 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400479 ['NDA_IFINDEX', 'linux/neighbour.h'],
480 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000481 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400482 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530483 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400484 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400485 prefix = decl.length() > 2 ? decl[2] : ''
486 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200487 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400488endforeach
489
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400490foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200491 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400492endforeach
493
494foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100495 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100496 ['gettid', '''#include <sys/types.h>
497 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100498 ['pivot_root', '''#include <stdlib.h>
499 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100500 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400501 #include <sys/stat.h>
502 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100503 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100504 ['renameat2', '''#include <stdio.h>
505 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400506 ['kcmp', '''#include <linux/kcmp.h>'''],
507 ['keyctl', '''#include <sys/types.h>
508 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100509 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400510 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200511 ['bpf', '''#include <sys/syscall.h>
512 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100513 ['statx', '''#include <sys/types.h>
514 #include <sys/stat.h>
515 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100516 ['explicit_bzero' , '''#include <string.h>'''],
517 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400518]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400519
Lennart Poettering85db59b2017-12-25 12:01:14 +0100520 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200521 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400522endforeach
523
Lennart Poettering85db59b2017-12-25 12:01:14 +0100524if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200525 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200526 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400527else
528 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200529 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200530 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400531endif
532
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400533#####################################################################
534
535sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400536awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400537m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400538stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400539git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100540env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100541perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400542
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400543meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400544mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400545test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
546splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400547
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400548# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
549# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500550progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400551 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400552 ['kmod', '/usr/bin/kmod' ],
553 ['kexec', '/usr/sbin/kexec' ],
554 ['sulogin', '/usr/sbin/sulogin' ],
555 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
556 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
557 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
558 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
559 ]
560foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400561 path = get_option(prog[0] + '-path')
562 if path != ''
563 message('Using @1@ for @0@'.format(prog[0], path))
564 else
565 exe = find_program(prog[0],
566 '/usr/sbin/' + prog[0],
567 '/sbin/' + prog[0],
568 required: false)
569 path = exe.found() ? exe.path() : prog[1]
570 endif
571 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
572 conf.set_quoted(name, path)
573 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400574endforeach
575
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500576conf.set_quoted('TELINIT', get_option('telinit-path'))
577
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400578if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100579 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400580endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400581
582############################################################
583
584gperf = find_program('gperf')
585
586gperf_test_format = '''
587#include <string.h>
588const char * in_word_set(const char *, @0@);
589@1@
590'''
591gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
592gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
593gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
594if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400595 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400596else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400597 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
598 if cc.compiles(gperf_test)
599 gperf_len_type = 'unsigned'
600 else
601 error('unable to determine gperf len type')
602 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400603endif
604message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400605conf.set('GPERF_LEN_TYPE', gperf_len_type,
606 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400607
608############################################################
609
610if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400611 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400612endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100613foreach header : ['crypt.h',
614 'linux/btrfs.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400615 'linux/memfd.h',
616 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200617 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400618 'valgrind/memcheck.h',
619 'valgrind/valgrind.h',
620 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400621
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200622 conf.set10('HAVE_' + header.underscorify().to_upper(),
623 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400624endforeach
625
626############################################################
627
628conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400629conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
630gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400631
632default_hierarchy = get_option('default-hierarchy')
633conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
634 description : 'default cgroup hierarchy as string')
635if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400636 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400637elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400638 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400639else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400640 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400641endif
642
643time_epoch = get_option('time-epoch')
644if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400645 NEWS = files('NEWS')
646 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400647endif
648time_epoch = time_epoch.to_int()
649conf.set('TIME_EPOCH', time_epoch)
650
651system_uid_max = get_option('system-uid-max')
652if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400653 system_uid_max = run_command(
654 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800655 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
656 '/etc/login.defs').stdout().strip()
657 if system_uid_max == ''
658 system_uid_max = '999'
659 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400660endif
661system_uid_max = system_uid_max.to_int()
662conf.set('SYSTEM_UID_MAX', system_uid_max)
663substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400664message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400665
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400666system_gid_max = get_option('system-gid-max')
667if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400668 system_gid_max = run_command(
669 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800670 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
671 '/etc/login.defs').stdout().strip()
672 if system_gid_max == ''
673 system_gid_max = '999'
674 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400675endif
676system_gid_max = system_gid_max.to_int()
677conf.set('SYSTEM_GID_MAX', system_gid_max)
678substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400679message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400680
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100681dynamic_uid_min = get_option('dynamic-uid-min').to_int()
682dynamic_uid_max = get_option('dynamic-uid-max').to_int()
683conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
684conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
685substs.set('dynamicuidmin', dynamic_uid_min)
686substs.set('dynamicuidmax', dynamic_uid_max)
687
688container_uid_base_min = get_option('container-uid-base-min').to_int()
689container_uid_base_max = get_option('container-uid-base-max').to_int()
690conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
691conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
692substs.set('containeruidbasemin', container_uid_base_min)
693substs.set('containeruidbasemax', container_uid_base_max)
694
Lennart Poetteringafde4572017-12-05 11:00:24 +0100695nobody_user = get_option('nobody-user')
696nobody_group = get_option('nobody-group')
697
698getent_result = run_command('getent', 'passwd', '65534')
699if getent_result.returncode() == 0
700 name = getent_result.stdout().split(':')[0]
701 if name != nobody_user
702 message('WARNING:\n' +
703 ' 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) +
704 ' Your build will result in an user table setup that is incompatible with the local system.')
705 endif
706endif
707id_result = run_command('id', '-u', nobody_user)
708if id_result.returncode() == 0
709 id = id_result.stdout().to_int()
710 if id != 65534
711 message('WARNING:\n' +
712 ' 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) +
713 ' Your build will result in an user table setup that is incompatible with the local system.')
714 endif
715endif
716
717getent_result = run_command('getent', 'group', '65534')
718if getent_result.returncode() == 0
719 name = getent_result.stdout().split(':')[0]
720 if name != nobody_group
721 message('WARNING:\n' +
722 ' 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) +
723 ' Your build will result in an group table setup that is incompatible with the local system.')
724 endif
725endif
726id_result = run_command('id', '-g', nobody_group)
727if id_result.returncode() == 0
728 id = id_result.stdout().to_int()
729 if id != 65534
730 message('WARNING:\n' +
731 ' 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) +
732 ' Your build will result in an group table setup that is incompatible with the local system.')
733 endif
734endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900735if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
736 message('WARNING:\n' +
737 ' The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
738 ' Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
739endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100740
741conf.set_quoted('NOBODY_USER_NAME', nobody_user)
742conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900743substs.set('NOBODY_USER_NAME', nobody_user)
744substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100745
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400746tty_gid = get_option('tty-gid')
747conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400748substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400749
Ikey Doherty84786b82017-12-03 12:28:23 +0000750# Ensure provided GID argument is numeric, otherwise fallback to default assignment
751if get_option('users-gid') != ''
Yu Watanabed6806872017-12-05 14:01:39 +0900752 users_gid = get_option('users-gid').to_int()
Ikey Doherty84786b82017-12-03 12:28:23 +0000753else
Yu Watanabed6806872017-12-05 14:01:39 +0900754 users_gid = '-'
Ikey Doherty84786b82017-12-03 12:28:23 +0000755endif
756substs.set('USERS_GID', users_gid)
757
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400758if get_option('adm-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400759 m4_defines += ['-DENABLE_ADM_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400760endif
761
762if get_option('wheel-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400763 m4_defines += ['-DENABLE_WHEEL_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400764endif
765
766substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700767substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400768
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400769kill_user_processes = get_option('default-kill-user-processes')
770conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100771conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400772substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400773
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400774dns_servers = get_option('dns-servers')
775conf.set_quoted('DNS_SERVERS', dns_servers)
776substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400777
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400778ntp_servers = get_option('ntp-servers')
779conf.set_quoted('NTP_SERVERS', ntp_servers)
780substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400781
782conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
783
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400784substs.set('SUSHELL', get_option('debug-shell'))
785substs.set('DEBUGTTY', get_option('debug-tty'))
786
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400787debug = get_option('debug')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200788enable_debug_hashmap = false
789enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400790if debug != ''
791 foreach name : debug.split(',')
792 if name == 'hashmap'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200793 enable_debug_hashmap = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400794 elif name == 'mmap-cache'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200795 enable_debug_mmap_cache = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400796 else
797 message('unknown debug option "@0@", ignoring'.format(name))
798 endif
799 endforeach
800endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200801conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
802conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400803
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400804#####################################################################
805
806threads = dependency('threads')
807librt = cc.find_library('rt')
808libm = cc.find_library('m')
809libdl = cc.find_library('dl')
810libcrypt = cc.find_library('crypt')
811
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400812libcap = dependency('libcap', required : false)
813if not libcap.found()
814 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
815 libcap = cc.find_library('cap')
816endif
817
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400818libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100819 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400820
821want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500822if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400823 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400824 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400825 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200826 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400827else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200828 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400829 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400830endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200831conf.set10('HAVE_SECCOMP', have)
832m4_defines += have ? ['-DHAVE_SECCOMP'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400833
834want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500835if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400836 libselinux = dependency('libselinux',
837 version : '>= 2.1.9',
838 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200839 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400840else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200841 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400842 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400843endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200844conf.set10('HAVE_SELINUX', have)
845m4_defines += have ? ['-DHAVE_SELINUX'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400846
847want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500848if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400849 libapparmor = dependency('libapparmor',
850 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200851 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400852else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200853 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400854 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400855endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200856conf.set10('HAVE_APPARMOR', have)
857m4_defines += have ? ['-DHAVE_APPARMOR'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400858
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400859smack_run_label = get_option('smack-run-label')
860if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400861 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
862 m4_defines += ['-DHAVE_SMACK_RUN_LABEL']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400863endif
864
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400865want_polkit = get_option('polkit')
866install_polkit = false
867install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500868if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400869 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400870
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400871 libpolkit = dependency('polkit-gobject-1',
872 required : false)
873 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
874 message('Old polkit detected, will install pkla files')
875 install_polkit_pkla = true
876 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400877endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200878conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400879
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400880want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500881if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400882 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200883 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400884else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200885 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400886 libacl = []
887endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200888conf.set10('HAVE_ACL', have)
889m4_defines += have ? ['-DHAVE_ACL'] : []
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400890
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400891want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500892if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400893 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200894 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400895else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200896 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400897 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400898endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200899conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400900
901want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500902if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400903 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200904 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400905else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200906 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400907 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400908endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200909conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400910
911want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500912if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400913 libkmod = dependency('libkmod',
914 version : '>= 15',
915 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200916 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400917else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200918 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400919 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400920endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200921conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400922
923want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500924if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400925 libpam = cc.find_library('pam', required : want_pam == 'true')
926 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200927 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400928else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200929 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400930 libpam = []
931 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400932endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200933conf.set10('HAVE_PAM', have)
934m4_defines += have ? ['-DHAVE_PAM'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400935
936want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500937if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400938 libmicrohttpd = dependency('libmicrohttpd',
939 version : '>= 0.9.33',
940 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200941 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400942else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200943 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400944 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400945endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200946conf.set10('HAVE_MICROHTTPD', have)
947m4_defines += have ? ['-DHAVE_MICROHTTPD'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400948
949want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500950if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400951 libcryptsetup = dependency('libcryptsetup',
952 version : '>= 1.6.0',
953 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200954 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400955else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200956 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400957 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400958endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200959conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400960
961want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500962if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400963 libcurl = dependency('libcurl',
964 version : '>= 7.32.0',
965 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200966 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400967else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200968 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400969 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400970endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200971conf.set10('HAVE_LIBCURL', have)
972m4_defines += have ? ['-DHAVE_LIBCURL'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400973
974want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400975want_libidn2 = get_option('libidn2')
976if want_libidn == 'true' and want_libidn2 == 'true'
977 error('libidn and libidn2 cannot be requested simultaneously')
978endif
979
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500980if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400981 libidn = dependency('libidn',
982 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200983 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400984else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200985 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400986 libidn = []
987endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200988conf.set10('HAVE_LIBIDN', have)
989m4_defines += have ? ['-DHAVE_LIBIDN'] : []
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500990if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400991 # libidn is used for both libidn and libidn2 objects
992 libidn = dependency('libidn2',
993 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200994 have = libidn.found()
995else
996 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400997endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200998conf.set10('HAVE_LIBIDN2', have)
999m4_defines += have ? ['-DHAVE_LIBIDN2'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001000
1001want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001002if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001003 libiptc = dependency('libiptc',
1004 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001005 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001006else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001007 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001008 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001009endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001010conf.set10('HAVE_LIBIPTC', have)
1011m4_defines += have ? ['-DHAVE_LIBIPTC'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001012
1013want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001014if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001015 libqrencode = dependency('libqrencode',
1016 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001017 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001018else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001019 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001020 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001021endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001022conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001023
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001024want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001025if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001026 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1027 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001028 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001029else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001030 have = false
1031endif
1032if not have
1033 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001034 libgcrypt = []
1035 libgpg_error = []
1036endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001037conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001038
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001039want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001040if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001041 libgnutls = dependency('gnutls',
1042 version : '>= 3.1.4',
1043 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001044 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001045else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001046 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001047 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001048endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001049conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001050
1051want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001052if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001053 libdw = dependency('libdw',
1054 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001055 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001056else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001057 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001058 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001059endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001060conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001061
1062want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001063if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001064 libz = dependency('zlib',
1065 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001066 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001067else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001068 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001069 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001070endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001071conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001072
1073want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001074if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001075 libbzip2 = cc.find_library('bz2',
1076 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001077 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001078else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001079 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001080 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001081endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001082conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001083
1084want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001085if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001086 libxz = dependency('liblzma',
1087 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001088 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001089else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001090 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001091 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001092endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001093conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001094
1095want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001096if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001097 liblz4 = dependency('liblz4',
1098 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001099 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001100else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001101 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001102 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001103endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001104conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001105
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001106want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001107if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001108 libxkbcommon = dependency('xkbcommon',
1109 version : '>= 0.3.0',
1110 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001111 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001112else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001113 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001114 libxkbcommon = []
1115endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001116conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001117
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001118want_pcre2 = get_option('pcre2')
1119if want_pcre2 != 'false'
1120 libpcre2 = dependency('libpcre2-8',
1121 required : want_pcre2 == 'true')
1122 have = libpcre2.found()
1123else
1124 have = false
1125 libpcre2 = []
1126endif
1127conf.set10('HAVE_PCRE2', have)
1128
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001129want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001130if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001131 libglib = dependency('glib-2.0',
1132 version : '>= 2.22.0',
1133 required : want_glib == 'true')
1134 libgobject = dependency('gobject-2.0',
1135 version : '>= 2.22.0',
1136 required : want_glib == 'true')
1137 libgio = dependency('gio-2.0',
1138 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001139 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001140else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001141 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001142 libglib = []
1143 libgobject = []
1144 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001145endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001146conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001147
1148want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001149if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001150 libdbus = dependency('dbus-1',
1151 version : '>= 1.3.2',
1152 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001153 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001154else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001155 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001156 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001157endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001158conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001159
Yu Watanabe42303dc2017-06-18 05:22:32 +09001160default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001161if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001162 default_dnssec = 'no'
1163endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001164if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001165 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1166 default_dnssec = 'no'
1167endif
1168conf.set('DEFAULT_DNSSEC_MODE',
1169 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1170substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1171
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001172want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001173if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001174 have = (conf.get('HAVE_LIBCURL') == 1 and
1175 conf.get('HAVE_ZLIB') == 1 and
1176 conf.get('HAVE_BZIP2') == 1 and
1177 conf.get('HAVE_XZ') == 1 and
1178 conf.get('HAVE_GCRYPT') == 1)
1179 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001180 error('importd support was requested, but dependencies are not available')
1181 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001182else
1183 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001184endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001185conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001186
1187want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001188if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001189 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1190 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001191 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1192 # it's possible to build one without the other. Complain only if
1193 # support was explictly requested. The auxiliary files like sysusers
1194 # config should be installed when any of the programs are built.
1195 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1196 error('remote support was requested, but dependencies are not available')
1197 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001198 have = have_deps[0] or have_deps[1]
1199else
1200 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001201endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001202conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001203
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001204foreach term : ['utmp',
1205 'hibernate',
1206 'environment-d',
1207 'binfmt',
1208 'coredump',
1209 'resolve',
1210 'logind',
1211 'hostnamed',
1212 'localed',
1213 'machined',
1214 'networkd',
1215 'timedated',
1216 'timesyncd',
1217 'myhostname',
1218 'firstboot',
1219 'randomseed',
1220 'backlight',
1221 'vconsole',
1222 'quotacheck',
1223 'sysusers',
1224 'tmpfiles',
1225 'hwdb',
1226 'rfkill',
1227 'ldconfig',
1228 'efi',
1229 'tpm',
1230 'ima',
1231 'smack',
1232 'gshadow',
1233 'idn',
1234 'nss-systemd']
1235 have = get_option(term)
1236 name = 'ENABLE_' + term.underscorify().to_upper()
1237 conf.set10(name, have)
1238 m4_defines += have ? ['-D' + name] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001239endforeach
1240
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001241want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001242install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001243slow_tests = get_option('slow-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001244tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001245fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001246
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001247conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001248
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001249#####################################################################
1250
1251if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001252 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001253
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001254 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001255 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001256 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001257 elif efi_arch == 'x86_64'
1258 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001259 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001260 elif efi_arch == 'arm'
1261 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001262 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001263 elif efi_arch == 'aarch64'
1264 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001265 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001266 else
1267 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001268 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001269 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001270
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001271 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001272 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001273
1274 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001275else
1276 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001277endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001278conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001279
1280#####################################################################
1281
1282config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001283 output : 'config.h',
1284 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001285
1286includes = include_directories('src/basic',
1287 'src/shared',
1288 'src/systemd',
1289 'src/journal',
1290 'src/resolve',
1291 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001292 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001293 'src/login',
1294 'src/udev',
1295 'src/libudev',
1296 'src/core',
1297 'src/libsystemd/sd-bus',
1298 'src/libsystemd/sd-device',
1299 'src/libsystemd/sd-hwdb',
1300 'src/libsystemd/sd-id128',
1301 'src/libsystemd/sd-netlink',
1302 'src/libsystemd/sd-network',
1303 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001304 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001305
1306add_project_arguments('-include', 'config.h', language : 'c')
1307
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001308subdir('po')
1309subdir('catalog')
1310subdir('src/systemd')
1311subdir('src/basic')
1312subdir('src/libsystemd')
1313subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001314subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001315subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001316
1317libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001318 'journal-core',
1319 libjournal_core_sources,
1320 journald_gperf_c,
1321 include_directories : includes,
1322 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001323
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001324libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001325libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001326 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001327 '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 +02001328 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001329 include_directories : includes,
1330 link_args : ['-shared',
1331 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001332 link_with : [libbasic,
1333 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001334 link_whole : [libsystemd_static,
1335 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001336 dependencies : [threads,
1337 librt,
1338 libxz,
1339 liblz4],
1340 link_depends : libsystemd_sym,
1341 install : true,
1342 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001343
1344############################################################
1345
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001346# binaries that have --help and are intended for use by humans,
1347# usually, but not always, installed in /bin.
1348public_programs = []
1349
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001350subdir('src/libudev')
1351subdir('src/shared')
1352subdir('src/core')
1353subdir('src/udev')
1354subdir('src/network')
1355
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001356subdir('src/analyze')
1357subdir('src/journal-remote')
1358subdir('src/coredump')
1359subdir('src/hostname')
1360subdir('src/import')
1361subdir('src/kernel-install')
1362subdir('src/locale')
1363subdir('src/machine')
1364subdir('src/nspawn')
1365subdir('src/resolve')
1366subdir('src/timedate')
1367subdir('src/timesync')
1368subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001369subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001370
1371subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001372subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001373subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001374subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001375
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001376############################################################
1377
1378# only static linking apart from libdl, to make sure that the
1379# module is linked to all libraries that it uses.
1380test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001381 'test-dlopen',
1382 test_dlopen_c,
1383 include_directories : includes,
1384 link_with : [libbasic],
1385 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001386
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001387foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001388 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001389 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001390 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001391
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001392 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001393 if condition
1394 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001395
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001396 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1397 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001398
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001399 nss = shared_library(
1400 'nss_' + module,
1401 'src/nss-@0@/nss-@0@.c'.format(module),
1402 version : '2',
1403 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001404 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1405 link_args : ['-Wl,-z,nodelete',
1406 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001407 '-Wl,--version-script=' + version_script_arg,
1408 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001409 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001410 libbasic],
1411 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001412 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001413 link_depends : sym,
1414 install : true,
1415 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001416
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001417 # We cannot use shared_module because it does not support version suffix.
1418 # Unfortunately shared_library insists on creating the symlink…
1419 meson.add_install_script('sh', '-c',
1420 'rm $DESTDIR@0@/libnss_@1@.so'
1421 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001422
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001423 test('dlopen-nss_' + module,
1424 test_dlopen,
1425 args : [nss.full_path()]) # path to dlopen must include a slash
1426 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001427endforeach
1428
1429############################################################
1430
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001431executable('systemd',
1432 systemd_sources,
1433 include_directories : includes,
1434 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001435 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001436 dependencies : [threads,
1437 librt,
1438 libseccomp,
1439 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001440 libmount,
1441 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001442 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001443 install : true,
1444 install_dir : rootlibexecdir)
1445
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001446meson.add_install_script(meson_make_symlink,
1447 join_paths(rootlibexecdir, 'systemd'),
1448 join_paths(rootsbindir, 'init'))
1449
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001450exe = executable('systemd-analyze',
1451 systemd_analyze_sources,
1452 include_directories : includes,
1453 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001454 libshared],
1455 dependencies : [threads,
1456 librt,
1457 libseccomp,
1458 libselinux,
1459 libmount,
1460 libblkid],
1461 install_rpath : rootlibexecdir,
1462 install : true)
1463public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001464
1465executable('systemd-journald',
1466 systemd_journald_sources,
1467 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001468 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001469 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001470 dependencies : [threads,
1471 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001472 liblz4,
1473 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001474 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001475 install : true,
1476 install_dir : rootlibexecdir)
1477
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001478exe = executable('systemd-cat',
1479 systemd_cat_sources,
1480 include_directories : includes,
1481 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001482 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001483 dependencies : [threads],
1484 install_rpath : rootlibexecdir,
1485 install : true)
1486public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001487
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001488exe = executable('journalctl',
1489 journalctl_sources,
1490 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001491 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001492 dependencies : [threads,
1493 libqrencode,
1494 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001495 liblz4,
1496 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001497 install_rpath : rootlibexecdir,
1498 install : true,
1499 install_dir : rootbindir)
1500public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001501
1502executable('systemd-getty-generator',
1503 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001504 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001505 link_with : [libshared],
1506 install_rpath : rootlibexecdir,
1507 install : true,
1508 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001509
1510executable('systemd-debug-generator',
1511 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001512 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001513 link_with : [libshared],
1514 install_rpath : rootlibexecdir,
1515 install : true,
1516 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001517
1518executable('systemd-fstab-generator',
1519 'src/fstab-generator/fstab-generator.c',
1520 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001521 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001522 link_with : [libshared],
1523 install_rpath : rootlibexecdir,
1524 install : true,
1525 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001526
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001527if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001528 executable('30-systemd-environment-d-generator',
1529 'src/environment-d-generator/environment-d-generator.c',
1530 include_directories : includes,
1531 link_with : [libshared],
1532 install_rpath : rootlibexecdir,
1533 install : true,
1534 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001535
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001536 meson.add_install_script(meson_make_symlink,
1537 join_paths(sysconfdir, 'environment'),
1538 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001539endif
1540
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001541if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001542 executable('systemd-hibernate-resume-generator',
1543 'src/hibernate-resume/hibernate-resume-generator.c',
1544 include_directories : includes,
1545 link_with : [libshared],
1546 install_rpath : rootlibexecdir,
1547 install : true,
1548 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001549
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001550 executable('systemd-hibernate-resume',
1551 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001552 include_directories : includes,
1553 link_with : [libshared],
1554 install_rpath : rootlibexecdir,
1555 install : true,
1556 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001557endif
1558
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001559if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001560 executable('systemd-gpt-auto-generator',
1561 'src/gpt-auto-generator/gpt-auto-generator.c',
1562 'src/basic/blkid-util.h',
1563 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001564 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001565 dependencies : libblkid,
1566 install_rpath : rootlibexecdir,
1567 install : true,
1568 install_dir : systemgeneratordir)
1569
1570 exe = executable('systemd-dissect',
1571 'src/dissect/dissect.c',
1572 include_directories : includes,
1573 link_with : [libshared],
1574 install_rpath : rootlibexecdir,
1575 install : true,
1576 install_dir : rootlibexecdir)
1577 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001578endif
1579
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001580if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001581 executable('systemd-resolved',
1582 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001583 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001584 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001585 libbasic_gcrypt,
1586 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001587 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001588 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001589 libm,
1590 libidn],
1591 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001592 install : true,
1593 install_dir : rootlibexecdir)
1594
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001595 exe = executable('resolvectl',
1596 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001597 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001598 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001599 libbasic_gcrypt,
1600 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001601 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001602 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001603 libm,
1604 libidn],
1605 install_rpath : rootlibexecdir,
1606 install : true)
1607 public_programs += [exe]
Lennart Poettering088c1362018-02-27 17:48:54 +01001608
1609 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001610 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001611 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001612
1613 meson.add_install_script(meson_make_symlink,
1614 join_paths(bindir, 'resolvectl'),
1615 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001616endif
1617
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001618if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001619 executable('systemd-logind',
1620 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001621 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001622 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001623 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001624 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001625 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001626 install_rpath : rootlibexecdir,
1627 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001628 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001629
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001630 exe = executable('loginctl',
1631 loginctl_sources,
1632 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001633 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001634 dependencies : [threads,
1635 liblz4,
1636 libxz],
1637 install_rpath : rootlibexecdir,
1638 install : true,
1639 install_dir : rootbindir)
1640 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001641
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001642 exe = executable('systemd-inhibit',
1643 'src/login/inhibit.c',
1644 include_directories : includes,
1645 link_with : [libshared],
1646 install_rpath : rootlibexecdir,
1647 install : true,
1648 install_dir : rootbindir)
1649 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001650
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001651 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001652 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1653 pam_systemd = shared_library(
1654 'pam_systemd',
1655 pam_systemd_c,
1656 name_prefix : '',
1657 include_directories : includes,
1658 link_args : ['-shared',
1659 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001660 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001661 libshared_static],
1662 dependencies : [threads,
1663 libpam,
1664 libpam_misc],
1665 link_depends : pam_systemd_sym,
1666 install : true,
1667 install_dir : pamlibdir)
1668
1669 test('dlopen-pam_systemd',
1670 test_dlopen,
1671 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1672 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001673endif
1674
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001675if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001676 executable('systemd-user-sessions',
1677 'src/user-sessions/user-sessions.c',
1678 include_directories : includes,
1679 link_with : [libshared],
1680 install_rpath : rootlibexecdir,
1681 install : true,
1682 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001683endif
1684
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001685if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001686 exe = executable('bootctl',
1687 'src/boot/bootctl.c',
1688 include_directories : includes,
1689 link_with : [libshared],
1690 dependencies : [libblkid],
1691 install_rpath : rootlibexecdir,
1692 install : true)
1693 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001694endif
1695
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001696exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1697 include_directories : includes,
1698 link_with : [libshared],
1699 dependencies : [threads],
1700 install_rpath : rootlibexecdir,
1701 install : true)
1702public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001703
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001704exe = executable('systemctl', 'src/systemctl/systemctl.c',
1705 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001706 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001707 dependencies : [threads,
1708 libcap,
1709 libselinux,
1710 libxz,
1711 liblz4],
1712 install_rpath : rootlibexecdir,
1713 install : true,
1714 install_dir : rootbindir)
1715public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001716
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001717foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1718 meson.add_install_script(meson_make_symlink,
1719 join_paths(rootbindir, 'systemctl'),
1720 join_paths(rootsbindir, alias))
1721endforeach
1722
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001723if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001724 executable('systemd-backlight',
1725 'src/backlight/backlight.c',
1726 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001727 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001728 install_rpath : rootlibexecdir,
1729 install : true,
1730 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001731endif
1732
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001733if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001734 executable('systemd-rfkill',
1735 'src/rfkill/rfkill.c',
1736 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001737 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001738 install_rpath : rootlibexecdir,
1739 install : true,
1740 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001741endif
1742
1743executable('systemd-system-update-generator',
1744 'src/system-update-generator/system-update-generator.c',
1745 include_directories : includes,
1746 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001747 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001748 install : true,
1749 install_dir : systemgeneratordir)
1750
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001751if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001752 executable('systemd-cryptsetup',
1753 'src/cryptsetup/cryptsetup.c',
1754 include_directories : includes,
1755 link_with : [libshared],
1756 dependencies : [libcryptsetup],
1757 install_rpath : rootlibexecdir,
1758 install : true,
1759 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001760
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001761 executable('systemd-cryptsetup-generator',
1762 'src/cryptsetup/cryptsetup-generator.c',
1763 include_directories : includes,
1764 link_with : [libshared],
1765 dependencies : [libcryptsetup],
1766 install_rpath : rootlibexecdir,
1767 install : true,
1768 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001769
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001770 executable('systemd-veritysetup',
1771 'src/veritysetup/veritysetup.c',
1772 include_directories : includes,
1773 link_with : [libshared],
1774 dependencies : [libcryptsetup],
1775 install_rpath : rootlibexecdir,
1776 install : true,
1777 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001778
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001779 executable('systemd-veritysetup-generator',
1780 'src/veritysetup/veritysetup-generator.c',
1781 include_directories : includes,
1782 link_with : [libshared],
1783 dependencies : [libcryptsetup],
1784 install_rpath : rootlibexecdir,
1785 install : true,
1786 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001787endif
1788
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001789if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001790 executable('systemd-sysv-generator',
1791 'src/sysv-generator/sysv-generator.c',
1792 include_directories : includes,
1793 link_with : [libshared],
1794 install_rpath : rootlibexecdir,
1795 install : true,
1796 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001797
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001798 executable('systemd-rc-local-generator',
1799 'src/rc-local-generator/rc-local-generator.c',
1800 include_directories : includes,
1801 link_with : [libshared],
1802 install_rpath : rootlibexecdir,
1803 install : true,
1804 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001805endif
1806
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001807if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001808 executable('systemd-hostnamed',
1809 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001810 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001811 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001812 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001813 install : true,
1814 install_dir : rootlibexecdir)
1815
1816 exe = executable('hostnamectl',
1817 'src/hostname/hostnamectl.c',
1818 include_directories : includes,
1819 link_with : [libshared],
1820 install_rpath : rootlibexecdir,
1821 install : true)
1822 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001823endif
1824
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001825if conf.get('ENABLE_LOCALED') == 1
1826 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001827 # logind will load libxkbcommon.so dynamically on its own
1828 deps = [libdl]
1829 else
1830 deps = []
1831 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001832
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001833 executable('systemd-localed',
1834 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001835 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001836 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001837 dependencies : deps,
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('localectl',
1843 localectl_sources,
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_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001852 executable('systemd-timedated',
1853 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001854 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001855 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001856 install_rpath : rootlibexecdir,
1857 install : true,
1858 install_dir : rootlibexecdir)
1859
1860 exe = executable('timedatectl',
1861 'src/timedate/timedatectl.c',
1862 include_directories : includes,
1863 install_rpath : rootlibexecdir,
1864 link_with : [libshared],
1865 install : true)
1866 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001867endif
1868
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001869if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001870 executable('systemd-timesyncd',
1871 systemd_timesyncd_sources,
1872 include_directories : includes,
1873 link_with : [libshared],
1874 dependencies : [threads,
1875 libm],
1876 install_rpath : rootlibexecdir,
1877 install : true,
1878 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001879
1880 executable('systemd-time-wait-sync',
1881 'src/time-wait-sync/time-wait-sync.c',
1882 include_directories : includes,
1883 link_with : [libshared],
1884 install_rpath : rootlibexecdir,
1885 install : true,
1886 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001887endif
1888
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001889if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001890 executable('systemd-machined',
1891 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001892 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001893 link_with : [libmachine_core,
1894 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001895 install_rpath : rootlibexecdir,
1896 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001897 install_dir : rootlibexecdir)
1898
1899 exe = executable('machinectl',
1900 'src/machine/machinectl.c',
1901 include_directories : includes,
1902 link_with : [libshared],
1903 dependencies : [threads,
1904 libxz,
1905 liblz4],
1906 install_rpath : rootlibexecdir,
1907 install : true,
1908 install_dir : rootbindir)
1909 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001910endif
1911
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001912if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001913 executable('systemd-importd',
1914 systemd_importd_sources,
1915 include_directories : includes,
1916 link_with : [libshared],
1917 dependencies : [threads],
1918 install_rpath : rootlibexecdir,
1919 install : true,
1920 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001921
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001922 systemd_pull = executable('systemd-pull',
1923 systemd_pull_sources,
1924 include_directories : includes,
1925 link_with : [libshared],
1926 dependencies : [libcurl,
1927 libz,
1928 libbzip2,
1929 libxz,
1930 libgcrypt],
1931 install_rpath : rootlibexecdir,
1932 install : true,
1933 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001934
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001935 systemd_import = executable('systemd-import',
1936 systemd_import_sources,
1937 include_directories : includes,
1938 link_with : [libshared],
1939 dependencies : [libcurl,
1940 libz,
1941 libbzip2,
1942 libxz],
1943 install_rpath : rootlibexecdir,
1944 install : true,
1945 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001946
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001947 systemd_export = executable('systemd-export',
1948 systemd_export_sources,
1949 include_directories : includes,
1950 link_with : [libshared],
1951 dependencies : [libcurl,
1952 libz,
1953 libbzip2,
1954 libxz],
1955 install_rpath : rootlibexecdir,
1956 install : true,
1957 install_dir : rootlibexecdir)
1958 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001959endif
1960
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001961if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001962 exe = executable('systemd-journal-upload',
1963 systemd_journal_upload_sources,
1964 include_directories : includes,
1965 link_with : [libshared],
1966 dependencies : [threads,
1967 libcurl,
1968 libgnutls,
1969 libxz,
1970 liblz4],
1971 install_rpath : rootlibexecdir,
1972 install : true,
1973 install_dir : rootlibexecdir)
1974 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001975endif
1976
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001977if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001978 s_j_remote = executable('systemd-journal-remote',
1979 systemd_journal_remote_sources,
1980 include_directories : includes,
1981 link_with : [libshared],
1982 dependencies : [threads,
1983 libmicrohttpd,
1984 libgnutls,
1985 libxz,
1986 liblz4],
1987 install_rpath : rootlibexecdir,
1988 install : true,
1989 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001990
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001991 s_j_gatewayd = executable('systemd-journal-gatewayd',
1992 systemd_journal_gatewayd_sources,
1993 include_directories : includes,
1994 link_with : [libshared],
1995 dependencies : [threads,
1996 libmicrohttpd,
1997 libgnutls,
1998 libxz,
1999 liblz4],
2000 install_rpath : rootlibexecdir,
2001 install : true,
2002 install_dir : rootlibexecdir)
2003 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002004endif
2005
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002006if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002007 executable('systemd-coredump',
2008 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002009 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002010 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002011 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002012 libacl,
2013 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002014 libxz,
2015 liblz4],
2016 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002017 install : true,
2018 install_dir : rootlibexecdir)
2019
2020 exe = executable('coredumpctl',
2021 coredumpctl_sources,
2022 include_directories : includes,
2023 link_with : [libshared],
2024 dependencies : [threads,
2025 libxz,
2026 liblz4],
2027 install_rpath : rootlibexecdir,
2028 install : true)
2029 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002030endif
2031
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002032if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002033 exe = executable('systemd-binfmt',
2034 'src/binfmt/binfmt.c',
2035 include_directories : includes,
2036 link_with : [libshared],
2037 install_rpath : rootlibexecdir,
2038 install : true,
2039 install_dir : rootlibexecdir)
2040 public_programs += [exe]
2041
2042 meson.add_install_script('sh', '-c',
2043 mkdir_p.format(binfmtdir))
2044 meson.add_install_script('sh', '-c',
2045 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2046endif
2047
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002048if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002049 executable('systemd-vconsole-setup',
2050 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002051 include_directories : includes,
2052 link_with : [libshared],
2053 install_rpath : rootlibexecdir,
2054 install : true,
2055 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002056endif
2057
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002058if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002059 executable('systemd-random-seed',
2060 'src/random-seed/random-seed.c',
2061 include_directories : includes,
2062 link_with : [libshared],
2063 install_rpath : rootlibexecdir,
2064 install : true,
2065 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002066endif
2067
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002068if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002069 executable('systemd-firstboot',
2070 'src/firstboot/firstboot.c',
2071 include_directories : includes,
2072 link_with : [libshared],
2073 dependencies : [libcrypt],
2074 install_rpath : rootlibexecdir,
2075 install : true,
2076 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002077endif
2078
2079executable('systemd-remount-fs',
2080 'src/remount-fs/remount-fs.c',
2081 'src/core/mount-setup.c',
2082 'src/core/mount-setup.h',
2083 include_directories : includes,
2084 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002085 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002086 install : true,
2087 install_dir : rootlibexecdir)
2088
2089executable('systemd-machine-id-setup',
2090 'src/machine-id-setup/machine-id-setup-main.c',
2091 'src/core/machine-id-setup.c',
2092 'src/core/machine-id-setup.h',
2093 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002094 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002095 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002096 install : true,
2097 install_dir : rootbindir)
2098
2099executable('systemd-fsck',
2100 'src/fsck/fsck.c',
2101 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002102 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002103 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002104 install : true,
2105 install_dir : rootlibexecdir)
2106
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002107executable('systemd-growfs',
2108 'src/partition/growfs.c',
2109 include_directories : includes,
2110 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002111 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002112 install_rpath : rootlibexecdir,
2113 install : true,
2114 install_dir : rootlibexecdir)
2115
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002116executable('systemd-makefs',
2117 'src/partition/makefs.c',
2118 include_directories : includes,
2119 link_with : [libshared],
2120 install_rpath : rootlibexecdir,
2121 install : true,
2122 install_dir : rootlibexecdir)
2123
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002124executable('systemd-sleep',
2125 'src/sleep/sleep.c',
2126 include_directories : includes,
2127 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002128 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002129 install : true,
2130 install_dir : rootlibexecdir)
2131
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002132exe = executable('systemd-sysctl',
2133 'src/sysctl/sysctl.c',
2134 include_directories : includes,
2135 link_with : [libshared],
2136 install_rpath : rootlibexecdir,
2137 install : true,
2138 install_dir : rootlibexecdir)
2139public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002140
2141executable('systemd-ac-power',
2142 'src/ac-power/ac-power.c',
2143 include_directories : includes,
2144 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002145 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002146 install : true,
2147 install_dir : rootlibexecdir)
2148
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002149exe = executable('systemd-detect-virt',
2150 'src/detect-virt/detect-virt.c',
2151 include_directories : includes,
2152 link_with : [libshared],
2153 install_rpath : rootlibexecdir,
2154 install : true)
2155public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002156
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002157exe = executable('systemd-delta',
2158 'src/delta/delta.c',
2159 include_directories : includes,
2160 link_with : [libshared],
2161 install_rpath : rootlibexecdir,
2162 install : true)
2163public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002164
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002165exe = executable('systemd-escape',
2166 'src/escape/escape.c',
2167 include_directories : includes,
2168 link_with : [libshared],
2169 install_rpath : rootlibexecdir,
2170 install : true,
2171 install_dir : rootbindir)
2172public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002173
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002174exe = executable('systemd-notify',
2175 'src/notify/notify.c',
2176 include_directories : includes,
2177 link_with : [libshared],
2178 install_rpath : rootlibexecdir,
2179 install : true,
2180 install_dir : rootbindir)
2181public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002182
2183executable('systemd-volatile-root',
2184 'src/volatile-root/volatile-root.c',
2185 include_directories : includes,
2186 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002187 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002188 install : true,
2189 install_dir : rootlibexecdir)
2190
2191executable('systemd-cgroups-agent',
2192 'src/cgroups-agent/cgroups-agent.c',
2193 include_directories : includes,
2194 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002195 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002196 install : true,
2197 install_dir : rootlibexecdir)
2198
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002199exe = executable('systemd-path',
2200 'src/path/path.c',
2201 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002202 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002203 install_rpath : rootlibexecdir,
2204 install : true)
2205public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002206
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002207exe = executable('systemd-ask-password',
2208 'src/ask-password/ask-password.c',
2209 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002210 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002211 install_rpath : rootlibexecdir,
2212 install : true,
2213 install_dir : rootbindir)
2214public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002215
2216executable('systemd-reply-password',
2217 'src/reply-password/reply-password.c',
2218 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002219 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002220 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002221 install : true,
2222 install_dir : rootlibexecdir)
2223
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002224exe = executable('systemd-tty-ask-password-agent',
2225 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2226 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002227 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002228 install_rpath : rootlibexecdir,
2229 install : true,
2230 install_dir : rootbindir)
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-cgls',
2234 'src/cgls/cgls.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)
2239public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002240
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002241exe = executable('systemd-cgtop',
2242 'src/cgtop/cgtop.c',
2243 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002244 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002245 install_rpath : rootlibexecdir,
2246 install : true)
2247public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002248
2249executable('systemd-initctl',
2250 'src/initctl/initctl.c',
2251 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002252 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002253 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002254 install : true,
2255 install_dir : rootlibexecdir)
2256
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002257exe = executable('systemd-mount',
2258 'src/mount/mount-tool.c',
2259 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002260 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002261 install_rpath : rootlibexecdir,
2262 install : true)
2263public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002264
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002265meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002266 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002267
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002268exe = executable('systemd-run',
2269 'src/run/run.c',
2270 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002271 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002272 install_rpath : rootlibexecdir,
2273 install : true)
2274public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002275
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002276exe = executable('systemd-stdio-bridge',
2277 'src/stdio-bridge/stdio-bridge.c',
2278 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002279 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002280 install_rpath : rootlibexecdir,
2281 install : true)
2282public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002283
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002284exe = executable('busctl',
2285 'src/busctl/busctl.c',
2286 'src/busctl/busctl-introspect.c',
2287 'src/busctl/busctl-introspect.h',
2288 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002289 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002290 install_rpath : rootlibexecdir,
2291 install : true)
2292public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002293
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002294if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002295 exe = executable('systemd-sysusers',
2296 'src/sysusers/sysusers.c',
2297 include_directories : includes,
2298 link_with : [libshared],
2299 install_rpath : rootlibexecdir,
2300 install : true,
2301 install_dir : rootbindir)
2302 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002303endif
2304
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002305if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002306 exe = executable('systemd-tmpfiles',
2307 'src/tmpfiles/tmpfiles.c',
2308 include_directories : includes,
2309 link_with : [libshared],
2310 dependencies : [libacl],
2311 install_rpath : rootlibexecdir,
2312 install : true,
2313 install_dir : rootbindir)
2314 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002315
2316 test('test-systemd-tmpfiles',
2317 test_systemd_tmpfiles_py,
2318 args : exe.full_path())
2319 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002320endif
2321
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002322if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002323 exe = executable('systemd-hwdb',
2324 'src/hwdb/hwdb.c',
2325 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2326 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002327 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002328 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002329 install : true,
2330 install_dir : rootbindir)
2331 public_programs += [exe]
2332endif
2333
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002334if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002335 executable('systemd-quotacheck',
2336 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002337 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002338 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002339 install_rpath : rootlibexecdir,
2340 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002341 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002342endif
2343
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002344exe = executable('systemd-socket-proxyd',
2345 'src/socket-proxy/socket-proxyd.c',
2346 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002347 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002348 dependencies : [threads],
2349 install_rpath : rootlibexecdir,
2350 install : true,
2351 install_dir : rootlibexecdir)
2352public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002353
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002354exe = executable('systemd-udevd',
2355 systemd_udevd_sources,
2356 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002357 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002358 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002359 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002360 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002361 dependencies : [threads,
2362 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002363 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002364 libacl,
2365 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002366 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002367 install : true,
2368 install_dir : rootlibexecdir)
2369public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002370
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002371exe = executable('udevadm',
2372 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002373 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002374 include_directories : includes,
2375 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002376 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002377 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002378 dependencies : [threads,
2379 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002380 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002381 libacl,
2382 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002383 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002384 install : true,
2385 install_dir : rootbindir)
2386public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002387
2388executable('systemd-shutdown',
2389 systemd_shutdown_sources,
2390 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002391 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002392 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002393 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002394 install : true,
2395 install_dir : rootlibexecdir)
2396
2397executable('systemd-update-done',
2398 'src/update-done/update-done.c',
2399 include_directories : includes,
2400 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002401 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002402 install : true,
2403 install_dir : rootlibexecdir)
2404
2405executable('systemd-update-utmp',
2406 'src/update-utmp/update-utmp.c',
2407 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002408 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002409 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002410 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002411 install : true,
2412 install_dir : rootlibexecdir)
2413
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002414if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002415 executable('systemd-modules-load',
2416 'src/modules-load/modules-load.c',
2417 include_directories : includes,
2418 link_with : [libshared],
2419 dependencies : [libkmod],
2420 install_rpath : rootlibexecdir,
2421 install : true,
2422 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002423
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002424 meson.add_install_script('sh', '-c',
2425 mkdir_p.format(modulesloaddir))
2426 meson.add_install_script('sh', '-c',
2427 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002428endif
2429
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002430exe = executable('systemd-nspawn',
2431 systemd_nspawn_sources,
2432 'src/core/mount-setup.c', # FIXME: use a variable?
2433 'src/core/mount-setup.h',
2434 'src/core/loopback-setup.c',
2435 'src/core/loopback-setup.h',
2436 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002437 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002438 dependencies : [libacl,
2439 libblkid,
2440 libseccomp,
2441 libselinux],
2442 install_rpath : rootlibexecdir,
2443 install : true)
2444public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002445
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002446if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002447 executable('systemd-networkd',
2448 systemd_networkd_sources,
2449 include_directories : includes,
2450 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002451 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002452 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002453 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002454 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002455 install_rpath : rootlibexecdir,
2456 install : true,
2457 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002458
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002459 executable('systemd-networkd-wait-online',
2460 systemd_networkd_wait_online_sources,
2461 include_directories : includes,
2462 link_with : [libnetworkd_core,
2463 libshared],
2464 install_rpath : rootlibexecdir,
2465 install : true,
2466 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002467
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002468 exe = executable('networkctl',
2469 networkctl_sources,
2470 include_directories : includes,
2471 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002472 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002473 install_rpath : rootlibexecdir,
2474 install : true,
2475 install_dir : rootbindir)
2476 public_programs += [exe]
2477endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002478
2479executable('systemd-sulogin-shell',
2480 ['src/sulogin-shell/sulogin-shell.c'],
2481 include_directories : includes,
2482 link_with : [libshared],
2483 install_rpath : rootlibexecdir,
2484 install : true,
2485 install_dir : rootlibexecdir)
2486
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002487############################################################
2488
2489foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002490 sources = tuple[0]
2491 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2492 dependencies = tuple[2]
2493 condition = tuple.length() >= 4 ? tuple[3] : ''
2494 type = tuple.length() >= 5 ? tuple[4] : ''
2495 defs = tuple.length() >= 6 ? tuple[5] : []
2496 incs = tuple.length() >= 7 ? tuple[6] : includes
2497 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002498
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002499 name = sources[0].split('/')[-1].split('.')[0]
2500 if type.startswith('timeout=')
2501 timeout = type.split('=')[1].to_int()
2502 type = ''
2503 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002504 if want_tests == 'false'
2505 message('Not compiling @0@ because tests is set to false'.format(name))
2506 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002507 exe = executable(
2508 name,
2509 sources,
2510 include_directories : incs,
2511 link_with : link_with,
2512 dependencies : dependencies,
2513 c_args : defs,
2514 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002515 install : install_tests,
2516 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002517
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002518 if type == 'manual'
2519 message('@0@ is a manual test'.format(name))
2520 elif type == 'unsafe' and want_tests != 'unsafe'
2521 message('@0@ is an unsafe test'.format(name))
2522 else
2523 test(name, exe,
2524 env : test_env,
2525 timeout : timeout)
2526 endif
2527 else
2528 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2529 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002530endforeach
2531
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002532test_libsystemd_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002533 'test-libsystemd-sym',
2534 test_libsystemd_sym_c,
2535 include_directories : includes,
2536 link_with : [libsystemd],
2537 install : install_tests,
2538 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002539test('test-libsystemd-sym',
2540 test_libsystemd_sym)
2541
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002542test_libudev_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002543 'test-libudev-sym',
2544 test_libudev_sym_c,
2545 include_directories : includes,
2546 c_args : ['-Wno-deprecated-declarations'],
2547 link_with : [libudev],
2548 install : install_tests,
2549 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002550test('test-libudev-sym',
2551 test_libudev_sym)
2552
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002553############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002554
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002555fuzzer_exes = []
2556
2557foreach tuple : fuzzers
2558 sources = tuple[0]
2559 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2560 dependencies = tuple[2]
2561 defs = tuple.length() >= 4 ? tuple[3] : []
2562 incs = tuple.length() >= 5 ? tuple[4] : includes
2563
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002564 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002565 dependencies += fuzzing_engine
2566 else
2567 sources += 'src/fuzz/fuzz-main.c'
2568 endif
2569
2570 name = sources[0].split('/')[-1].split('.')[0]
2571
2572 fuzzer_exes += executable(
2573 name,
2574 sources,
2575 include_directories : [incs, include_directories('src/fuzz')],
2576 link_with : link_with,
2577 dependencies : dependencies,
2578 c_args : defs,
2579 install : false)
2580endforeach
2581
2582run_target('fuzzers',
2583 depends : fuzzer_exes,
2584 command : ['true'])
2585
2586############################################################
2587
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002588make_directive_index_py = find_program('tools/make-directive-index.py')
2589make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002590xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002591hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002592
2593subdir('units')
2594subdir('sysctl.d')
2595subdir('sysusers.d')
2596subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002597subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002598subdir('hwdb')
2599subdir('network')
2600subdir('man')
2601subdir('shell-completion/bash')
2602subdir('shell-completion/zsh')
Lennart Poettering2d684e62018-03-28 16:58:37 +02002603subdir('doc/sysvinit')
2604subdir('doc/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002605
2606# FIXME: figure out if the warning is true:
2607# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2608install_subdir('factory/etc',
2609 install_dir : factorydir)
2610
2611
2612install_data('xorg/50-systemd-user.sh',
2613 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002614install_data('modprobe.d/systemd.conf',
2615 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002616install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002617 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002618 'NEWS',
2619 'README',
2620 'doc/CODING_STYLE',
2621 'doc/DISTRO_PORTING',
2622 'doc/ENVIRONMENT.md',
2623 'doc/HACKING',
2624 'doc/TRANSIENT-SETTINGS.md',
2625 'doc/TRANSLATORS',
2626 'doc/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002627 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2628 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002629
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002630meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2631meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2632
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002633############################################################
2634
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002635meson_check_help = find_program('tools/meson-check-help.sh')
2636
2637foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002638 name = exec.full_path().split('/')[-1]
2639 test('check-help-' + name,
2640 meson_check_help,
2641 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002642endforeach
2643
2644############################################################
2645
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002646# Enable tests for all supported sanitizers
2647foreach tuple : sanitizers
2648 sanitizer = tuple[0]
2649 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002650
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002651 have = run_command(check_compilation_sh,
2652 cc.cmd_array(), '-x', 'c',
2653 '-fsanitize=@0@'.format(sanitizer),
2654 '-include', link_test_c).returncode() == 0
2655 message('@0@ sanitizer supported: @1@'.format(sanitizer, have ? 'yes' : 'no'))
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002656
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002657 if have
2658 prev = ''
2659 foreach p : fuzz_regression_tests
2660 b = p.split('/')[-2]
2661 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002662
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002663 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002664
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002665 if name != prev
2666 if want_tests == 'false'
2667 message('Not compiling @0@ because tests is set to false'.format(name))
2668 elif slow_tests
2669 exe = custom_target(
2670 name,
2671 output : name,
2672 depends : build,
2673 command : [env, 'ln', '-fs',
2674 join_paths(build.full_path(), b),
2675 '@OUTPUT@'],
2676 build_by_default : true)
2677 else
2678 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2679 endif
2680 endif
2681 prev = name
2682
2683 if want_tests != 'false' and slow_tests
2684 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2685 env,
2686 args : [exe.full_path(),
2687 join_paths(meson.source_root(),
2688 'test/fuzz-regressions',
2689 p)])
2690 endif
2691 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002692 endif
2693endforeach
2694
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002695
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002696############################################################
2697
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002698if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002699 all_files = run_command(
2700 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002701 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002702 'ls-files',
2703 ':/*.[ch]'])
2704 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002705
userwithuide85a6902017-08-09 13:41:44 +00002706 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002707 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002708 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002709 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002710 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002711 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002712 output : 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002713 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002714endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002715
2716if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002717 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002718 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002719 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002720 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002721endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002722
2723if git.found()
2724 git_head = run_command(
2725 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002726 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002727 'rev-parse', 'HEAD']).stdout().strip()
2728 git_head_short = run_command(
2729 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002730 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002731 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2732
2733 run_target(
2734 'git-snapshot',
2735 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002736 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002737 git_head_short),
2738 '--prefix', 'systemd-@0@/'.format(git_head),
2739 'HEAD'])
2740endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002741
2742############################################################
2743
Lennart Poettering51b13862017-12-20 12:51:14 +01002744meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2745run_target(
2746 'check-api-docs',
2747 depends : [man, libsystemd, libudev],
2748 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2749
2750############################################################
2751
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002752status = [
2753 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2754
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002755 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002756 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002757 'prefix directory: @0@'.format(prefixdir),
2758 'rootprefix directory: @0@'.format(rootprefixdir),
2759 'sysconf directory: @0@'.format(sysconfdir),
2760 'include directory: @0@'.format(includedir),
2761 'lib directory: @0@'.format(libdir),
2762 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002763 'SysV init scripts: @0@'.format(sysvinit_path),
2764 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002765 'PAM modules directory: @0@'.format(pamlibdir),
2766 'PAM configuration directory: @0@'.format(pamconfdir),
2767 'RPM macros directory: @0@'.format(rpmmacrosdir),
2768 'modprobe.d directory: @0@'.format(modprobedir),
2769 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2770 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2771 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2772 'bash completions directory: @0@'.format(bashcompletiondir),
2773 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002774 'extra start script: @0@'.format(get_option('rc-local')),
2775 'extra stop script: @0@'.format(get_option('halt-local')),
2776 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2777 get_option('debug-tty')),
2778 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002779 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002780 'maximum system UID: @0@'.format(system_uid_max),
2781 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002782 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2783 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2784 'minimum container UID base: @0@'.format(container_uid_base_min),
2785 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002786 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002787 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002788 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002789 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002790 'nobody user name: @0@'.format(nobody_user),
2791 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002792 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002793 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002794
2795 'default DNSSEC mode: @0@'.format(default_dnssec),
2796 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2797 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2798
2799alt_dns_servers = '\n '.join(dns_servers.split(' '))
2800alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2801status += [
2802 'default DNS servers: @0@'.format(alt_dns_servers),
2803 'default NTP servers: @0@'.format(alt_ntp_servers)]
2804
2805alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2806 '@@0@'.format(time_epoch)).stdout().strip()
2807status += [
2808 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2809
2810# TODO:
2811# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2812# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2813# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2814
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002815if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002816 status += [
2817 'efi arch: @0@'.format(efi_arch)]
2818
2819 if have_gnu_efi
2820 status += [
2821 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2822 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002823 'EFI lib directory: @0@'.format(efi_libdir),
2824 'EFI lds directory: @0@'.format(efi_ldsdir),
2825 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002826 endif
2827endif
2828
2829found = []
2830missing = []
2831
2832foreach tuple : [
2833 ['libcryptsetup'],
2834 ['PAM'],
2835 ['AUDIT'],
2836 ['IMA'],
2837 ['AppArmor'],
2838 ['SELinux'],
2839 ['SECCOMP'],
2840 ['SMACK'],
2841 ['zlib'],
2842 ['xz'],
2843 ['lz4'],
2844 ['bzip2'],
2845 ['ACL'],
2846 ['gcrypt'],
2847 ['qrencode'],
2848 ['microhttpd'],
2849 ['gnutls'],
2850 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002851 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002852 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002853 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002854 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002855 ['libiptc'],
2856 ['elfutils'],
2857 ['binfmt'],
2858 ['vconsole'],
2859 ['quotacheck'],
2860 ['tmpfiles'],
2861 ['environment.d'],
2862 ['sysusers'],
2863 ['firstboot'],
2864 ['randomseed'],
2865 ['backlight'],
2866 ['rfkill'],
2867 ['logind'],
2868 ['machined'],
2869 ['importd'],
2870 ['hostnamed'],
2871 ['timedated'],
2872 ['timesyncd'],
2873 ['localed'],
2874 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002875 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002876 ['coredump'],
2877 ['polkit'],
2878 ['legacy pkla', install_polkit_pkla],
2879 ['efi'],
2880 ['gnu-efi', have_gnu_efi],
2881 ['kmod'],
2882 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01002883 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002884 ['blkid'],
2885 ['dbus'],
2886 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002887 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002888 ['hwdb'],
2889 ['tpm'],
2890 ['man pages', want_man],
2891 ['html pages', want_html],
2892 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002893 ['SysV compat'],
2894 ['utmp'],
2895 ['ldconfig'],
2896 ['hibernate'],
2897 ['adm group', get_option('adm-group')],
2898 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002899 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002900 ['debug hashmap'],
2901 ['debug mmap cache'],
2902]
2903
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01002904 if tuple.length() >= 2
2905 cond = tuple[1]
2906 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002907 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2908 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002909 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002910 endif
2911 if cond
2912 found += [tuple[0]]
2913 else
2914 missing += [tuple[0]]
2915 endif
2916endforeach
2917
2918status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002919 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002920 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002921 '',
2922 'disabled features: @0@'.format(', '.join(missing)),
2923 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002924message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002925
2926if rootprefixdir != rootprefix_default
2927 message('WARNING:\n' +
2928 ' Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2929 ' systemd used fixed names for unit file directories and other paths, so anything\n' +
2930 ' except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
2931endif