blob: 426bd32991c69262d67f8191c1ed3c7282968728 [file] [log] [blame]
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01001# SPDX-License-Identifier: LGPL-2.1+
2#
3# Copyright 2017 Zbigniew Jędrzejewski-Szmek
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01004
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04005project('systemd', 'c',
Zbigniew Jędrzejewski-Szmekad6a0852018-03-05 17:12:48 +01006 version : '238',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04007 license : 'LGPLv2+',
8 default_options: [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04009 'c_std=gnu99',
10 'prefix=/usr',
11 'sysconfdir=/etc',
12 'localstatedir=/var',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040013 ],
Zbigniew Jędrzejewski-Szmek86ea8d72017-11-20 08:08:43 +010014 meson_version : '>= 0.41',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040015 )
16
Zbigniew Jędrzejewski-Szmekad6a0852018-03-05 17:12:48 +010017libsystemd_version = '0.22.0'
18libudev_version = '1.6.10'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020019
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040020# We need the same data in three different formats, ugh!
21# Also, for hysterical reasons, we use different variable
22# names, sometimes. Not all variables are included in every
23# set. Ugh, ugh, ugh!
24conf = configuration_data()
25conf.set_quoted('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version())
26conf.set_quoted('PACKAGE_VERSION', meson.project_version())
27
28substs = configuration_data()
29substs.set('PACKAGE_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
30substs.set('PACKAGE_VERSION', meson.project_version())
31
32m4_defines = []
33
34#####################################################################
35
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040036# Try to install the git pre-commit hook
37git_hook = run_command(join_paths(meson.source_root(), 'tools/add-git-hook.sh'))
38if git_hook.returncode() == 0
39 message(git_hook.stdout().strip())
40endif
41
42#####################################################################
43
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010044if get_option('split-usr') == 'auto'
45 split_usr = run_command('test', '-L', '/bin').returncode() != 0
46else
47 split_usr = get_option('split-usr') == 'true'
48endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010049conf.set10('HAVE_SPLIT_USR', split_usr,
50 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010051
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010052if get_option('split-bin') == 'auto'
53 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
54else
55 split_bin = get_option('split-bin') == 'true'
56endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010057conf.set10('HAVE_SPLIT_BIN', split_bin,
58 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010059
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010060rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010061# Unusual rootprefixdir values are used by some distros
62# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010063rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010064if rootprefixdir == ''
65 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010066endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040067
68sysvinit_path = get_option('sysvinit-path')
69sysvrcnd_path = get_option('sysvrcnd-path')
Max Harmathy54248242017-12-15 16:05:25 +010070have = sysvinit_path != '' and sysvrcnd_path != ''
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020071conf.set10('HAVE_SYSV_COMPAT', have,
72 description : 'SysV init scripts and rcN.d links are supported')
73m4_defines += have ? ['-DHAVE_SYSV_COMPAT'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040074
75# join_paths ignore the preceding arguments if an absolute component is
76# encountered, so this should canonicalize various paths when they are
77# absolute or relative.
78prefixdir = get_option('prefix')
79if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040080 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040081endif
82bindir = join_paths(prefixdir, get_option('bindir'))
83libdir = join_paths(prefixdir, get_option('libdir'))
84sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
85includedir = join_paths(prefixdir, get_option('includedir'))
86datadir = join_paths(prefixdir, get_option('datadir'))
87localstatedir = join_paths('/', get_option('localstatedir'))
88
89rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010090rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040091rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
92
93rootlibdir = get_option('rootlibdir')
94if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040095 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040096endif
97
98# Dirs of external packages
Michael Bieble17e5ba2017-04-13 10:30:56 -040099pkgconfigdatadir = join_paths(datadir, 'pkgconfig')
100pkgconfiglibdir = join_paths(libdir, 'pkgconfig')
101polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
102polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
103polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
104varlogdir = join_paths(localstatedir, 'log')
105xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900106rpmmacrosdir = get_option('rpmmacrosdir')
107if rpmmacrosdir != 'no'
108 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
109endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200110modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400111
112# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400113pkgdatadir = join_paths(datadir, 'systemd')
114environmentdir = join_paths(prefixdir, 'lib/environment.d')
115pkgsysconfdir = join_paths(sysconfdir, 'systemd')
116userunitdir = join_paths(prefixdir, 'lib/systemd/user')
117userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
118tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
119sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
120sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
121binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
122modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
123networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
124pkgincludedir = join_paths(includedir, 'systemd')
125systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
126usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
127systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
128userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
129systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
130systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
131systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
132systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
133udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
134udevhomedir = udevlibexecdir
135udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
136udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
137catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
138kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
139factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400140bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
141testsdir = join_paths(prefixdir, 'lib/systemd/tests')
142systemdstatedir = join_paths(localstatedir, 'lib/systemd')
143catalogstatedir = join_paths(systemdstatedir, 'catalog')
144randomseeddir = join_paths(localstatedir, 'lib/systemd')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400145
tblume75aaade2018-02-01 22:46:15 +0100146docdir = get_option('docdir')
147if docdir == ''
148 docdir = join_paths(datadir, 'doc/systemd')
149endif
150
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400151dbuspolicydir = get_option('dbuspolicydir')
152if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400153 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400154endif
155
156dbussessionservicedir = get_option('dbussessionservicedir')
157if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400158 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400159endif
160
161dbussystemservicedir = get_option('dbussystemservicedir')
162if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400163 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400164endif
165
166pamlibdir = get_option('pamlibdir')
167if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400168 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400169endif
170
171pamconfdir = get_option('pamconfdir')
172if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400173 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400174endif
175
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100176memory_accounting_default = get_option('memory-accounting-default')
177
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400178conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400179conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400180conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
181conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
182conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400183conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
184conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100185
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100186conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100187
Michael Bieble17e5ba2017-04-13 10:30:56 -0400188conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400189conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
190conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400191conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
192conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
193conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
194conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100195conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100196conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400197conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
198conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
199conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
200conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
201conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100202conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400203conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400204conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
205conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400206conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
207conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
208conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
209conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
210conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
211conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400212conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
213conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400214conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400215conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400216conf.set_quoted('LIBDIR', libdir)
217conf.set_quoted('ROOTLIBDIR', rootlibdir)
218conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
219conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400220conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
221conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
222conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
223conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
224conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
225conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100226conf.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'true' : 'false')
Michal Koutný7f672e82018-03-09 18:27:13 +0100227conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400228
229conf.set_quoted('ABS_BUILD_DIR', meson.build_root())
230conf.set_quoted('ABS_SRC_DIR', meson.source_root())
231
232substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400233substs.set('exec_prefix', prefixdir)
234substs.set('libdir', libdir)
235substs.set('rootlibdir', rootlibdir)
236substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400237substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400238substs.set('bindir', bindir)
239substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400240substs.set('rootlibexecdir', rootlibexecdir)
241substs.set('systemunitdir', systemunitdir)
242substs.set('userunitdir', userunitdir)
243substs.set('systempresetdir', systempresetdir)
244substs.set('userpresetdir', userpresetdir)
245substs.set('udevhwdbdir', udevhwdbdir)
246substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400247substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400248substs.set('catalogdir', catalogdir)
249substs.set('tmpfilesdir', tmpfilesdir)
250substs.set('sysusersdir', sysusersdir)
251substs.set('sysctldir', sysctldir)
252substs.set('binfmtdir', binfmtdir)
253substs.set('modulesloaddir', modulesloaddir)
254substs.set('systemgeneratordir', systemgeneratordir)
255substs.set('usergeneratordir', usergeneratordir)
256substs.set('systemenvgeneratordir', systemenvgeneratordir)
257substs.set('userenvgeneratordir', userenvgeneratordir)
258substs.set('systemshutdowndir', systemshutdowndir)
259substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400260substs.set('VARLOGDIR', varlogdir)
261substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400262substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
263substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400264substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
265substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
266substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
267substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100268substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400269
270#####################################################################
271
272cc = meson.get_compiler('c')
273pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400274check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100275meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400276
Adam Duskett08318a22018-01-15 06:25:46 -0500277if get_option('tests') != 'false'
278 cxx = find_program('c++', required : false)
279 if cxx.found()
280 # Used only for tests
281 add_languages('cpp')
282 endif
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400283endif
284
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500285want_ossfuzz = get_option('oss-fuzz')
286want_libfuzzer = get_option('llvm-fuzz')
287fuzzer_build = want_ossfuzz or want_libfuzzer
288if want_ossfuzz and want_libfuzzer
289 error('only one of oss-fuzz and llvm-fuzz can be specified')
290endif
291if want_libfuzzer
292 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
293endif
294if want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500295 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
296endif
297
Zbigniew Jędrzejewski-Szmek75cf1d62017-07-04 17:59:15 -0400298foreach arg : ['-Wextra',
Zbigniew Jędrzejewski-Szmek70160ce2017-10-03 12:11:49 +0200299 '-Werror=undef',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400300 '-Wlogical-op',
301 '-Wmissing-include-dirs',
302 '-Wold-style-definition',
303 '-Wpointer-arith',
304 '-Winit-self',
305 '-Wdeclaration-after-statement',
306 '-Wfloat-equal',
307 '-Wsuggest-attribute=noreturn',
308 '-Werror=missing-prototypes',
309 '-Werror=implicit-function-declaration',
310 '-Werror=missing-declarations',
311 '-Werror=return-type',
312 '-Werror=incompatible-pointer-types',
313 '-Werror=format=2',
314 '-Wstrict-prototypes',
315 '-Wredundant-decls',
316 '-Wmissing-noreturn',
Zbigniew Jędrzejewski-Szmek97279d82017-11-20 14:23:40 +0100317 '-Wimplicit-fallthrough=5',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400318 '-Wshadow',
319 '-Wendif-labels',
320 '-Wstrict-aliasing=2',
321 '-Wwrite-strings',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400322 '-Werror=overflow',
323 '-Wdate-time',
324 '-Wnested-externs',
325 '-ffast-math',
326 '-fno-common',
327 '-fdiagnostics-show-option',
328 '-fno-strict-aliasing',
329 '-fvisibility=hidden',
330 '-fstack-protector',
331 '-fstack-protector-strong',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400332 '--param=ssp-buffer-size=4',
333 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400334 if cc.has_argument(arg)
335 add_project_arguments(arg, language : 'c')
336 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400337endforeach
338
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500339# the oss-fuzz fuzzers are not built with -fPIE, so don't
340# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500341if not fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500342 if cc.has_argument('-fPIE')
343 add_project_arguments('-fPIE', language : 'c')
344 endif
345endif
346
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400347# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
348# arguments, just emits a warnings. So test for the "positive" version instead.
349foreach arg : ['unused-parameter',
350 'missing-field-initializers',
351 'unused-result',
Zbigniew Jędrzejewski-Szmekfb1b5882017-09-04 19:49:12 +0300352 'format-signedness',
353 'error=nonnull', # work-around for gcc 7.1 turning this on on its own
354 ]
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400355 if cc.has_argument('-W' + arg)
356 add_project_arguments('-Wno-' + arg, language : 'c')
357 endif
358endforeach
359
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800360if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400361 #include <time.h>
362 #include <inttypes.h>
363 typedef uint64_t usec_t;
364 usec_t now(clockid_t clock);
365 int main(void) {
366 struct timespec now;
367 return 0;
368 }
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800369''', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400370 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400371endif
372
373if cc.get_id() == 'clang'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400374 foreach arg : ['-Wno-typedef-redefinition',
375 '-Wno-gnu-variable-sized-type-not-at-end',
376 ]
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400377 if cc.has_argument(arg,
378 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400379 add_project_arguments(arg, language : 'c')
380 endif
381 endforeach
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400382endif
383
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400384link_test_c = files('tools/meson-link-test.c')
385
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400386# --as-needed and --no-undefined are provided by meson by default,
387# run mesonconf to see what is enabled
388foreach arg : ['-Wl,-z,relro',
389 '-Wl,-z,now',
390 '-pie',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400391 ]
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400392
393 have = run_command(check_compilation_sh,
394 cc.cmd_array(), '-x', 'c', arg,
395 '-include', link_test_c).returncode() == 0
396 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500397 if have and (arg != '-pie' or not fuzzer_build)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400398 add_project_link_arguments(arg, language : 'c')
399 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400400endforeach
401
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400402if get_option('buildtype') != 'debug'
403 foreach arg : ['-ffunction-sections',
404 '-fdata-sections']
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400405 if cc.has_argument(arg,
406 name : '@0@ is supported'.format(arg))
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400407 add_project_arguments(arg, language : 'c')
408 endif
409 endforeach
410
411 foreach arg : ['-Wl,--gc-sections']
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400412 have = run_command(check_compilation_sh,
413 cc.cmd_array(), '-x', 'c', arg,
414 '-include', link_test_c).returncode() == 0
415 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
416 if have
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400417 add_project_link_arguments(arg, language : 'c')
418 endif
419 endforeach
420endif
421
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400422cpp = ' '.join(cc.cmd_array()) + ' -E'
423
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400424#####################################################################
425# compilation result tests
426
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400427conf.set('_GNU_SOURCE', true)
428conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400429
430conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
431conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
432conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
433conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
434conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
435conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
436conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
437
438decl_headers = '''
439#include <uchar.h>
440#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000441#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100442#include <linux/stat.h>
443#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400444'''
445# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
446
447foreach decl : ['char16_t',
448 'char32_t',
449 'key_serial_t',
450 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000451 'struct fib_rule_uid_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100452 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400453 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400454
455 # We get -1 if the size cannot be determined
456 have = cc.sizeof(decl, prefix : decl_headers) > 0
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200457 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400458endforeach
459
460foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
461 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
462 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
463 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530464 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400465 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
466 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
467 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
468 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
469 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530470 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400471 # if_tunnel.h is buggy and cannot be included on its own
472 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
473 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
474 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
475 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
476 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
477 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
478 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530479 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400480 ['NDA_IFINDEX', 'linux/neighbour.h'],
481 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000482 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400483 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530484 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400485 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400486 prefix = decl.length() > 2 ? decl[2] : ''
487 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200488 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400489endforeach
490
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400491foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200492 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400493endforeach
494
495foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100496 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100497 ['gettid', '''#include <sys/types.h>
498 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100499 ['pivot_root', '''#include <stdlib.h>
500 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100501 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400502 #include <sys/stat.h>
503 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100504 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100505 ['renameat2', '''#include <stdio.h>
506 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400507 ['kcmp', '''#include <linux/kcmp.h>'''],
508 ['keyctl', '''#include <sys/types.h>
509 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100510 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400511 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200512 ['bpf', '''#include <sys/syscall.h>
513 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100514 ['statx', '''#include <sys/types.h>
515 #include <sys/stat.h>
516 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100517 ['explicit_bzero' , '''#include <string.h>'''],
518 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400519]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400520
Lennart Poettering85db59b2017-12-25 12:01:14 +0100521 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200522 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400523endforeach
524
Lennart Poettering85db59b2017-12-25 12:01:14 +0100525if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200526 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200527 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400528else
529 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200530 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200531 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400532endif
533
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400534#####################################################################
535
536sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400537awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400538m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400539stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400540git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100541env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100542perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400543
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400544meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400545mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400546test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
547splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400548
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400549# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
550# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500551progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400552 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400553 ['kmod', '/usr/bin/kmod' ],
554 ['kexec', '/usr/sbin/kexec' ],
555 ['sulogin', '/usr/sbin/sulogin' ],
556 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
557 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
558 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
559 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
560 ]
561foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400562 path = get_option(prog[0] + '-path')
563 if path != ''
564 message('Using @1@ for @0@'.format(prog[0], path))
565 else
566 exe = find_program(prog[0],
567 '/usr/sbin/' + prog[0],
568 '/sbin/' + prog[0],
569 required: false)
570 path = exe.found() ? exe.path() : prog[1]
571 endif
572 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
573 conf.set_quoted(name, path)
574 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400575endforeach
576
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500577conf.set_quoted('TELINIT', get_option('telinit-path'))
578
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400579if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100580 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400581endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400582
583############################################################
584
585gperf = find_program('gperf')
586
587gperf_test_format = '''
588#include <string.h>
589const char * in_word_set(const char *, @0@);
590@1@
591'''
592gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
593gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
594gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
595if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400596 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400597else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400598 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
599 if cc.compiles(gperf_test)
600 gperf_len_type = 'unsigned'
601 else
602 error('unable to determine gperf len type')
603 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400604endif
605message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400606conf.set('GPERF_LEN_TYPE', gperf_len_type,
607 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400608
609############################################################
610
611if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400612 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400613endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100614foreach header : ['crypt.h',
615 'linux/btrfs.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400616 'linux/memfd.h',
617 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200618 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400619 'valgrind/memcheck.h',
620 'valgrind/valgrind.h',
621 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400622
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200623 conf.set10('HAVE_' + header.underscorify().to_upper(),
624 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400625endforeach
626
627############################################################
628
629conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400630conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
631gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400632
633default_hierarchy = get_option('default-hierarchy')
634conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
635 description : 'default cgroup hierarchy as string')
636if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400637 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400638elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400639 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400640else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400641 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400642endif
643
644time_epoch = get_option('time-epoch')
645if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400646 NEWS = files('NEWS')
647 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400648endif
649time_epoch = time_epoch.to_int()
650conf.set('TIME_EPOCH', time_epoch)
651
652system_uid_max = get_option('system-uid-max')
653if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400654 system_uid_max = run_command(
655 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800656 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
657 '/etc/login.defs').stdout().strip()
658 if system_uid_max == ''
659 system_uid_max = '999'
660 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400661endif
662system_uid_max = system_uid_max.to_int()
663conf.set('SYSTEM_UID_MAX', system_uid_max)
664substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400665message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400666
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400667system_gid_max = get_option('system-gid-max')
668if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400669 system_gid_max = run_command(
670 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800671 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
672 '/etc/login.defs').stdout().strip()
673 if system_gid_max == ''
674 system_gid_max = '999'
675 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400676endif
677system_gid_max = system_gid_max.to_int()
678conf.set('SYSTEM_GID_MAX', system_gid_max)
679substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400680message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400681
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100682dynamic_uid_min = get_option('dynamic-uid-min').to_int()
683dynamic_uid_max = get_option('dynamic-uid-max').to_int()
684conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
685conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
686substs.set('dynamicuidmin', dynamic_uid_min)
687substs.set('dynamicuidmax', dynamic_uid_max)
688
689container_uid_base_min = get_option('container-uid-base-min').to_int()
690container_uid_base_max = get_option('container-uid-base-max').to_int()
691conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
692conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
693substs.set('containeruidbasemin', container_uid_base_min)
694substs.set('containeruidbasemax', container_uid_base_max)
695
Lennart Poetteringafde4572017-12-05 11:00:24 +0100696nobody_user = get_option('nobody-user')
697nobody_group = get_option('nobody-group')
698
699getent_result = run_command('getent', 'passwd', '65534')
700if getent_result.returncode() == 0
701 name = getent_result.stdout().split(':')[0]
702 if name != nobody_user
703 message('WARNING:\n' +
704 ' The local user with the UID 65534 does not match the configured user name "@0@" of the nobody user (its name is @1@).\n'.format(nobody_user, name) +
705 ' Your build will result in an user table setup that is incompatible with the local system.')
706 endif
707endif
708id_result = run_command('id', '-u', nobody_user)
709if id_result.returncode() == 0
710 id = id_result.stdout().to_int()
711 if id != 65534
712 message('WARNING:\n' +
713 ' The local user with the configured user name "@0@" of the nobody user does not have UID 65534 (it has @1@).\n'.format(nobody_user, id) +
714 ' Your build will result in an user table setup that is incompatible with the local system.')
715 endif
716endif
717
718getent_result = run_command('getent', 'group', '65534')
719if getent_result.returncode() == 0
720 name = getent_result.stdout().split(':')[0]
721 if name != nobody_group
722 message('WARNING:\n' +
723 ' The local group with the GID 65534 does not match the configured group name "@0@" of the nobody group (its name is @1@).\n'.format(nobody_group, name) +
724 ' Your build will result in an group table setup that is incompatible with the local system.')
725 endif
726endif
727id_result = run_command('id', '-g', nobody_group)
728if id_result.returncode() == 0
729 id = id_result.stdout().to_int()
730 if id != 65534
731 message('WARNING:\n' +
732 ' The local group with the configured group name "@0@" of the nobody group does not have UID 65534 (it has @1@).\n'.format(nobody_group, id) +
733 ' Your build will result in an group table setup that is incompatible with the local system.')
734 endif
735endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900736if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
737 message('WARNING:\n' +
738 ' The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
739 ' Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
740endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100741
742conf.set_quoted('NOBODY_USER_NAME', nobody_user)
743conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900744substs.set('NOBODY_USER_NAME', nobody_user)
745substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100746
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400747tty_gid = get_option('tty-gid')
748conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400749substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400750
Ikey Doherty84786b82017-12-03 12:28:23 +0000751# Ensure provided GID argument is numeric, otherwise fallback to default assignment
752if get_option('users-gid') != ''
Yu Watanabed6806872017-12-05 14:01:39 +0900753 users_gid = get_option('users-gid').to_int()
Ikey Doherty84786b82017-12-03 12:28:23 +0000754else
Yu Watanabed6806872017-12-05 14:01:39 +0900755 users_gid = '-'
Ikey Doherty84786b82017-12-03 12:28:23 +0000756endif
757substs.set('USERS_GID', users_gid)
758
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400759if get_option('adm-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400760 m4_defines += ['-DENABLE_ADM_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400761endif
762
763if get_option('wheel-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400764 m4_defines += ['-DENABLE_WHEEL_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400765endif
766
767substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700768substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400769
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400770kill_user_processes = get_option('default-kill-user-processes')
771conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100772conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400773substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400774
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400775dns_servers = get_option('dns-servers')
776conf.set_quoted('DNS_SERVERS', dns_servers)
777substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400778
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400779ntp_servers = get_option('ntp-servers')
780conf.set_quoted('NTP_SERVERS', ntp_servers)
781substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400782
783conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
784
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400785substs.set('SUSHELL', get_option('debug-shell'))
786substs.set('DEBUGTTY', get_option('debug-tty'))
787
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400788debug = get_option('debug')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200789enable_debug_hashmap = false
790enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400791if debug != ''
792 foreach name : debug.split(',')
793 if name == 'hashmap'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200794 enable_debug_hashmap = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400795 elif name == 'mmap-cache'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200796 enable_debug_mmap_cache = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400797 else
798 message('unknown debug option "@0@", ignoring'.format(name))
799 endif
800 endforeach
801endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200802conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
803conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400804
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400805#####################################################################
806
807threads = dependency('threads')
808librt = cc.find_library('rt')
809libm = cc.find_library('m')
810libdl = cc.find_library('dl')
811libcrypt = cc.find_library('crypt')
812
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400813libcap = dependency('libcap', required : false)
814if not libcap.found()
815 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
816 libcap = cc.find_library('cap')
817endif
818
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400819libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100820 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400821
822want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500823if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400824 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400825 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400826 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200827 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400828else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200829 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400830 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400831endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200832conf.set10('HAVE_SECCOMP', have)
833m4_defines += have ? ['-DHAVE_SECCOMP'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400834
835want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500836if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400837 libselinux = dependency('libselinux',
838 version : '>= 2.1.9',
839 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200840 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400841else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200842 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400843 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400844endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200845conf.set10('HAVE_SELINUX', have)
846m4_defines += have ? ['-DHAVE_SELINUX'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400847
848want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500849if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400850 libapparmor = dependency('libapparmor',
851 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200852 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400853else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200854 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400855 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400856endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200857conf.set10('HAVE_APPARMOR', have)
858m4_defines += have ? ['-DHAVE_APPARMOR'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400859
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400860smack_run_label = get_option('smack-run-label')
861if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400862 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
863 m4_defines += ['-DHAVE_SMACK_RUN_LABEL']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400864endif
865
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400866want_polkit = get_option('polkit')
867install_polkit = false
868install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500869if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400870 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400871
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400872 libpolkit = dependency('polkit-gobject-1',
873 required : false)
874 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
875 message('Old polkit detected, will install pkla files')
876 install_polkit_pkla = true
877 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400878endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200879conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400880
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400881want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500882if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400883 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200884 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400885else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200886 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400887 libacl = []
888endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200889conf.set10('HAVE_ACL', have)
890m4_defines += have ? ['-DHAVE_ACL'] : []
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400891
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400892want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500893if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400894 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200895 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400896else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200897 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400898 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400899endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200900conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400901
902want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500903if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400904 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200905 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400906else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200907 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400908 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400909endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200910conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400911
912want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500913if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400914 libkmod = dependency('libkmod',
915 version : '>= 15',
916 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200917 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400918else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200919 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400920 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400921endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200922conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400923
924want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500925if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400926 libpam = cc.find_library('pam', required : want_pam == 'true')
927 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200928 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400929else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200930 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400931 libpam = []
932 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400933endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200934conf.set10('HAVE_PAM', have)
935m4_defines += have ? ['-DHAVE_PAM'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400936
937want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500938if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400939 libmicrohttpd = dependency('libmicrohttpd',
940 version : '>= 0.9.33',
941 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200942 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400943else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200944 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400945 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400946endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200947conf.set10('HAVE_MICROHTTPD', have)
948m4_defines += have ? ['-DHAVE_MICROHTTPD'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400949
950want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500951if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400952 libcryptsetup = dependency('libcryptsetup',
953 version : '>= 1.6.0',
954 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200955 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400956else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200957 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400958 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400959endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200960conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400961
962want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500963if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400964 libcurl = dependency('libcurl',
965 version : '>= 7.32.0',
966 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200967 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400968else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200969 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400970 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400971endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200972conf.set10('HAVE_LIBCURL', have)
973m4_defines += have ? ['-DHAVE_LIBCURL'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400974
975want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400976want_libidn2 = get_option('libidn2')
977if want_libidn == 'true' and want_libidn2 == 'true'
978 error('libidn and libidn2 cannot be requested simultaneously')
979endif
980
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500981if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400982 libidn = dependency('libidn',
983 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200984 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400985else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200986 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400987 libidn = []
988endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200989conf.set10('HAVE_LIBIDN', have)
990m4_defines += have ? ['-DHAVE_LIBIDN'] : []
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500991if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400992 # libidn is used for both libidn and libidn2 objects
993 libidn = dependency('libidn2',
994 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200995 have = libidn.found()
996else
997 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400998endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200999conf.set10('HAVE_LIBIDN2', have)
1000m4_defines += have ? ['-DHAVE_LIBIDN2'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001001
1002want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001003if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001004 libiptc = dependency('libiptc',
1005 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001006 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001007else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001008 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001009 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001010endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001011conf.set10('HAVE_LIBIPTC', have)
1012m4_defines += have ? ['-DHAVE_LIBIPTC'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001013
1014want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001015if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001016 libqrencode = dependency('libqrencode',
1017 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001018 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001019else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001020 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001021 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001022endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001023conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001024
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001025want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001026if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001027 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1028 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001029 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001030else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001031 have = false
1032endif
1033if not have
1034 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001035 libgcrypt = []
1036 libgpg_error = []
1037endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001038conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001039
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001040want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001041if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001042 libgnutls = dependency('gnutls',
1043 version : '>= 3.1.4',
1044 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001045 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001046else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001047 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001048 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001049endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001050conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001051
1052want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001053if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001054 libdw = dependency('libdw',
1055 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001056 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001057else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001058 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001059 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001060endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001061conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001062
1063want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001064if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001065 libz = dependency('zlib',
1066 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001067 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001068else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001069 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001070 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001071endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001072conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001073
1074want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001075if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001076 libbzip2 = cc.find_library('bz2',
1077 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001078 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001079else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001080 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001081 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001082endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001083conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001084
1085want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001086if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001087 libxz = dependency('liblzma',
1088 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001089 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001090else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001091 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001092 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001093endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001094conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001095
1096want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001097if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001098 liblz4 = dependency('liblz4',
1099 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001100 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001101else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001102 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001103 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001104endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001105conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001106
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001107want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001108if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001109 libxkbcommon = dependency('xkbcommon',
1110 version : '>= 0.3.0',
1111 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001112 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001113else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001114 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001115 libxkbcommon = []
1116endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001117conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001118
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001119want_pcre2 = get_option('pcre2')
1120if want_pcre2 != 'false'
1121 libpcre2 = dependency('libpcre2-8',
1122 required : want_pcre2 == 'true')
1123 have = libpcre2.found()
1124else
1125 have = false
1126 libpcre2 = []
1127endif
1128conf.set10('HAVE_PCRE2', have)
1129
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001130want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001131if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001132 libglib = dependency('glib-2.0',
1133 version : '>= 2.22.0',
1134 required : want_glib == 'true')
1135 libgobject = dependency('gobject-2.0',
1136 version : '>= 2.22.0',
1137 required : want_glib == 'true')
1138 libgio = dependency('gio-2.0',
1139 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001140 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001141else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001142 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001143 libglib = []
1144 libgobject = []
1145 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001146endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001147conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001148
1149want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001150if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001151 libdbus = dependency('dbus-1',
1152 version : '>= 1.3.2',
1153 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001154 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001155else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001156 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001157 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001158endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001159conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001160
Yu Watanabe42303dc2017-06-18 05:22:32 +09001161default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001162if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001163 default_dnssec = 'no'
1164endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001165if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001166 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1167 default_dnssec = 'no'
1168endif
1169conf.set('DEFAULT_DNSSEC_MODE',
1170 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1171substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1172
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001173want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001174if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001175 have = (conf.get('HAVE_LIBCURL') == 1 and
1176 conf.get('HAVE_ZLIB') == 1 and
1177 conf.get('HAVE_BZIP2') == 1 and
1178 conf.get('HAVE_XZ') == 1 and
1179 conf.get('HAVE_GCRYPT') == 1)
1180 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001181 error('importd support was requested, but dependencies are not available')
1182 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001183else
1184 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001185endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001186conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001187
1188want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001189if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001190 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1191 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001192 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1193 # it's possible to build one without the other. Complain only if
1194 # support was explictly requested. The auxiliary files like sysusers
1195 # config should be installed when any of the programs are built.
1196 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1197 error('remote support was requested, but dependencies are not available')
1198 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001199 have = have_deps[0] or have_deps[1]
1200else
1201 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001202endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001203conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001204
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001205foreach term : ['utmp',
1206 'hibernate',
1207 'environment-d',
1208 'binfmt',
1209 'coredump',
1210 'resolve',
1211 'logind',
1212 'hostnamed',
1213 'localed',
1214 'machined',
1215 'networkd',
1216 'timedated',
1217 'timesyncd',
1218 'myhostname',
1219 'firstboot',
1220 'randomseed',
1221 'backlight',
1222 'vconsole',
1223 'quotacheck',
1224 'sysusers',
1225 'tmpfiles',
1226 'hwdb',
1227 'rfkill',
1228 'ldconfig',
1229 'efi',
1230 'tpm',
1231 'ima',
1232 'smack',
1233 'gshadow',
1234 'idn',
1235 'nss-systemd']
1236 have = get_option(term)
1237 name = 'ENABLE_' + term.underscorify().to_upper()
1238 conf.set10(name, have)
1239 m4_defines += have ? ['-D' + name] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001240endforeach
1241
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001242want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001243install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001244slow_tests = get_option('slow-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001245tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001246fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001247
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001248conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001249
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001250#####################################################################
1251
1252if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001253 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001254
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001255 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001256 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001257 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001258 elif efi_arch == 'x86_64'
1259 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001260 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001261 elif efi_arch == 'arm'
1262 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001263 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001264 elif efi_arch == 'aarch64'
1265 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001266 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001267 else
1268 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001269 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001270 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001271
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001272 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001273 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001274
1275 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001276else
1277 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001278endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001279conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001280
1281#####################################################################
1282
1283config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001284 output : 'config.h',
1285 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001286
1287includes = include_directories('src/basic',
1288 'src/shared',
1289 'src/systemd',
1290 'src/journal',
1291 'src/resolve',
1292 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001293 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001294 'src/login',
1295 'src/udev',
1296 'src/libudev',
1297 'src/core',
1298 'src/libsystemd/sd-bus',
1299 'src/libsystemd/sd-device',
1300 'src/libsystemd/sd-hwdb',
1301 'src/libsystemd/sd-id128',
1302 'src/libsystemd/sd-netlink',
1303 'src/libsystemd/sd-network',
1304 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001305 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001306
1307add_project_arguments('-include', 'config.h', language : 'c')
1308
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001309subdir('po')
1310subdir('catalog')
1311subdir('src/systemd')
1312subdir('src/basic')
1313subdir('src/libsystemd')
1314subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001315subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001316subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001317
1318libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001319 'journal-core',
1320 libjournal_core_sources,
1321 journald_gperf_c,
1322 include_directories : includes,
1323 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001324
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001325libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001326libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001327 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001328 'src/systemd/sd-id128.h', # pick a header file at random to work around old meson bug
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001329 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001330 include_directories : includes,
1331 link_args : ['-shared',
1332 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001333 link_with : [libbasic,
1334 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001335 link_whole : [libsystemd_static,
1336 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001337 dependencies : [threads,
1338 librt,
1339 libxz,
1340 liblz4],
1341 link_depends : libsystemd_sym,
1342 install : true,
1343 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001344
1345############################################################
1346
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001347# binaries that have --help and are intended for use by humans,
1348# usually, but not always, installed in /bin.
1349public_programs = []
1350
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001351subdir('src/libudev')
1352subdir('src/shared')
1353subdir('src/core')
1354subdir('src/udev')
1355subdir('src/network')
1356
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001357subdir('src/analyze')
1358subdir('src/journal-remote')
1359subdir('src/coredump')
1360subdir('src/hostname')
1361subdir('src/import')
1362subdir('src/kernel-install')
1363subdir('src/locale')
1364subdir('src/machine')
1365subdir('src/nspawn')
1366subdir('src/resolve')
1367subdir('src/timedate')
1368subdir('src/timesync')
1369subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001370subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001371
1372subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001373subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001374subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001375subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001376
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001377############################################################
1378
1379# only static linking apart from libdl, to make sure that the
1380# module is linked to all libraries that it uses.
1381test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001382 'test-dlopen',
1383 test_dlopen_c,
1384 include_directories : includes,
1385 link_with : [libbasic],
1386 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001387
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001388foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001389 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001390 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001391 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001392
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001393 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001394 if condition
1395 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001396
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001397 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1398 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001399
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001400 nss = shared_library(
1401 'nss_' + module,
1402 'src/nss-@0@/nss-@0@.c'.format(module),
1403 version : '2',
1404 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001405 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1406 link_args : ['-Wl,-z,nodelete',
1407 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001408 '-Wl,--version-script=' + version_script_arg,
1409 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001410 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001411 libbasic],
1412 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001413 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001414 link_depends : sym,
1415 install : true,
1416 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001417
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001418 # We cannot use shared_module because it does not support version suffix.
1419 # Unfortunately shared_library insists on creating the symlink…
1420 meson.add_install_script('sh', '-c',
1421 'rm $DESTDIR@0@/libnss_@1@.so'
1422 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001423
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001424 test('dlopen-nss_' + module,
1425 test_dlopen,
1426 args : [nss.full_path()]) # path to dlopen must include a slash
1427 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001428endforeach
1429
1430############################################################
1431
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001432executable('systemd',
1433 systemd_sources,
1434 include_directories : includes,
1435 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001436 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001437 dependencies : [threads,
1438 librt,
1439 libseccomp,
1440 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001441 libmount,
1442 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001443 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001444 install : true,
1445 install_dir : rootlibexecdir)
1446
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001447meson.add_install_script(meson_make_symlink,
1448 join_paths(rootlibexecdir, 'systemd'),
1449 join_paths(rootsbindir, 'init'))
1450
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001451exe = executable('systemd-analyze',
1452 systemd_analyze_sources,
1453 include_directories : includes,
1454 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001455 libshared],
1456 dependencies : [threads,
1457 librt,
1458 libseccomp,
1459 libselinux,
1460 libmount,
1461 libblkid],
1462 install_rpath : rootlibexecdir,
1463 install : true)
1464public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001465
1466executable('systemd-journald',
1467 systemd_journald_sources,
1468 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001469 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001470 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001471 dependencies : [threads,
1472 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001473 liblz4,
1474 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001475 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001476 install : true,
1477 install_dir : rootlibexecdir)
1478
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001479exe = executable('systemd-cat',
1480 systemd_cat_sources,
1481 include_directories : includes,
1482 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001483 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001484 dependencies : [threads],
1485 install_rpath : rootlibexecdir,
1486 install : true)
1487public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001488
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001489exe = executable('journalctl',
1490 journalctl_sources,
1491 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001492 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001493 dependencies : [threads,
1494 libqrencode,
1495 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001496 liblz4,
1497 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001498 install_rpath : rootlibexecdir,
1499 install : true,
1500 install_dir : rootbindir)
1501public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001502
1503executable('systemd-getty-generator',
1504 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001505 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001506 link_with : [libshared],
1507 install_rpath : rootlibexecdir,
1508 install : true,
1509 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001510
1511executable('systemd-debug-generator',
1512 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001513 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001514 link_with : [libshared],
1515 install_rpath : rootlibexecdir,
1516 install : true,
1517 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001518
1519executable('systemd-fstab-generator',
1520 'src/fstab-generator/fstab-generator.c',
1521 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001522 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001523 link_with : [libshared],
1524 install_rpath : rootlibexecdir,
1525 install : true,
1526 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001527
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001528if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001529 executable('30-systemd-environment-d-generator',
1530 'src/environment-d-generator/environment-d-generator.c',
1531 include_directories : includes,
1532 link_with : [libshared],
1533 install_rpath : rootlibexecdir,
1534 install : true,
1535 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001536
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001537 meson.add_install_script(meson_make_symlink,
1538 join_paths(sysconfdir, 'environment'),
1539 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001540endif
1541
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001542if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001543 executable('systemd-hibernate-resume-generator',
1544 'src/hibernate-resume/hibernate-resume-generator.c',
1545 include_directories : includes,
1546 link_with : [libshared],
1547 install_rpath : rootlibexecdir,
1548 install : true,
1549 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001550
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001551 executable('systemd-hibernate-resume',
1552 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001553 include_directories : includes,
1554 link_with : [libshared],
1555 install_rpath : rootlibexecdir,
1556 install : true,
1557 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001558endif
1559
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001560if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001561 executable('systemd-gpt-auto-generator',
1562 'src/gpt-auto-generator/gpt-auto-generator.c',
1563 'src/basic/blkid-util.h',
1564 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001565 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001566 dependencies : libblkid,
1567 install_rpath : rootlibexecdir,
1568 install : true,
1569 install_dir : systemgeneratordir)
1570
1571 exe = executable('systemd-dissect',
1572 'src/dissect/dissect.c',
1573 include_directories : includes,
1574 link_with : [libshared],
1575 install_rpath : rootlibexecdir,
1576 install : true,
1577 install_dir : rootlibexecdir)
1578 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001579endif
1580
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001581if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001582 executable('systemd-resolved',
1583 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001584 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001585 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001586 libbasic_gcrypt,
1587 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001588 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001589 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001590 libm,
1591 libidn],
1592 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001593 install : true,
1594 install_dir : rootlibexecdir)
1595
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001596 exe = executable('resolvectl',
1597 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001598 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001599 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001600 libbasic_gcrypt,
1601 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001602 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001603 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001604 libm,
1605 libidn],
1606 install_rpath : rootlibexecdir,
1607 install : true)
1608 public_programs += [exe]
Lennart Poettering088c1362018-02-27 17:48:54 +01001609
1610 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001611 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001612 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001613
1614 meson.add_install_script(meson_make_symlink,
1615 join_paths(bindir, 'resolvectl'),
1616 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001617endif
1618
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001619if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001620 executable('systemd-logind',
1621 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001622 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001623 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001624 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001625 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001626 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001627 install_rpath : rootlibexecdir,
1628 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001629 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001630
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001631 exe = executable('loginctl',
1632 loginctl_sources,
1633 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001634 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001635 dependencies : [threads,
1636 liblz4,
1637 libxz],
1638 install_rpath : rootlibexecdir,
1639 install : true,
1640 install_dir : rootbindir)
1641 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001642
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001643 exe = executable('systemd-inhibit',
1644 'src/login/inhibit.c',
1645 include_directories : includes,
1646 link_with : [libshared],
1647 install_rpath : rootlibexecdir,
1648 install : true,
1649 install_dir : rootbindir)
1650 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001651
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001652 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001653 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1654 pam_systemd = shared_library(
1655 'pam_systemd',
1656 pam_systemd_c,
1657 name_prefix : '',
1658 include_directories : includes,
1659 link_args : ['-shared',
1660 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001661 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001662 libshared_static],
1663 dependencies : [threads,
1664 libpam,
1665 libpam_misc],
1666 link_depends : pam_systemd_sym,
1667 install : true,
1668 install_dir : pamlibdir)
1669
1670 test('dlopen-pam_systemd',
1671 test_dlopen,
1672 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1673 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001674endif
1675
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001676executable('systemd-user-runtime-dir',
1677 user_runtime_dir_sources,
1678 include_directories : includes,
1679 link_with : [libshared, liblogind_core],
1680 install_rpath : rootlibexecdir,
1681 install : true,
1682 install_dir : rootlibexecdir)
1683
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001684if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001685 executable('systemd-user-sessions',
1686 'src/user-sessions/user-sessions.c',
1687 include_directories : includes,
1688 link_with : [libshared],
1689 install_rpath : rootlibexecdir,
1690 install : true,
1691 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001692endif
1693
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001694if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001695 exe = executable('bootctl',
1696 'src/boot/bootctl.c',
1697 include_directories : includes,
1698 link_with : [libshared],
1699 dependencies : [libblkid],
1700 install_rpath : rootlibexecdir,
1701 install : true)
1702 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001703endif
1704
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001705exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1706 include_directories : includes,
1707 link_with : [libshared],
1708 dependencies : [threads],
1709 install_rpath : rootlibexecdir,
1710 install : true)
1711public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001712
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001713exe = executable('systemctl', 'src/systemctl/systemctl.c',
1714 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001715 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001716 dependencies : [threads,
1717 libcap,
1718 libselinux,
1719 libxz,
1720 liblz4],
1721 install_rpath : rootlibexecdir,
1722 install : true,
1723 install_dir : rootbindir)
1724public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001725
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001726foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1727 meson.add_install_script(meson_make_symlink,
1728 join_paths(rootbindir, 'systemctl'),
1729 join_paths(rootsbindir, alias))
1730endforeach
1731
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001732if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001733 executable('systemd-backlight',
1734 'src/backlight/backlight.c',
1735 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001736 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001737 install_rpath : rootlibexecdir,
1738 install : true,
1739 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001740endif
1741
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001742if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001743 executable('systemd-rfkill',
1744 'src/rfkill/rfkill.c',
1745 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001746 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001747 install_rpath : rootlibexecdir,
1748 install : true,
1749 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001750endif
1751
1752executable('systemd-system-update-generator',
1753 'src/system-update-generator/system-update-generator.c',
1754 include_directories : includes,
1755 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001756 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001757 install : true,
1758 install_dir : systemgeneratordir)
1759
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001760if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001761 executable('systemd-cryptsetup',
1762 'src/cryptsetup/cryptsetup.c',
1763 include_directories : includes,
1764 link_with : [libshared],
1765 dependencies : [libcryptsetup],
1766 install_rpath : rootlibexecdir,
1767 install : true,
1768 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001769
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001770 executable('systemd-cryptsetup-generator',
1771 'src/cryptsetup/cryptsetup-generator.c',
1772 include_directories : includes,
1773 link_with : [libshared],
1774 dependencies : [libcryptsetup],
1775 install_rpath : rootlibexecdir,
1776 install : true,
1777 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001778
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001779 executable('systemd-veritysetup',
1780 'src/veritysetup/veritysetup.c',
1781 include_directories : includes,
1782 link_with : [libshared],
1783 dependencies : [libcryptsetup],
1784 install_rpath : rootlibexecdir,
1785 install : true,
1786 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001787
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001788 executable('systemd-veritysetup-generator',
1789 'src/veritysetup/veritysetup-generator.c',
1790 include_directories : includes,
1791 link_with : [libshared],
1792 dependencies : [libcryptsetup],
1793 install_rpath : rootlibexecdir,
1794 install : true,
1795 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001796endif
1797
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001798if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001799 executable('systemd-sysv-generator',
1800 'src/sysv-generator/sysv-generator.c',
1801 include_directories : includes,
1802 link_with : [libshared],
1803 install_rpath : rootlibexecdir,
1804 install : true,
1805 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001806
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001807 executable('systemd-rc-local-generator',
1808 'src/rc-local-generator/rc-local-generator.c',
1809 include_directories : includes,
1810 link_with : [libshared],
1811 install_rpath : rootlibexecdir,
1812 install : true,
1813 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001814endif
1815
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001816if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001817 executable('systemd-hostnamed',
1818 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001819 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001820 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001821 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001822 install : true,
1823 install_dir : rootlibexecdir)
1824
1825 exe = executable('hostnamectl',
1826 'src/hostname/hostnamectl.c',
1827 include_directories : includes,
1828 link_with : [libshared],
1829 install_rpath : rootlibexecdir,
1830 install : true)
1831 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001832endif
1833
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001834if conf.get('ENABLE_LOCALED') == 1
1835 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001836 # logind will load libxkbcommon.so dynamically on its own
1837 deps = [libdl]
1838 else
1839 deps = []
1840 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001841
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001842 executable('systemd-localed',
1843 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001844 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001845 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001846 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001847 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001848 install : true,
1849 install_dir : rootlibexecdir)
1850
1851 exe = executable('localectl',
1852 localectl_sources,
1853 include_directories : includes,
1854 link_with : [libshared],
1855 install_rpath : rootlibexecdir,
1856 install : true)
1857 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001858endif
1859
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001860if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001861 executable('systemd-timedated',
1862 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001863 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001864 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001865 install_rpath : rootlibexecdir,
1866 install : true,
1867 install_dir : rootlibexecdir)
1868
1869 exe = executable('timedatectl',
1870 'src/timedate/timedatectl.c',
1871 include_directories : includes,
1872 install_rpath : rootlibexecdir,
1873 link_with : [libshared],
1874 install : true)
1875 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001876endif
1877
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001878if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001879 executable('systemd-timesyncd',
1880 systemd_timesyncd_sources,
1881 include_directories : includes,
1882 link_with : [libshared],
1883 dependencies : [threads,
1884 libm],
1885 install_rpath : rootlibexecdir,
1886 install : true,
1887 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001888
1889 executable('systemd-time-wait-sync',
1890 'src/time-wait-sync/time-wait-sync.c',
1891 include_directories : includes,
1892 link_with : [libshared],
1893 install_rpath : rootlibexecdir,
1894 install : true,
1895 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001896endif
1897
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001898if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001899 executable('systemd-machined',
1900 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001901 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001902 link_with : [libmachine_core,
1903 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001904 install_rpath : rootlibexecdir,
1905 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001906 install_dir : rootlibexecdir)
1907
1908 exe = executable('machinectl',
1909 'src/machine/machinectl.c',
1910 include_directories : includes,
1911 link_with : [libshared],
1912 dependencies : [threads,
1913 libxz,
1914 liblz4],
1915 install_rpath : rootlibexecdir,
1916 install : true,
1917 install_dir : rootbindir)
1918 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001919endif
1920
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001921if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001922 executable('systemd-importd',
1923 systemd_importd_sources,
1924 include_directories : includes,
1925 link_with : [libshared],
1926 dependencies : [threads],
1927 install_rpath : rootlibexecdir,
1928 install : true,
1929 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001930
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001931 systemd_pull = executable('systemd-pull',
1932 systemd_pull_sources,
1933 include_directories : includes,
1934 link_with : [libshared],
1935 dependencies : [libcurl,
1936 libz,
1937 libbzip2,
1938 libxz,
1939 libgcrypt],
1940 install_rpath : rootlibexecdir,
1941 install : true,
1942 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001943
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001944 systemd_import = executable('systemd-import',
1945 systemd_import_sources,
1946 include_directories : includes,
1947 link_with : [libshared],
1948 dependencies : [libcurl,
1949 libz,
1950 libbzip2,
1951 libxz],
1952 install_rpath : rootlibexecdir,
1953 install : true,
1954 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001955
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001956 systemd_export = executable('systemd-export',
1957 systemd_export_sources,
1958 include_directories : includes,
1959 link_with : [libshared],
1960 dependencies : [libcurl,
1961 libz,
1962 libbzip2,
1963 libxz],
1964 install_rpath : rootlibexecdir,
1965 install : true,
1966 install_dir : rootlibexecdir)
1967 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001968endif
1969
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001970if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001971 exe = executable('systemd-journal-upload',
1972 systemd_journal_upload_sources,
1973 include_directories : includes,
1974 link_with : [libshared],
1975 dependencies : [threads,
1976 libcurl,
1977 libgnutls,
1978 libxz,
1979 liblz4],
1980 install_rpath : rootlibexecdir,
1981 install : true,
1982 install_dir : rootlibexecdir)
1983 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001984endif
1985
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001986if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001987 s_j_remote = executable('systemd-journal-remote',
1988 systemd_journal_remote_sources,
1989 include_directories : includes,
1990 link_with : [libshared],
1991 dependencies : [threads,
1992 libmicrohttpd,
1993 libgnutls,
1994 libxz,
1995 liblz4],
1996 install_rpath : rootlibexecdir,
1997 install : true,
1998 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001999
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002000 s_j_gatewayd = executable('systemd-journal-gatewayd',
2001 systemd_journal_gatewayd_sources,
2002 include_directories : includes,
2003 link_with : [libshared],
2004 dependencies : [threads,
2005 libmicrohttpd,
2006 libgnutls,
2007 libxz,
2008 liblz4],
2009 install_rpath : rootlibexecdir,
2010 install : true,
2011 install_dir : rootlibexecdir)
2012 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002013endif
2014
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002015if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002016 executable('systemd-coredump',
2017 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002018 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002019 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002020 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002021 libacl,
2022 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002023 libxz,
2024 liblz4],
2025 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002026 install : true,
2027 install_dir : rootlibexecdir)
2028
2029 exe = executable('coredumpctl',
2030 coredumpctl_sources,
2031 include_directories : includes,
2032 link_with : [libshared],
2033 dependencies : [threads,
2034 libxz,
2035 liblz4],
2036 install_rpath : rootlibexecdir,
2037 install : true)
2038 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002039endif
2040
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002041if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002042 exe = executable('systemd-binfmt',
2043 'src/binfmt/binfmt.c',
2044 include_directories : includes,
2045 link_with : [libshared],
2046 install_rpath : rootlibexecdir,
2047 install : true,
2048 install_dir : rootlibexecdir)
2049 public_programs += [exe]
2050
2051 meson.add_install_script('sh', '-c',
2052 mkdir_p.format(binfmtdir))
2053 meson.add_install_script('sh', '-c',
2054 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2055endif
2056
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002057if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002058 executable('systemd-vconsole-setup',
2059 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002060 include_directories : includes,
2061 link_with : [libshared],
2062 install_rpath : rootlibexecdir,
2063 install : true,
2064 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002065endif
2066
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002067if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002068 executable('systemd-random-seed',
2069 'src/random-seed/random-seed.c',
2070 include_directories : includes,
2071 link_with : [libshared],
2072 install_rpath : rootlibexecdir,
2073 install : true,
2074 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002075endif
2076
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002077if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002078 executable('systemd-firstboot',
2079 'src/firstboot/firstboot.c',
2080 include_directories : includes,
2081 link_with : [libshared],
2082 dependencies : [libcrypt],
2083 install_rpath : rootlibexecdir,
2084 install : true,
2085 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002086endif
2087
2088executable('systemd-remount-fs',
2089 'src/remount-fs/remount-fs.c',
2090 'src/core/mount-setup.c',
2091 'src/core/mount-setup.h',
2092 include_directories : includes,
2093 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002094 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002095 install : true,
2096 install_dir : rootlibexecdir)
2097
2098executable('systemd-machine-id-setup',
2099 'src/machine-id-setup/machine-id-setup-main.c',
2100 'src/core/machine-id-setup.c',
2101 'src/core/machine-id-setup.h',
2102 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002103 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002104 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002105 install : true,
2106 install_dir : rootbindir)
2107
2108executable('systemd-fsck',
2109 'src/fsck/fsck.c',
2110 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002111 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002112 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002113 install : true,
2114 install_dir : rootlibexecdir)
2115
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002116executable('systemd-growfs',
2117 'src/partition/growfs.c',
2118 include_directories : includes,
2119 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002120 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002121 install_rpath : rootlibexecdir,
2122 install : true,
2123 install_dir : rootlibexecdir)
2124
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002125executable('systemd-makefs',
2126 'src/partition/makefs.c',
2127 include_directories : includes,
2128 link_with : [libshared],
2129 install_rpath : rootlibexecdir,
2130 install : true,
2131 install_dir : rootlibexecdir)
2132
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002133executable('systemd-sleep',
2134 'src/sleep/sleep.c',
2135 include_directories : includes,
2136 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002137 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002138 install : true,
2139 install_dir : rootlibexecdir)
2140
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002141exe = executable('systemd-sysctl',
2142 'src/sysctl/sysctl.c',
2143 include_directories : includes,
2144 link_with : [libshared],
2145 install_rpath : rootlibexecdir,
2146 install : true,
2147 install_dir : rootlibexecdir)
2148public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002149
2150executable('systemd-ac-power',
2151 'src/ac-power/ac-power.c',
2152 include_directories : includes,
2153 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002154 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002155 install : true,
2156 install_dir : rootlibexecdir)
2157
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002158exe = executable('systemd-detect-virt',
2159 'src/detect-virt/detect-virt.c',
2160 include_directories : includes,
2161 link_with : [libshared],
2162 install_rpath : rootlibexecdir,
2163 install : true)
2164public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002165
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002166exe = executable('systemd-delta',
2167 'src/delta/delta.c',
2168 include_directories : includes,
2169 link_with : [libshared],
2170 install_rpath : rootlibexecdir,
2171 install : true)
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-escape',
2175 'src/escape/escape.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
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002183exe = executable('systemd-notify',
2184 'src/notify/notify.c',
2185 include_directories : includes,
2186 link_with : [libshared],
2187 install_rpath : rootlibexecdir,
2188 install : true,
2189 install_dir : rootbindir)
2190public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002191
2192executable('systemd-volatile-root',
2193 'src/volatile-root/volatile-root.c',
2194 include_directories : includes,
2195 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002196 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002197 install : true,
2198 install_dir : rootlibexecdir)
2199
2200executable('systemd-cgroups-agent',
2201 'src/cgroups-agent/cgroups-agent.c',
2202 include_directories : includes,
2203 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002204 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002205 install : true,
2206 install_dir : rootlibexecdir)
2207
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002208exe = executable('systemd-path',
2209 'src/path/path.c',
2210 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002211 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002212 install_rpath : rootlibexecdir,
2213 install : true)
2214public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002215
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002216exe = executable('systemd-ask-password',
2217 'src/ask-password/ask-password.c',
2218 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002219 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002220 install_rpath : rootlibexecdir,
2221 install : true,
2222 install_dir : rootbindir)
2223public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002224
2225executable('systemd-reply-password',
2226 'src/reply-password/reply-password.c',
2227 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002228 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002229 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002230 install : true,
2231 install_dir : rootlibexecdir)
2232
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002233exe = executable('systemd-tty-ask-password-agent',
2234 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2235 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002236 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002237 install_rpath : rootlibexecdir,
2238 install : true,
2239 install_dir : rootbindir)
2240public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002241
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002242exe = executable('systemd-cgls',
2243 'src/cgls/cgls.c',
2244 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002245 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002246 install_rpath : rootlibexecdir,
2247 install : true)
2248public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002249
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002250exe = executable('systemd-cgtop',
2251 'src/cgtop/cgtop.c',
2252 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002253 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002254 install_rpath : rootlibexecdir,
2255 install : true)
2256public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002257
2258executable('systemd-initctl',
2259 'src/initctl/initctl.c',
2260 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002261 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002262 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002263 install : true,
2264 install_dir : rootlibexecdir)
2265
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002266exe = executable('systemd-mount',
2267 'src/mount/mount-tool.c',
2268 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002269 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002270 install_rpath : rootlibexecdir,
2271 install : true)
2272public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002273
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002274meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002275 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002276
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002277exe = executable('systemd-run',
2278 'src/run/run.c',
2279 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002280 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002281 install_rpath : rootlibexecdir,
2282 install : true)
2283public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002284
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002285exe = executable('systemd-stdio-bridge',
2286 'src/stdio-bridge/stdio-bridge.c',
2287 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002288 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002289 install_rpath : rootlibexecdir,
2290 install : true)
2291public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002292
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002293exe = executable('busctl',
2294 'src/busctl/busctl.c',
2295 'src/busctl/busctl-introspect.c',
2296 'src/busctl/busctl-introspect.h',
2297 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002298 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002299 install_rpath : rootlibexecdir,
2300 install : true)
2301public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002302
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002303if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002304 exe = executable('systemd-sysusers',
2305 'src/sysusers/sysusers.c',
2306 include_directories : includes,
2307 link_with : [libshared],
2308 install_rpath : rootlibexecdir,
2309 install : true,
2310 install_dir : rootbindir)
2311 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002312endif
2313
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002314if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002315 exe = executable('systemd-tmpfiles',
2316 'src/tmpfiles/tmpfiles.c',
2317 include_directories : includes,
2318 link_with : [libshared],
2319 dependencies : [libacl],
2320 install_rpath : rootlibexecdir,
2321 install : true,
2322 install_dir : rootbindir)
2323 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002324
2325 test('test-systemd-tmpfiles',
2326 test_systemd_tmpfiles_py,
2327 args : exe.full_path())
2328 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002329endif
2330
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002331if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002332 exe = executable('systemd-hwdb',
2333 'src/hwdb/hwdb.c',
2334 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2335 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002336 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002337 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002338 install : true,
2339 install_dir : rootbindir)
2340 public_programs += [exe]
2341endif
2342
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002343if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002344 executable('systemd-quotacheck',
2345 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002346 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 install_rpath : rootlibexecdir,
2349 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002350 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002351endif
2352
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002353exe = executable('systemd-socket-proxyd',
2354 'src/socket-proxy/socket-proxyd.c',
2355 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002356 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002357 dependencies : [threads],
2358 install_rpath : rootlibexecdir,
2359 install : true,
2360 install_dir : rootlibexecdir)
2361public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002362
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002363exe = executable('systemd-udevd',
2364 systemd_udevd_sources,
2365 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002366 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002367 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002368 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002369 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002370 dependencies : [threads,
2371 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002372 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002373 libacl,
2374 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002375 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002376 install : true,
2377 install_dir : rootlibexecdir)
2378public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002379
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002380exe = executable('udevadm',
2381 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002382 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002383 include_directories : includes,
2384 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002385 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002386 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002387 dependencies : [threads,
2388 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002389 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002390 libacl,
2391 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002392 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002393 install : true,
2394 install_dir : rootbindir)
2395public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002396
2397executable('systemd-shutdown',
2398 systemd_shutdown_sources,
2399 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002400 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002401 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002402 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002403 install : true,
2404 install_dir : rootlibexecdir)
2405
2406executable('systemd-update-done',
2407 'src/update-done/update-done.c',
2408 include_directories : includes,
2409 link_with : [libshared],
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
2414executable('systemd-update-utmp',
2415 'src/update-utmp/update-utmp.c',
2416 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002417 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002418 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002419 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002420 install : true,
2421 install_dir : rootlibexecdir)
2422
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002423if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002424 executable('systemd-modules-load',
2425 'src/modules-load/modules-load.c',
2426 include_directories : includes,
2427 link_with : [libshared],
2428 dependencies : [libkmod],
2429 install_rpath : rootlibexecdir,
2430 install : true,
2431 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002432
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002433 meson.add_install_script('sh', '-c',
2434 mkdir_p.format(modulesloaddir))
2435 meson.add_install_script('sh', '-c',
2436 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002437endif
2438
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002439exe = executable('systemd-nspawn',
2440 systemd_nspawn_sources,
2441 'src/core/mount-setup.c', # FIXME: use a variable?
2442 'src/core/mount-setup.h',
2443 'src/core/loopback-setup.c',
2444 'src/core/loopback-setup.h',
2445 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002446 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002447 dependencies : [libacl,
2448 libblkid,
2449 libseccomp,
2450 libselinux],
2451 install_rpath : rootlibexecdir,
2452 install : true)
2453public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002454
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002455if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002456 executable('systemd-networkd',
2457 systemd_networkd_sources,
2458 include_directories : includes,
2459 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002460 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002461 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002462 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002463 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002464 install_rpath : rootlibexecdir,
2465 install : true,
2466 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002467
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002468 executable('systemd-networkd-wait-online',
2469 systemd_networkd_wait_online_sources,
2470 include_directories : includes,
2471 link_with : [libnetworkd_core,
2472 libshared],
2473 install_rpath : rootlibexecdir,
2474 install : true,
2475 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002476
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002477 exe = executable('networkctl',
2478 networkctl_sources,
2479 include_directories : includes,
2480 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002481 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002482 install_rpath : rootlibexecdir,
2483 install : true,
2484 install_dir : rootbindir)
2485 public_programs += [exe]
2486endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002487
2488executable('systemd-sulogin-shell',
2489 ['src/sulogin-shell/sulogin-shell.c'],
2490 include_directories : includes,
2491 link_with : [libshared],
2492 install_rpath : rootlibexecdir,
2493 install : true,
2494 install_dir : rootlibexecdir)
2495
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002496############################################################
2497
2498foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002499 sources = tuple[0]
2500 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2501 dependencies = tuple[2]
2502 condition = tuple.length() >= 4 ? tuple[3] : ''
2503 type = tuple.length() >= 5 ? tuple[4] : ''
2504 defs = tuple.length() >= 6 ? tuple[5] : []
2505 incs = tuple.length() >= 7 ? tuple[6] : includes
2506 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002507
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002508 name = sources[0].split('/')[-1].split('.')[0]
2509 if type.startswith('timeout=')
2510 timeout = type.split('=')[1].to_int()
2511 type = ''
2512 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002513 if want_tests == 'false'
2514 message('Not compiling @0@ because tests is set to false'.format(name))
2515 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002516 exe = executable(
2517 name,
2518 sources,
2519 include_directories : incs,
2520 link_with : link_with,
2521 dependencies : dependencies,
2522 c_args : defs,
2523 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002524 install : install_tests,
2525 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002526
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002527 if type == 'manual'
2528 message('@0@ is a manual test'.format(name))
2529 elif type == 'unsafe' and want_tests != 'unsafe'
2530 message('@0@ is an unsafe test'.format(name))
2531 else
2532 test(name, exe,
2533 env : test_env,
2534 timeout : timeout)
2535 endif
2536 else
2537 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2538 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002539endforeach
2540
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002541test_libsystemd_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002542 'test-libsystemd-sym',
2543 test_libsystemd_sym_c,
2544 include_directories : includes,
2545 link_with : [libsystemd],
2546 install : install_tests,
2547 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002548test('test-libsystemd-sym',
2549 test_libsystemd_sym)
2550
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002551test_libudev_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002552 'test-libudev-sym',
2553 test_libudev_sym_c,
2554 include_directories : includes,
2555 c_args : ['-Wno-deprecated-declarations'],
2556 link_with : [libudev],
2557 install : install_tests,
2558 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002559test('test-libudev-sym',
2560 test_libudev_sym)
2561
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002562############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002563
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002564fuzzer_exes = []
2565
2566foreach tuple : fuzzers
2567 sources = tuple[0]
2568 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2569 dependencies = tuple[2]
2570 defs = tuple.length() >= 4 ? tuple[3] : []
2571 incs = tuple.length() >= 5 ? tuple[4] : includes
2572
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002573 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002574 dependencies += fuzzing_engine
2575 else
2576 sources += 'src/fuzz/fuzz-main.c'
2577 endif
2578
2579 name = sources[0].split('/')[-1].split('.')[0]
2580
2581 fuzzer_exes += executable(
2582 name,
2583 sources,
2584 include_directories : [incs, include_directories('src/fuzz')],
2585 link_with : link_with,
2586 dependencies : dependencies,
2587 c_args : defs,
2588 install : false)
2589endforeach
2590
2591run_target('fuzzers',
2592 depends : fuzzer_exes,
2593 command : ['true'])
2594
2595############################################################
2596
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002597make_directive_index_py = find_program('tools/make-directive-index.py')
2598make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002599xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002600hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002601
2602subdir('units')
2603subdir('sysctl.d')
2604subdir('sysusers.d')
2605subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002606subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002607subdir('hwdb')
2608subdir('network')
2609subdir('man')
2610subdir('shell-completion/bash')
2611subdir('shell-completion/zsh')
Lennart Poettering2d684e62018-03-28 16:58:37 +02002612subdir('doc/sysvinit')
2613subdir('doc/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002614
2615# FIXME: figure out if the warning is true:
2616# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2617install_subdir('factory/etc',
2618 install_dir : factorydir)
2619
2620
2621install_data('xorg/50-systemd-user.sh',
2622 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002623install_data('modprobe.d/systemd.conf',
2624 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002625install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002626 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002627 'NEWS',
2628 'README',
2629 'doc/CODING_STYLE',
2630 'doc/DISTRO_PORTING',
2631 'doc/ENVIRONMENT.md',
2632 'doc/HACKING',
2633 'doc/TRANSIENT-SETTINGS.md',
2634 'doc/TRANSLATORS',
2635 'doc/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002636 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2637 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002638
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002639meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2640meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2641
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002642############################################################
2643
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002644meson_check_help = find_program('tools/meson-check-help.sh')
2645
2646foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002647 name = exec.full_path().split('/')[-1]
2648 test('check-help-' + name,
2649 meson_check_help,
2650 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002651endforeach
2652
2653############################################################
2654
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002655# Enable tests for all supported sanitizers
2656foreach tuple : sanitizers
2657 sanitizer = tuple[0]
2658 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002659
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002660 have = run_command(check_compilation_sh,
2661 cc.cmd_array(), '-x', 'c',
2662 '-fsanitize=@0@'.format(sanitizer),
2663 '-include', link_test_c).returncode() == 0
2664 message('@0@ sanitizer supported: @1@'.format(sanitizer, have ? 'yes' : 'no'))
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002665
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002666 if have
2667 prev = ''
2668 foreach p : fuzz_regression_tests
2669 b = p.split('/')[-2]
2670 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002671
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002672 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002673
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002674 if name != prev
2675 if want_tests == 'false'
2676 message('Not compiling @0@ because tests is set to false'.format(name))
2677 elif slow_tests
2678 exe = custom_target(
2679 name,
2680 output : name,
2681 depends : build,
2682 command : [env, 'ln', '-fs',
2683 join_paths(build.full_path(), b),
2684 '@OUTPUT@'],
2685 build_by_default : true)
2686 else
2687 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2688 endif
2689 endif
2690 prev = name
2691
2692 if want_tests != 'false' and slow_tests
2693 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2694 env,
2695 args : [exe.full_path(),
2696 join_paths(meson.source_root(),
2697 'test/fuzz-regressions',
2698 p)])
2699 endif
2700 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002701 endif
2702endforeach
2703
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002704
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002705############################################################
2706
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002707if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002708 all_files = run_command(
2709 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002710 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002711 'ls-files',
2712 ':/*.[ch]'])
2713 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002714
userwithuide85a6902017-08-09 13:41:44 +00002715 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002716 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002717 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002718 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002719 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002720 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002721 output : 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002722 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002723endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002724
2725if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002726 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002727 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002728 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002729 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002730endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002731
2732if git.found()
2733 git_head = run_command(
2734 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002735 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002736 'rev-parse', 'HEAD']).stdout().strip()
2737 git_head_short = run_command(
2738 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002739 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002740 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2741
2742 run_target(
2743 'git-snapshot',
2744 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002745 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002746 git_head_short),
2747 '--prefix', 'systemd-@0@/'.format(git_head),
2748 'HEAD'])
2749endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002750
2751############################################################
2752
Lennart Poettering51b13862017-12-20 12:51:14 +01002753meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2754run_target(
2755 'check-api-docs',
2756 depends : [man, libsystemd, libudev],
2757 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2758
2759############################################################
2760
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002761status = [
2762 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2763
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002764 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002765 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002766 'prefix directory: @0@'.format(prefixdir),
2767 'rootprefix directory: @0@'.format(rootprefixdir),
2768 'sysconf directory: @0@'.format(sysconfdir),
2769 'include directory: @0@'.format(includedir),
2770 'lib directory: @0@'.format(libdir),
2771 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002772 'SysV init scripts: @0@'.format(sysvinit_path),
2773 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002774 'PAM modules directory: @0@'.format(pamlibdir),
2775 'PAM configuration directory: @0@'.format(pamconfdir),
2776 'RPM macros directory: @0@'.format(rpmmacrosdir),
2777 'modprobe.d directory: @0@'.format(modprobedir),
2778 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2779 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2780 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2781 'bash completions directory: @0@'.format(bashcompletiondir),
2782 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002783 'extra start script: @0@'.format(get_option('rc-local')),
2784 'extra stop script: @0@'.format(get_option('halt-local')),
2785 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2786 get_option('debug-tty')),
2787 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002788 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002789 'maximum system UID: @0@'.format(system_uid_max),
2790 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002791 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2792 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2793 'minimum container UID base: @0@'.format(container_uid_base_min),
2794 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002795 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002796 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002797 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002798 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002799 'nobody user name: @0@'.format(nobody_user),
2800 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002801 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002802 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002803
2804 'default DNSSEC mode: @0@'.format(default_dnssec),
2805 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2806 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2807
2808alt_dns_servers = '\n '.join(dns_servers.split(' '))
2809alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2810status += [
2811 'default DNS servers: @0@'.format(alt_dns_servers),
2812 'default NTP servers: @0@'.format(alt_ntp_servers)]
2813
2814alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2815 '@@0@'.format(time_epoch)).stdout().strip()
2816status += [
2817 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2818
2819# TODO:
2820# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2821# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2822# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2823
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002824if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002825 status += [
2826 'efi arch: @0@'.format(efi_arch)]
2827
2828 if have_gnu_efi
2829 status += [
2830 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2831 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002832 'EFI lib directory: @0@'.format(efi_libdir),
2833 'EFI lds directory: @0@'.format(efi_ldsdir),
2834 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002835 endif
2836endif
2837
2838found = []
2839missing = []
2840
2841foreach tuple : [
2842 ['libcryptsetup'],
2843 ['PAM'],
2844 ['AUDIT'],
2845 ['IMA'],
2846 ['AppArmor'],
2847 ['SELinux'],
2848 ['SECCOMP'],
2849 ['SMACK'],
2850 ['zlib'],
2851 ['xz'],
2852 ['lz4'],
2853 ['bzip2'],
2854 ['ACL'],
2855 ['gcrypt'],
2856 ['qrencode'],
2857 ['microhttpd'],
2858 ['gnutls'],
2859 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002860 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002861 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002862 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002863 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002864 ['libiptc'],
2865 ['elfutils'],
2866 ['binfmt'],
2867 ['vconsole'],
2868 ['quotacheck'],
2869 ['tmpfiles'],
2870 ['environment.d'],
2871 ['sysusers'],
2872 ['firstboot'],
2873 ['randomseed'],
2874 ['backlight'],
2875 ['rfkill'],
2876 ['logind'],
2877 ['machined'],
2878 ['importd'],
2879 ['hostnamed'],
2880 ['timedated'],
2881 ['timesyncd'],
2882 ['localed'],
2883 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002884 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002885 ['coredump'],
2886 ['polkit'],
2887 ['legacy pkla', install_polkit_pkla],
2888 ['efi'],
2889 ['gnu-efi', have_gnu_efi],
2890 ['kmod'],
2891 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01002892 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002893 ['blkid'],
2894 ['dbus'],
2895 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002896 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002897 ['hwdb'],
2898 ['tpm'],
2899 ['man pages', want_man],
2900 ['html pages', want_html],
2901 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002902 ['SysV compat'],
2903 ['utmp'],
2904 ['ldconfig'],
2905 ['hibernate'],
2906 ['adm group', get_option('adm-group')],
2907 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002908 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002909 ['debug hashmap'],
2910 ['debug mmap cache'],
2911]
2912
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01002913 if tuple.length() >= 2
2914 cond = tuple[1]
2915 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002916 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2917 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002918 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002919 endif
2920 if cond
2921 found += [tuple[0]]
2922 else
2923 missing += [tuple[0]]
2924 endif
2925endforeach
2926
2927status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002928 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002929 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002930 '',
2931 'disabled features: @0@'.format(', '.join(missing)),
2932 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002933message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002934
2935if rootprefixdir != rootprefix_default
2936 message('WARNING:\n' +
2937 ' Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2938 ' systemd used fixed names for unit file directories and other paths, so anything\n' +
2939 ' except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
2940endif