blob: 3fa4f7f3271cd1aa97c365e4b7630c729f4d9407 [file] [log] [blame]
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01001# SPDX-License-Identifier: LGPL-2.1+
2#
3# Copyright 2017 Zbigniew Jędrzejewski-Szmek
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01004
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04005project('systemd', 'c',
Zbigniew Jędrzejewski-Szmekad6a0852018-03-05 17:12:48 +01006 version : '238',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04007 license : 'LGPLv2+',
8 default_options: [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04009 'c_std=gnu99',
10 'prefix=/usr',
11 'sysconfdir=/etc',
12 'localstatedir=/var',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040013 ],
Zbigniew Jędrzejewski-Szmek86ea8d72017-11-20 08:08:43 +010014 meson_version : '>= 0.41',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040015 )
16
Zbigniew Jędrzejewski-Szmekad6a0852018-03-05 17:12:48 +010017libsystemd_version = '0.22.0'
18libudev_version = '1.6.10'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020019
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040020# We need the same data in three different formats, ugh!
21# Also, for hysterical reasons, we use different variable
22# names, sometimes. Not all variables are included in every
23# set. Ugh, ugh, ugh!
24conf = configuration_data()
25conf.set_quoted('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version())
26conf.set_quoted('PACKAGE_VERSION', meson.project_version())
27
28substs = configuration_data()
29substs.set('PACKAGE_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
30substs.set('PACKAGE_VERSION', meson.project_version())
31
32m4_defines = []
33
34#####################################################################
35
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040036# Try to install the git pre-commit hook
37git_hook = run_command(join_paths(meson.source_root(), 'tools/add-git-hook.sh'))
38if git_hook.returncode() == 0
39 message(git_hook.stdout().strip())
40endif
41
42#####################################################################
43
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010044if get_option('split-usr') == 'auto'
45 split_usr = run_command('test', '-L', '/bin').returncode() != 0
46else
47 split_usr = get_option('split-usr') == 'true'
48endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010049conf.set10('HAVE_SPLIT_USR', split_usr,
50 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010051
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010052if get_option('split-bin') == 'auto'
53 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
54else
55 split_bin = get_option('split-bin') == 'true'
56endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010057conf.set10('HAVE_SPLIT_BIN', split_bin,
58 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010059
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010060rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010061# Unusual rootprefixdir values are used by some distros
62# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010063rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010064if rootprefixdir == ''
65 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010066endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040067
68sysvinit_path = get_option('sysvinit-path')
69sysvrcnd_path = get_option('sysvrcnd-path')
Max Harmathy54248242017-12-15 16:05:25 +010070have = sysvinit_path != '' and sysvrcnd_path != ''
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020071conf.set10('HAVE_SYSV_COMPAT', have,
72 description : 'SysV init scripts and rcN.d links are supported')
73m4_defines += have ? ['-DHAVE_SYSV_COMPAT'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040074
75# join_paths ignore the preceding arguments if an absolute component is
76# encountered, so this should canonicalize various paths when they are
77# absolute or relative.
78prefixdir = get_option('prefix')
79if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040080 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040081endif
82bindir = join_paths(prefixdir, get_option('bindir'))
83libdir = join_paths(prefixdir, get_option('libdir'))
84sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
85includedir = join_paths(prefixdir, get_option('includedir'))
86datadir = join_paths(prefixdir, get_option('datadir'))
87localstatedir = join_paths('/', get_option('localstatedir'))
88
89rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010090rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040091rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
92
93rootlibdir = get_option('rootlibdir')
94if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040095 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040096endif
97
98# Dirs of external packages
Michael Bieble17e5ba2017-04-13 10:30:56 -040099pkgconfigdatadir = join_paths(datadir, 'pkgconfig')
100pkgconfiglibdir = join_paths(libdir, 'pkgconfig')
101polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
102polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
103polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
104varlogdir = join_paths(localstatedir, 'log')
105xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900106rpmmacrosdir = get_option('rpmmacrosdir')
107if rpmmacrosdir != 'no'
108 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
109endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200110modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400111
112# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400113pkgdatadir = join_paths(datadir, 'systemd')
114environmentdir = join_paths(prefixdir, 'lib/environment.d')
115pkgsysconfdir = join_paths(sysconfdir, 'systemd')
116userunitdir = join_paths(prefixdir, 'lib/systemd/user')
117userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
118tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
119sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
120sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
121binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
122modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
123networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
124pkgincludedir = join_paths(includedir, 'systemd')
125systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
126usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
127systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
128userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
129systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
130systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
131systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
132systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
133udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
134udevhomedir = udevlibexecdir
135udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
136udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
137catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
138kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
139factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400140bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
141testsdir = join_paths(prefixdir, 'lib/systemd/tests')
142systemdstatedir = join_paths(localstatedir, 'lib/systemd')
143catalogstatedir = join_paths(systemdstatedir, 'catalog')
144randomseeddir = join_paths(localstatedir, 'lib/systemd')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400145
tblume75aaade2018-02-01 22:46:15 +0100146docdir = get_option('docdir')
147if docdir == ''
148 docdir = join_paths(datadir, 'doc/systemd')
149endif
150
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400151dbuspolicydir = get_option('dbuspolicydir')
152if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400153 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400154endif
155
156dbussessionservicedir = get_option('dbussessionservicedir')
157if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400158 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400159endif
160
161dbussystemservicedir = get_option('dbussystemservicedir')
162if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400163 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400164endif
165
166pamlibdir = get_option('pamlibdir')
167if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400168 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400169endif
170
171pamconfdir = get_option('pamconfdir')
172if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400173 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400174endif
175
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100176memory_accounting_default = get_option('memory-accounting-default')
177
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400178conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400179conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400180conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
181conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
182conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400183conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
184conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100185
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100186conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100187
Michael Bieble17e5ba2017-04-13 10:30:56 -0400188conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400189conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
190conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400191conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
192conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
193conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
194conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100195conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100196conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400197conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
198conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
199conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
200conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
201conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100202conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400203conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400204conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
205conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400206conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
207conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
208conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
209conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
210conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
211conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400212conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
213conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400214conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400215conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400216conf.set_quoted('LIBDIR', libdir)
217conf.set_quoted('ROOTLIBDIR', rootlibdir)
218conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
219conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400220conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
221conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
222conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
223conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
224conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
225conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100226conf.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'true' : 'false')
Michal Koutný7f672e82018-03-09 18:27:13 +0100227conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400228
229conf.set_quoted('ABS_BUILD_DIR', meson.build_root())
230conf.set_quoted('ABS_SRC_DIR', meson.source_root())
231
232substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400233substs.set('exec_prefix', prefixdir)
234substs.set('libdir', libdir)
235substs.set('rootlibdir', rootlibdir)
236substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400237substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400238substs.set('bindir', bindir)
239substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400240substs.set('rootlibexecdir', rootlibexecdir)
241substs.set('systemunitdir', systemunitdir)
242substs.set('userunitdir', userunitdir)
243substs.set('systempresetdir', systempresetdir)
244substs.set('userpresetdir', userpresetdir)
245substs.set('udevhwdbdir', udevhwdbdir)
246substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400247substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400248substs.set('catalogdir', catalogdir)
249substs.set('tmpfilesdir', tmpfilesdir)
250substs.set('sysusersdir', sysusersdir)
251substs.set('sysctldir', sysctldir)
252substs.set('binfmtdir', binfmtdir)
253substs.set('modulesloaddir', modulesloaddir)
254substs.set('systemgeneratordir', systemgeneratordir)
255substs.set('usergeneratordir', usergeneratordir)
256substs.set('systemenvgeneratordir', systemenvgeneratordir)
257substs.set('userenvgeneratordir', userenvgeneratordir)
258substs.set('systemshutdowndir', systemshutdowndir)
259substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400260substs.set('VARLOGDIR', varlogdir)
261substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400262substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
263substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400264substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
265substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
266substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
267substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100268substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400269
270#####################################################################
271
272cc = meson.get_compiler('c')
273pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400274check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100275meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400276
Adam Duskett08318a22018-01-15 06:25:46 -0500277if get_option('tests') != 'false'
278 cxx = find_program('c++', required : false)
279 if cxx.found()
280 # Used only for tests
281 add_languages('cpp')
282 endif
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400283endif
284
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500285want_ossfuzz = get_option('oss-fuzz')
286want_libfuzzer = get_option('llvm-fuzz')
287fuzzer_build = want_ossfuzz or want_libfuzzer
288if want_ossfuzz and want_libfuzzer
289 error('only one of oss-fuzz and llvm-fuzz can be specified')
290endif
291if want_libfuzzer
292 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
293endif
294if want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500295 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
296endif
297
Zbigniew Jędrzejewski-Szmek75cf1d62017-07-04 17:59:15 -0400298foreach arg : ['-Wextra',
Zbigniew Jędrzejewski-Szmek70160ce2017-10-03 12:11:49 +0200299 '-Werror=undef',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400300 '-Wlogical-op',
301 '-Wmissing-include-dirs',
302 '-Wold-style-definition',
303 '-Wpointer-arith',
304 '-Winit-self',
305 '-Wdeclaration-after-statement',
306 '-Wfloat-equal',
307 '-Wsuggest-attribute=noreturn',
308 '-Werror=missing-prototypes',
309 '-Werror=implicit-function-declaration',
310 '-Werror=missing-declarations',
311 '-Werror=return-type',
312 '-Werror=incompatible-pointer-types',
313 '-Werror=format=2',
314 '-Wstrict-prototypes',
315 '-Wredundant-decls',
316 '-Wmissing-noreturn',
Zbigniew Jędrzejewski-Szmek97279d82017-11-20 14:23:40 +0100317 '-Wimplicit-fallthrough=5',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400318 '-Wshadow',
319 '-Wendif-labels',
320 '-Wstrict-aliasing=2',
321 '-Wwrite-strings',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400322 '-Werror=overflow',
323 '-Wdate-time',
324 '-Wnested-externs',
325 '-ffast-math',
326 '-fno-common',
327 '-fdiagnostics-show-option',
328 '-fno-strict-aliasing',
329 '-fvisibility=hidden',
330 '-fstack-protector',
331 '-fstack-protector-strong',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400332 '--param=ssp-buffer-size=4',
333 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400334 if cc.has_argument(arg)
335 add_project_arguments(arg, language : 'c')
336 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400337endforeach
338
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500339# the oss-fuzz fuzzers are not built with -fPIE, so don't
340# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500341if not fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500342 if cc.has_argument('-fPIE')
343 add_project_arguments('-fPIE', language : 'c')
344 endif
345endif
346
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400347# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
348# arguments, just emits a warnings. So test for the "positive" version instead.
349foreach arg : ['unused-parameter',
350 'missing-field-initializers',
351 'unused-result',
Zbigniew Jędrzejewski-Szmekfb1b5882017-09-04 19:49:12 +0300352 'format-signedness',
353 'error=nonnull', # work-around for gcc 7.1 turning this on on its own
354 ]
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400355 if cc.has_argument('-W' + arg)
356 add_project_arguments('-Wno-' + arg, language : 'c')
357 endif
358endforeach
359
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800360if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400361 #include <time.h>
362 #include <inttypes.h>
363 typedef uint64_t usec_t;
364 usec_t now(clockid_t clock);
365 int main(void) {
366 struct timespec now;
367 return 0;
368 }
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800369''', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400370 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400371endif
372
373if cc.get_id() == 'clang'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400374 foreach arg : ['-Wno-typedef-redefinition',
375 '-Wno-gnu-variable-sized-type-not-at-end',
376 ]
Yu Watanabe8ac42232018-04-26 17:53:10 +0900377 if cc.has_argument(arg)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400378 add_project_arguments(arg, language : 'c')
379 endif
380 endforeach
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400381endif
382
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400383link_test_c = files('tools/meson-link-test.c')
384
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400385# --as-needed and --no-undefined are provided by meson by default,
386# run mesonconf to see what is enabled
387foreach arg : ['-Wl,-z,relro',
388 '-Wl,-z,now',
389 '-pie',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400390 ]
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400391
392 have = run_command(check_compilation_sh,
393 cc.cmd_array(), '-x', 'c', arg,
394 '-include', link_test_c).returncode() == 0
395 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500396 if have and (arg != '-pie' or not fuzzer_build)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400397 add_project_link_arguments(arg, language : 'c')
398 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400399endforeach
400
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400401if get_option('buildtype') != 'debug'
402 foreach arg : ['-ffunction-sections',
403 '-fdata-sections']
Yu Watanabeb0903bb2018-05-02 17:05:51 +0900404 if cc.has_argument(arg)
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400405 add_project_arguments(arg, language : 'c')
406 endif
407 endforeach
408
409 foreach arg : ['-Wl,--gc-sections']
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400410 have = run_command(check_compilation_sh,
411 cc.cmd_array(), '-x', 'c', arg,
412 '-include', link_test_c).returncode() == 0
413 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
414 if have
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400415 add_project_link_arguments(arg, language : 'c')
416 endif
417 endforeach
418endif
419
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400420cpp = ' '.join(cc.cmd_array()) + ' -E'
421
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400422#####################################################################
423# compilation result tests
424
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400425conf.set('_GNU_SOURCE', true)
426conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400427
428conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
429conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
430conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
431conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
432conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
433conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
434conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
435
436decl_headers = '''
437#include <uchar.h>
438#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000439#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100440#include <linux/stat.h>
441#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400442'''
443# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
444
445foreach decl : ['char16_t',
446 'char32_t',
447 'key_serial_t',
448 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000449 'struct fib_rule_uid_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100450 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400451 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400452
453 # We get -1 if the size cannot be determined
454 have = cc.sizeof(decl, prefix : decl_headers) > 0
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200455 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400456endforeach
457
458foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
459 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
460 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
461 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530462 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400463 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
464 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
465 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
466 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
467 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530468 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400469 # if_tunnel.h is buggy and cannot be included on its own
470 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
471 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
472 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
473 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
474 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
475 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
476 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530477 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400478 ['NDA_IFINDEX', 'linux/neighbour.h'],
479 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000480 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400481 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530482 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400483 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400484 prefix = decl.length() > 2 ? decl[2] : ''
485 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200486 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400487endforeach
488
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400489foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200490 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400491endforeach
492
493foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100494 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100495 ['gettid', '''#include <sys/types.h>
496 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100497 ['pivot_root', '''#include <stdlib.h>
498 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100499 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400500 #include <sys/stat.h>
501 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100502 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100503 ['renameat2', '''#include <stdio.h>
504 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400505 ['kcmp', '''#include <linux/kcmp.h>'''],
506 ['keyctl', '''#include <sys/types.h>
507 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100508 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400509 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200510 ['bpf', '''#include <sys/syscall.h>
511 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100512 ['statx', '''#include <sys/types.h>
513 #include <sys/stat.h>
514 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100515 ['explicit_bzero' , '''#include <string.h>'''],
516 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400517]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400518
Lennart Poettering85db59b2017-12-25 12:01:14 +0100519 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200520 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400521endforeach
522
Lennart Poettering85db59b2017-12-25 12:01:14 +0100523if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200524 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200525 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400526else
527 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200528 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200529 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400530endif
531
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400532#####################################################################
533
534sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400535awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400536m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400537stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400538git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100539env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100540perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400541
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400542meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400543mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400544test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
545splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400546
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400547# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
548# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500549progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400550 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400551 ['kmod', '/usr/bin/kmod' ],
552 ['kexec', '/usr/sbin/kexec' ],
553 ['sulogin', '/usr/sbin/sulogin' ],
554 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
555 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
556 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
557 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
558 ]
559foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400560 path = get_option(prog[0] + '-path')
561 if path != ''
562 message('Using @1@ for @0@'.format(prog[0], path))
563 else
564 exe = find_program(prog[0],
565 '/usr/sbin/' + prog[0],
566 '/sbin/' + prog[0],
567 required: false)
568 path = exe.found() ? exe.path() : prog[1]
569 endif
570 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
571 conf.set_quoted(name, path)
572 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400573endforeach
574
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500575conf.set_quoted('TELINIT', get_option('telinit-path'))
576
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400577if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100578 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400579endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400580
581############################################################
582
583gperf = find_program('gperf')
584
585gperf_test_format = '''
586#include <string.h>
587const char * in_word_set(const char *, @0@);
588@1@
589'''
590gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
591gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
592gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
593if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400594 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400595else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400596 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
597 if cc.compiles(gperf_test)
598 gperf_len_type = 'unsigned'
599 else
600 error('unable to determine gperf len type')
601 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400602endif
603message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400604conf.set('GPERF_LEN_TYPE', gperf_len_type,
605 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400606
607############################################################
608
609if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400610 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400611endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100612foreach header : ['crypt.h',
613 'linux/btrfs.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400614 'linux/memfd.h',
615 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200616 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400617 'valgrind/memcheck.h',
618 'valgrind/valgrind.h',
619 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400620
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200621 conf.set10('HAVE_' + header.underscorify().to_upper(),
622 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400623endforeach
624
625############################################################
626
627conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400628conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
629gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400630
631default_hierarchy = get_option('default-hierarchy')
632conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
633 description : 'default cgroup hierarchy as string')
634if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400635 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400636elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400637 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400638else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400639 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400640endif
641
642time_epoch = get_option('time-epoch')
643if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400644 NEWS = files('NEWS')
645 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400646endif
647time_epoch = time_epoch.to_int()
648conf.set('TIME_EPOCH', time_epoch)
649
650system_uid_max = get_option('system-uid-max')
651if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400652 system_uid_max = run_command(
653 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800654 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
655 '/etc/login.defs').stdout().strip()
656 if system_uid_max == ''
657 system_uid_max = '999'
658 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400659endif
660system_uid_max = system_uid_max.to_int()
661conf.set('SYSTEM_UID_MAX', system_uid_max)
662substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400663message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400664
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400665system_gid_max = get_option('system-gid-max')
666if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400667 system_gid_max = run_command(
668 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800669 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
670 '/etc/login.defs').stdout().strip()
671 if system_gid_max == ''
672 system_gid_max = '999'
673 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400674endif
675system_gid_max = system_gid_max.to_int()
676conf.set('SYSTEM_GID_MAX', system_gid_max)
677substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400678message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400679
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100680dynamic_uid_min = get_option('dynamic-uid-min').to_int()
681dynamic_uid_max = get_option('dynamic-uid-max').to_int()
682conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
683conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
684substs.set('dynamicuidmin', dynamic_uid_min)
685substs.set('dynamicuidmax', dynamic_uid_max)
686
687container_uid_base_min = get_option('container-uid-base-min').to_int()
688container_uid_base_max = get_option('container-uid-base-max').to_int()
689conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
690conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
691substs.set('containeruidbasemin', container_uid_base_min)
692substs.set('containeruidbasemax', container_uid_base_max)
693
Lennart Poetteringafde4572017-12-05 11:00:24 +0100694nobody_user = get_option('nobody-user')
695nobody_group = get_option('nobody-group')
696
697getent_result = run_command('getent', 'passwd', '65534')
698if getent_result.returncode() == 0
699 name = getent_result.stdout().split(':')[0]
700 if name != nobody_user
701 message('WARNING:\n' +
702 ' 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) +
703 ' Your build will result in an user table setup that is incompatible with the local system.')
704 endif
705endif
706id_result = run_command('id', '-u', nobody_user)
707if id_result.returncode() == 0
708 id = id_result.stdout().to_int()
709 if id != 65534
710 message('WARNING:\n' +
711 ' 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) +
712 ' Your build will result in an user table setup that is incompatible with the local system.')
713 endif
714endif
715
716getent_result = run_command('getent', 'group', '65534')
717if getent_result.returncode() == 0
718 name = getent_result.stdout().split(':')[0]
719 if name != nobody_group
720 message('WARNING:\n' +
721 ' 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) +
722 ' Your build will result in an group table setup that is incompatible with the local system.')
723 endif
724endif
725id_result = run_command('id', '-g', nobody_group)
726if id_result.returncode() == 0
727 id = id_result.stdout().to_int()
728 if id != 65534
729 message('WARNING:\n' +
730 ' 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) +
731 ' Your build will result in an group table setup that is incompatible with the local system.')
732 endif
733endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900734if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
735 message('WARNING:\n' +
736 ' The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
737 ' Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
738endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100739
740conf.set_quoted('NOBODY_USER_NAME', nobody_user)
741conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900742substs.set('NOBODY_USER_NAME', nobody_user)
743substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100744
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400745tty_gid = get_option('tty-gid')
746conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400747substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400748
Ikey Doherty84786b82017-12-03 12:28:23 +0000749# Ensure provided GID argument is numeric, otherwise fallback to default assignment
750if get_option('users-gid') != ''
Yu Watanabed6806872017-12-05 14:01:39 +0900751 users_gid = get_option('users-gid').to_int()
Ikey Doherty84786b82017-12-03 12:28:23 +0000752else
Yu Watanabed6806872017-12-05 14:01:39 +0900753 users_gid = '-'
Ikey Doherty84786b82017-12-03 12:28:23 +0000754endif
755substs.set('USERS_GID', users_gid)
756
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400757if get_option('adm-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400758 m4_defines += ['-DENABLE_ADM_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400759endif
760
761if get_option('wheel-group')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400762 m4_defines += ['-DENABLE_WHEEL_GROUP']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400763endif
764
765substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700766substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400767
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400768kill_user_processes = get_option('default-kill-user-processes')
769conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100770conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400771substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400772
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400773dns_servers = get_option('dns-servers')
774conf.set_quoted('DNS_SERVERS', dns_servers)
775substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400776
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400777ntp_servers = get_option('ntp-servers')
778conf.set_quoted('NTP_SERVERS', ntp_servers)
779substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400780
781conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
782
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400783substs.set('SUSHELL', get_option('debug-shell'))
784substs.set('DEBUGTTY', get_option('debug-tty'))
785
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400786debug = get_option('debug')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200787enable_debug_hashmap = false
788enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400789if debug != ''
790 foreach name : debug.split(',')
791 if name == 'hashmap'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200792 enable_debug_hashmap = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400793 elif name == 'mmap-cache'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200794 enable_debug_mmap_cache = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400795 else
796 message('unknown debug option "@0@", ignoring'.format(name))
797 endif
798 endforeach
799endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200800conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
801conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400802
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400803#####################################################################
804
805threads = dependency('threads')
806librt = cc.find_library('rt')
807libm = cc.find_library('m')
808libdl = cc.find_library('dl')
809libcrypt = cc.find_library('crypt')
810
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400811libcap = dependency('libcap', required : false)
812if not libcap.found()
813 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
814 libcap = cc.find_library('cap')
815endif
816
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400817libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100818 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400819
820want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500821if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400822 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400823 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400824 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200825 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400826else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200827 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400828 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400829endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200830conf.set10('HAVE_SECCOMP', have)
831m4_defines += have ? ['-DHAVE_SECCOMP'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400832
833want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500834if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400835 libselinux = dependency('libselinux',
836 version : '>= 2.1.9',
837 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200838 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400839else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200840 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400841 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400842endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200843conf.set10('HAVE_SELINUX', have)
844m4_defines += have ? ['-DHAVE_SELINUX'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400845
846want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500847if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400848 libapparmor = dependency('libapparmor',
849 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200850 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400851else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200852 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400853 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400854endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200855conf.set10('HAVE_APPARMOR', have)
856m4_defines += have ? ['-DHAVE_APPARMOR'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400857
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400858smack_run_label = get_option('smack-run-label')
859if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400860 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
861 m4_defines += ['-DHAVE_SMACK_RUN_LABEL']
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400862endif
863
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400864want_polkit = get_option('polkit')
865install_polkit = false
866install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500867if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400868 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400869
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400870 libpolkit = dependency('polkit-gobject-1',
871 required : false)
872 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
873 message('Old polkit detected, will install pkla files')
874 install_polkit_pkla = true
875 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400876endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200877conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400878
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400879want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500880if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400881 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200882 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400883else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200884 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400885 libacl = []
886endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200887conf.set10('HAVE_ACL', have)
888m4_defines += have ? ['-DHAVE_ACL'] : []
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400889
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400890want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500891if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400892 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200893 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400894else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200895 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400896 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400897endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200898conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400899
900want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500901if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400902 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200903 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400904else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200905 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400906 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400907endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200908conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400909
910want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500911if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400912 libkmod = dependency('libkmod',
913 version : '>= 15',
914 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200915 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400916else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200917 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400918 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400919endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200920conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400921
922want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500923if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400924 libpam = cc.find_library('pam', required : want_pam == 'true')
925 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200926 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400927else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200928 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400929 libpam = []
930 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400931endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200932conf.set10('HAVE_PAM', have)
933m4_defines += have ? ['-DHAVE_PAM'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400934
935want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500936if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400937 libmicrohttpd = dependency('libmicrohttpd',
938 version : '>= 0.9.33',
939 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200940 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400941else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200942 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400943 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400944endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200945conf.set10('HAVE_MICROHTTPD', have)
946m4_defines += have ? ['-DHAVE_MICROHTTPD'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400947
948want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500949if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400950 libcryptsetup = dependency('libcryptsetup',
951 version : '>= 1.6.0',
952 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200953 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400954else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200955 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400956 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400957endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200958conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400959
960want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500961if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400962 libcurl = dependency('libcurl',
963 version : '>= 7.32.0',
964 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200965 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400966else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200967 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400968 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400969endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200970conf.set10('HAVE_LIBCURL', have)
971m4_defines += have ? ['-DHAVE_LIBCURL'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400972
973want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400974want_libidn2 = get_option('libidn2')
975if want_libidn == 'true' and want_libidn2 == 'true'
976 error('libidn and libidn2 cannot be requested simultaneously')
977endif
978
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500979if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400980 libidn = dependency('libidn',
981 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200982 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400983else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200984 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400985 libidn = []
986endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200987conf.set10('HAVE_LIBIDN', have)
988m4_defines += have ? ['-DHAVE_LIBIDN'] : []
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500989if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400990 # libidn is used for both libidn and libidn2 objects
991 libidn = dependency('libidn2',
992 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200993 have = libidn.found()
994else
995 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400996endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200997conf.set10('HAVE_LIBIDN2', have)
998m4_defines += have ? ['-DHAVE_LIBIDN2'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400999
1000want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001001if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001002 libiptc = dependency('libiptc',
1003 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001004 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001005else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001006 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001007 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001008endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001009conf.set10('HAVE_LIBIPTC', have)
1010m4_defines += have ? ['-DHAVE_LIBIPTC'] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001011
1012want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001013if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001014 libqrencode = dependency('libqrencode',
1015 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001016 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001017else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001018 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001019 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001020endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001021conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001022
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001023want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001024if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001025 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1026 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001027 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001028else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001029 have = false
1030endif
1031if not have
1032 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001033 libgcrypt = []
1034 libgpg_error = []
1035endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001036conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001037
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001038want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001039if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001040 libgnutls = dependency('gnutls',
1041 version : '>= 3.1.4',
1042 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001043 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001044else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001045 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001046 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001047endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001048conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001049
1050want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001051if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001052 libdw = dependency('libdw',
1053 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001054 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001055else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001056 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001057 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001058endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001059conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001060
1061want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001062if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001063 libz = dependency('zlib',
1064 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001065 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001066else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001067 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001068 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001069endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001070conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001071
1072want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001073if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001074 libbzip2 = cc.find_library('bz2',
1075 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001076 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001077else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001078 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001079 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001080endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001081conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001082
1083want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001084if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001085 libxz = dependency('liblzma',
1086 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001087 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001088else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001089 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001090 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001091endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001092conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001093
1094want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001095if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001096 liblz4 = dependency('liblz4',
1097 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001098 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001099else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001100 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001101 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001102endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001103conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001104
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001105want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001106if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001107 libxkbcommon = dependency('xkbcommon',
1108 version : '>= 0.3.0',
1109 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001110 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001111else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001112 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001113 libxkbcommon = []
1114endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001115conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001116
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001117want_pcre2 = get_option('pcre2')
1118if want_pcre2 != 'false'
1119 libpcre2 = dependency('libpcre2-8',
1120 required : want_pcre2 == 'true')
1121 have = libpcre2.found()
1122else
1123 have = false
1124 libpcre2 = []
1125endif
1126conf.set10('HAVE_PCRE2', have)
1127
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001128want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001129if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001130 libglib = dependency('glib-2.0',
1131 version : '>= 2.22.0',
1132 required : want_glib == 'true')
1133 libgobject = dependency('gobject-2.0',
1134 version : '>= 2.22.0',
1135 required : want_glib == 'true')
1136 libgio = dependency('gio-2.0',
1137 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001138 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001139else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001140 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001141 libglib = []
1142 libgobject = []
1143 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001144endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001145conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001146
1147want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001148if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001149 libdbus = dependency('dbus-1',
1150 version : '>= 1.3.2',
1151 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001152 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001153else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001154 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001155 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001156endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001157conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001158
Yu Watanabe42303dc2017-06-18 05:22:32 +09001159default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001160if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001161 default_dnssec = 'no'
1162endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001163if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001164 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1165 default_dnssec = 'no'
1166endif
1167conf.set('DEFAULT_DNSSEC_MODE',
1168 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1169substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1170
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001171want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001172if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001173 have = (conf.get('HAVE_LIBCURL') == 1 and
1174 conf.get('HAVE_ZLIB') == 1 and
1175 conf.get('HAVE_BZIP2') == 1 and
1176 conf.get('HAVE_XZ') == 1 and
1177 conf.get('HAVE_GCRYPT') == 1)
1178 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001179 error('importd support was requested, but dependencies are not available')
1180 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001181else
1182 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001183endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001184conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001185
1186want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001187if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001188 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1189 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001190 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1191 # it's possible to build one without the other. Complain only if
1192 # support was explictly requested. The auxiliary files like sysusers
1193 # config should be installed when any of the programs are built.
1194 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1195 error('remote support was requested, but dependencies are not available')
1196 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001197 have = have_deps[0] or have_deps[1]
1198else
1199 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001200endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001201conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001202
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001203foreach term : ['utmp',
1204 'hibernate',
1205 'environment-d',
1206 'binfmt',
1207 'coredump',
1208 'resolve',
1209 'logind',
1210 'hostnamed',
1211 'localed',
1212 'machined',
1213 'networkd',
1214 'timedated',
1215 'timesyncd',
1216 'myhostname',
1217 'firstboot',
1218 'randomseed',
1219 'backlight',
1220 'vconsole',
1221 'quotacheck',
1222 'sysusers',
1223 'tmpfiles',
1224 'hwdb',
1225 'rfkill',
1226 'ldconfig',
1227 'efi',
1228 'tpm',
1229 'ima',
1230 'smack',
1231 'gshadow',
1232 'idn',
1233 'nss-systemd']
1234 have = get_option(term)
1235 name = 'ENABLE_' + term.underscorify().to_upper()
1236 conf.set10(name, have)
1237 m4_defines += have ? ['-D' + name] : []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001238endforeach
1239
Yu Watanabe6129ec82018-05-03 18:07:43 +09001240if get_option('timedated') or get_option('timesyncd')
1241 conf.set10('ENABLE_TIMEDATECTL', true)
1242 m4_defines += ['-DENABLE_TIMEDATECTL']
1243else
1244 conf.set10('ENABLE_TIMEDATECTL', false)
1245endif
1246
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001247want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001248install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001249slow_tests = get_option('slow-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001250tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001251fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001252
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001253conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001254
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001255#####################################################################
1256
1257if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001258 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001259
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001260 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001261 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001262 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001263 elif efi_arch == 'x86_64'
1264 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001265 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001266 elif efi_arch == 'arm'
1267 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001268 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001269 elif efi_arch == 'aarch64'
1270 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001271 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001272 else
1273 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001274 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001275 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001276
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001277 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001278 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001279
1280 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001281else
1282 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001283endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001284conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001285
1286#####################################################################
1287
1288config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001289 output : 'config.h',
1290 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001291
1292includes = include_directories('src/basic',
1293 'src/shared',
1294 'src/systemd',
1295 'src/journal',
1296 'src/resolve',
1297 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001298 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001299 'src/login',
1300 'src/udev',
1301 'src/libudev',
1302 'src/core',
1303 'src/libsystemd/sd-bus',
1304 'src/libsystemd/sd-device',
1305 'src/libsystemd/sd-hwdb',
1306 'src/libsystemd/sd-id128',
1307 'src/libsystemd/sd-netlink',
1308 'src/libsystemd/sd-network',
1309 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001310 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001311
1312add_project_arguments('-include', 'config.h', language : 'c')
1313
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001314subdir('po')
1315subdir('catalog')
1316subdir('src/systemd')
1317subdir('src/basic')
1318subdir('src/libsystemd')
1319subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001320subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001321subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001322
1323libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001324 'journal-core',
1325 libjournal_core_sources,
1326 journald_gperf_c,
1327 include_directories : includes,
1328 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001329
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001330libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001331libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001332 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001333 '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 +02001334 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001335 include_directories : includes,
1336 link_args : ['-shared',
1337 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001338 link_with : [libbasic,
1339 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001340 link_whole : [libsystemd_static,
1341 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001342 dependencies : [threads,
1343 librt,
1344 libxz,
1345 liblz4],
1346 link_depends : libsystemd_sym,
1347 install : true,
1348 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001349
1350############################################################
1351
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001352# binaries that have --help and are intended for use by humans,
1353# usually, but not always, installed in /bin.
1354public_programs = []
1355
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001356subdir('src/libudev')
1357subdir('src/shared')
1358subdir('src/core')
1359subdir('src/udev')
1360subdir('src/network')
1361
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001362subdir('src/analyze')
1363subdir('src/journal-remote')
1364subdir('src/coredump')
1365subdir('src/hostname')
1366subdir('src/import')
1367subdir('src/kernel-install')
1368subdir('src/locale')
1369subdir('src/machine')
1370subdir('src/nspawn')
1371subdir('src/resolve')
1372subdir('src/timedate')
1373subdir('src/timesync')
1374subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001375subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001376
1377subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001378subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001379subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001380subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001381
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001382############################################################
1383
1384# only static linking apart from libdl, to make sure that the
1385# module is linked to all libraries that it uses.
1386test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001387 'test-dlopen',
1388 test_dlopen_c,
1389 include_directories : includes,
1390 link_with : [libbasic],
1391 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001392
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001393foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001394 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001395 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001396 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001397
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001398 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001399 if condition
1400 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001401
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001402 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1403 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001404
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001405 nss = shared_library(
1406 'nss_' + module,
1407 'src/nss-@0@/nss-@0@.c'.format(module),
1408 version : '2',
1409 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001410 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1411 link_args : ['-Wl,-z,nodelete',
1412 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001413 '-Wl,--version-script=' + version_script_arg,
1414 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001415 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001416 libbasic],
1417 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001418 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001419 link_depends : sym,
1420 install : true,
1421 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001422
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001423 # We cannot use shared_module because it does not support version suffix.
1424 # Unfortunately shared_library insists on creating the symlink…
1425 meson.add_install_script('sh', '-c',
1426 'rm $DESTDIR@0@/libnss_@1@.so'
1427 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001428
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001429 test('dlopen-nss_' + module,
1430 test_dlopen,
1431 args : [nss.full_path()]) # path to dlopen must include a slash
1432 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001433endforeach
1434
1435############################################################
1436
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001437executable('systemd',
1438 systemd_sources,
1439 include_directories : includes,
1440 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001441 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001442 dependencies : [threads,
1443 librt,
1444 libseccomp,
1445 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001446 libmount,
1447 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001448 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001449 install : true,
1450 install_dir : rootlibexecdir)
1451
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001452meson.add_install_script(meson_make_symlink,
1453 join_paths(rootlibexecdir, 'systemd'),
1454 join_paths(rootsbindir, 'init'))
1455
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001456exe = executable('systemd-analyze',
1457 systemd_analyze_sources,
1458 include_directories : includes,
1459 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001460 libshared],
1461 dependencies : [threads,
1462 librt,
1463 libseccomp,
1464 libselinux,
1465 libmount,
1466 libblkid],
1467 install_rpath : rootlibexecdir,
1468 install : true)
1469public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001470
1471executable('systemd-journald',
1472 systemd_journald_sources,
1473 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001474 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001475 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001476 dependencies : [threads,
1477 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001478 liblz4,
1479 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001480 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001481 install : true,
1482 install_dir : rootlibexecdir)
1483
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001484exe = executable('systemd-cat',
1485 systemd_cat_sources,
1486 include_directories : includes,
1487 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001488 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001489 dependencies : [threads],
1490 install_rpath : rootlibexecdir,
1491 install : true)
1492public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001493
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001494exe = executable('journalctl',
1495 journalctl_sources,
1496 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001497 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001498 dependencies : [threads,
1499 libqrencode,
1500 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001501 liblz4,
1502 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001503 install_rpath : rootlibexecdir,
1504 install : true,
1505 install_dir : rootbindir)
1506public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001507
1508executable('systemd-getty-generator',
1509 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001510 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001511 link_with : [libshared],
1512 install_rpath : rootlibexecdir,
1513 install : true,
1514 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001515
1516executable('systemd-debug-generator',
1517 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001518 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001519 link_with : [libshared],
1520 install_rpath : rootlibexecdir,
1521 install : true,
1522 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001523
1524executable('systemd-fstab-generator',
1525 'src/fstab-generator/fstab-generator.c',
1526 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001527 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001528 link_with : [libshared],
1529 install_rpath : rootlibexecdir,
1530 install : true,
1531 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001532
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001533if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001534 executable('30-systemd-environment-d-generator',
1535 'src/environment-d-generator/environment-d-generator.c',
1536 include_directories : includes,
1537 link_with : [libshared],
1538 install_rpath : rootlibexecdir,
1539 install : true,
1540 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001541
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001542 meson.add_install_script(meson_make_symlink,
1543 join_paths(sysconfdir, 'environment'),
1544 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001545endif
1546
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001547if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001548 executable('systemd-hibernate-resume-generator',
1549 'src/hibernate-resume/hibernate-resume-generator.c',
1550 include_directories : includes,
1551 link_with : [libshared],
1552 install_rpath : rootlibexecdir,
1553 install : true,
1554 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001555
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001556 executable('systemd-hibernate-resume',
1557 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001558 include_directories : includes,
1559 link_with : [libshared],
1560 install_rpath : rootlibexecdir,
1561 install : true,
1562 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001563endif
1564
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001565if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001566 executable('systemd-gpt-auto-generator',
1567 'src/gpt-auto-generator/gpt-auto-generator.c',
1568 'src/basic/blkid-util.h',
1569 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001570 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001571 dependencies : libblkid,
1572 install_rpath : rootlibexecdir,
1573 install : true,
1574 install_dir : systemgeneratordir)
1575
1576 exe = executable('systemd-dissect',
1577 'src/dissect/dissect.c',
1578 include_directories : includes,
1579 link_with : [libshared],
1580 install_rpath : rootlibexecdir,
1581 install : true,
1582 install_dir : rootlibexecdir)
1583 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001584endif
1585
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001586if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001587 executable('systemd-resolved',
1588 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001589 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001590 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001591 libbasic_gcrypt,
1592 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001593 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001594 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001595 libm,
1596 libidn],
1597 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001598 install : true,
1599 install_dir : rootlibexecdir)
1600
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001601 exe = executable('resolvectl',
1602 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001603 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001604 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001605 libbasic_gcrypt,
1606 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001607 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001608 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001609 libm,
1610 libidn],
1611 install_rpath : rootlibexecdir,
1612 install : true)
1613 public_programs += [exe]
Lennart Poettering088c1362018-02-27 17:48:54 +01001614
1615 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001616 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001617 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001618
1619 meson.add_install_script(meson_make_symlink,
1620 join_paths(bindir, 'resolvectl'),
1621 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001622endif
1623
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001624if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001625 executable('systemd-logind',
1626 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001627 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001628 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001629 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001630 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001631 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001632 install_rpath : rootlibexecdir,
1633 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001634 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001635
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001636 exe = executable('loginctl',
1637 loginctl_sources,
1638 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001639 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001640 dependencies : [threads,
1641 liblz4,
1642 libxz],
1643 install_rpath : rootlibexecdir,
1644 install : true,
1645 install_dir : rootbindir)
1646 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001647
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001648 exe = executable('systemd-inhibit',
1649 'src/login/inhibit.c',
1650 include_directories : includes,
1651 link_with : [libshared],
1652 install_rpath : rootlibexecdir,
1653 install : true,
1654 install_dir : rootbindir)
1655 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001656
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001657 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001658 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1659 pam_systemd = shared_library(
1660 'pam_systemd',
1661 pam_systemd_c,
1662 name_prefix : '',
1663 include_directories : includes,
1664 link_args : ['-shared',
1665 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001666 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001667 libshared_static],
1668 dependencies : [threads,
1669 libpam,
1670 libpam_misc],
1671 link_depends : pam_systemd_sym,
1672 install : true,
1673 install_dir : pamlibdir)
1674
1675 test('dlopen-pam_systemd',
1676 test_dlopen,
1677 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1678 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001679endif
1680
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001681executable('systemd-user-runtime-dir',
1682 user_runtime_dir_sources,
1683 include_directories : includes,
1684 link_with : [libshared, liblogind_core],
1685 install_rpath : rootlibexecdir,
1686 install : true,
1687 install_dir : rootlibexecdir)
1688
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001689if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001690 executable('systemd-user-sessions',
1691 'src/user-sessions/user-sessions.c',
1692 include_directories : includes,
1693 link_with : [libshared],
1694 install_rpath : rootlibexecdir,
1695 install : true,
1696 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001697endif
1698
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001699if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001700 exe = executable('bootctl',
1701 'src/boot/bootctl.c',
1702 include_directories : includes,
1703 link_with : [libshared],
1704 dependencies : [libblkid],
1705 install_rpath : rootlibexecdir,
1706 install : true)
1707 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001708endif
1709
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001710exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1711 include_directories : includes,
1712 link_with : [libshared],
1713 dependencies : [threads],
1714 install_rpath : rootlibexecdir,
1715 install : true)
1716public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001717
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001718exe = executable('systemctl', 'src/systemctl/systemctl.c',
1719 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001720 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001721 dependencies : [threads,
1722 libcap,
1723 libselinux,
1724 libxz,
1725 liblz4],
1726 install_rpath : rootlibexecdir,
1727 install : true,
1728 install_dir : rootbindir)
1729public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001730
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001731foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1732 meson.add_install_script(meson_make_symlink,
1733 join_paths(rootbindir, 'systemctl'),
1734 join_paths(rootsbindir, alias))
1735endforeach
1736
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001737if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001738 executable('systemd-backlight',
1739 'src/backlight/backlight.c',
1740 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001741 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001742 install_rpath : rootlibexecdir,
1743 install : true,
1744 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001745endif
1746
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001747if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001748 executable('systemd-rfkill',
1749 'src/rfkill/rfkill.c',
1750 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001751 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001752 install_rpath : rootlibexecdir,
1753 install : true,
1754 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001755endif
1756
1757executable('systemd-system-update-generator',
1758 'src/system-update-generator/system-update-generator.c',
1759 include_directories : includes,
1760 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001761 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001762 install : true,
1763 install_dir : systemgeneratordir)
1764
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001765if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001766 executable('systemd-cryptsetup',
1767 'src/cryptsetup/cryptsetup.c',
1768 include_directories : includes,
1769 link_with : [libshared],
1770 dependencies : [libcryptsetup],
1771 install_rpath : rootlibexecdir,
1772 install : true,
1773 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001774
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001775 executable('systemd-cryptsetup-generator',
1776 'src/cryptsetup/cryptsetup-generator.c',
1777 include_directories : includes,
1778 link_with : [libshared],
1779 dependencies : [libcryptsetup],
1780 install_rpath : rootlibexecdir,
1781 install : true,
1782 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001783
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001784 executable('systemd-veritysetup',
1785 'src/veritysetup/veritysetup.c',
1786 include_directories : includes,
1787 link_with : [libshared],
1788 dependencies : [libcryptsetup],
1789 install_rpath : rootlibexecdir,
1790 install : true,
1791 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001792
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001793 executable('systemd-veritysetup-generator',
1794 'src/veritysetup/veritysetup-generator.c',
1795 include_directories : includes,
1796 link_with : [libshared],
1797 dependencies : [libcryptsetup],
1798 install_rpath : rootlibexecdir,
1799 install : true,
1800 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001801endif
1802
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001803if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001804 executable('systemd-sysv-generator',
1805 'src/sysv-generator/sysv-generator.c',
1806 include_directories : includes,
1807 link_with : [libshared],
1808 install_rpath : rootlibexecdir,
1809 install : true,
1810 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001811
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001812 executable('systemd-rc-local-generator',
1813 'src/rc-local-generator/rc-local-generator.c',
1814 include_directories : includes,
1815 link_with : [libshared],
1816 install_rpath : rootlibexecdir,
1817 install : true,
1818 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001819endif
1820
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001821if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001822 executable('systemd-hostnamed',
1823 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001824 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001825 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001826 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001827 install : true,
1828 install_dir : rootlibexecdir)
1829
1830 exe = executable('hostnamectl',
1831 'src/hostname/hostnamectl.c',
1832 include_directories : includes,
1833 link_with : [libshared],
1834 install_rpath : rootlibexecdir,
1835 install : true)
1836 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001837endif
1838
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001839if conf.get('ENABLE_LOCALED') == 1
1840 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001841 # logind will load libxkbcommon.so dynamically on its own
1842 deps = [libdl]
1843 else
1844 deps = []
1845 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001846
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001847 executable('systemd-localed',
1848 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001849 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001850 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001851 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001852 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001853 install : true,
1854 install_dir : rootlibexecdir)
1855
1856 exe = executable('localectl',
1857 localectl_sources,
1858 include_directories : includes,
1859 link_with : [libshared],
1860 install_rpath : rootlibexecdir,
1861 install : true)
1862 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001863endif
1864
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001865if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001866 executable('systemd-timedated',
1867 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001868 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001869 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001870 install_rpath : rootlibexecdir,
1871 install : true,
1872 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09001873endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001874
Yu Watanabe6129ec82018-05-03 18:07:43 +09001875if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001876 exe = executable('timedatectl',
1877 'src/timedate/timedatectl.c',
1878 include_directories : includes,
1879 install_rpath : rootlibexecdir,
1880 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09001881 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001882 install : true)
1883 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001884endif
1885
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001886if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001887 executable('systemd-timesyncd',
1888 systemd_timesyncd_sources,
1889 include_directories : includes,
1890 link_with : [libshared],
1891 dependencies : [threads,
1892 libm],
1893 install_rpath : rootlibexecdir,
1894 install : true,
1895 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001896
1897 executable('systemd-time-wait-sync',
1898 'src/time-wait-sync/time-wait-sync.c',
1899 include_directories : includes,
1900 link_with : [libshared],
1901 install_rpath : rootlibexecdir,
1902 install : true,
1903 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001904endif
1905
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001906if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001907 executable('systemd-machined',
1908 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001909 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001910 link_with : [libmachine_core,
1911 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001912 install_rpath : rootlibexecdir,
1913 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001914 install_dir : rootlibexecdir)
1915
1916 exe = executable('machinectl',
1917 'src/machine/machinectl.c',
1918 include_directories : includes,
1919 link_with : [libshared],
1920 dependencies : [threads,
1921 libxz,
1922 liblz4],
1923 install_rpath : rootlibexecdir,
1924 install : true,
1925 install_dir : rootbindir)
1926 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001927endif
1928
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001929if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001930 executable('systemd-importd',
1931 systemd_importd_sources,
1932 include_directories : includes,
1933 link_with : [libshared],
1934 dependencies : [threads],
1935 install_rpath : rootlibexecdir,
1936 install : true,
1937 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001938
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001939 systemd_pull = executable('systemd-pull',
1940 systemd_pull_sources,
1941 include_directories : includes,
1942 link_with : [libshared],
1943 dependencies : [libcurl,
1944 libz,
1945 libbzip2,
1946 libxz,
1947 libgcrypt],
1948 install_rpath : rootlibexecdir,
1949 install : true,
1950 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001951
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001952 systemd_import = executable('systemd-import',
1953 systemd_import_sources,
1954 include_directories : includes,
1955 link_with : [libshared],
1956 dependencies : [libcurl,
1957 libz,
1958 libbzip2,
1959 libxz],
1960 install_rpath : rootlibexecdir,
1961 install : true,
1962 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001963
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001964 systemd_export = executable('systemd-export',
1965 systemd_export_sources,
1966 include_directories : includes,
1967 link_with : [libshared],
1968 dependencies : [libcurl,
1969 libz,
1970 libbzip2,
1971 libxz],
1972 install_rpath : rootlibexecdir,
1973 install : true,
1974 install_dir : rootlibexecdir)
1975 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001976endif
1977
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001978if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001979 exe = executable('systemd-journal-upload',
1980 systemd_journal_upload_sources,
1981 include_directories : includes,
1982 link_with : [libshared],
1983 dependencies : [threads,
1984 libcurl,
1985 libgnutls,
1986 libxz,
1987 liblz4],
1988 install_rpath : rootlibexecdir,
1989 install : true,
1990 install_dir : rootlibexecdir)
1991 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001992endif
1993
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001994if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001995 s_j_remote = executable('systemd-journal-remote',
1996 systemd_journal_remote_sources,
1997 include_directories : includes,
1998 link_with : [libshared],
1999 dependencies : [threads,
2000 libmicrohttpd,
2001 libgnutls,
2002 libxz,
2003 liblz4],
2004 install_rpath : rootlibexecdir,
2005 install : true,
2006 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002007
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002008 s_j_gatewayd = executable('systemd-journal-gatewayd',
2009 systemd_journal_gatewayd_sources,
2010 include_directories : includes,
2011 link_with : [libshared],
2012 dependencies : [threads,
2013 libmicrohttpd,
2014 libgnutls,
2015 libxz,
2016 liblz4],
2017 install_rpath : rootlibexecdir,
2018 install : true,
2019 install_dir : rootlibexecdir)
2020 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002021endif
2022
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002023if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002024 executable('systemd-coredump',
2025 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002026 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002027 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002028 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002029 libacl,
2030 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002031 libxz,
2032 liblz4],
2033 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002034 install : true,
2035 install_dir : rootlibexecdir)
2036
2037 exe = executable('coredumpctl',
2038 coredumpctl_sources,
2039 include_directories : includes,
2040 link_with : [libshared],
2041 dependencies : [threads,
2042 libxz,
2043 liblz4],
2044 install_rpath : rootlibexecdir,
2045 install : true)
2046 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002047endif
2048
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002049if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002050 exe = executable('systemd-binfmt',
2051 'src/binfmt/binfmt.c',
2052 include_directories : includes,
2053 link_with : [libshared],
2054 install_rpath : rootlibexecdir,
2055 install : true,
2056 install_dir : rootlibexecdir)
2057 public_programs += [exe]
2058
2059 meson.add_install_script('sh', '-c',
2060 mkdir_p.format(binfmtdir))
2061 meson.add_install_script('sh', '-c',
2062 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2063endif
2064
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002065if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002066 executable('systemd-vconsole-setup',
2067 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002068 include_directories : includes,
2069 link_with : [libshared],
2070 install_rpath : rootlibexecdir,
2071 install : true,
2072 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002073endif
2074
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002075if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002076 executable('systemd-random-seed',
2077 'src/random-seed/random-seed.c',
2078 include_directories : includes,
2079 link_with : [libshared],
2080 install_rpath : rootlibexecdir,
2081 install : true,
2082 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002083endif
2084
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002085if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002086 executable('systemd-firstboot',
2087 'src/firstboot/firstboot.c',
2088 include_directories : includes,
2089 link_with : [libshared],
2090 dependencies : [libcrypt],
2091 install_rpath : rootlibexecdir,
2092 install : true,
2093 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002094endif
2095
2096executable('systemd-remount-fs',
2097 'src/remount-fs/remount-fs.c',
2098 'src/core/mount-setup.c',
2099 'src/core/mount-setup.h',
2100 include_directories : includes,
2101 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002102 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002103 install : true,
2104 install_dir : rootlibexecdir)
2105
2106executable('systemd-machine-id-setup',
2107 'src/machine-id-setup/machine-id-setup-main.c',
2108 'src/core/machine-id-setup.c',
2109 'src/core/machine-id-setup.h',
2110 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002111 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002112 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002113 install : true,
2114 install_dir : rootbindir)
2115
2116executable('systemd-fsck',
2117 'src/fsck/fsck.c',
2118 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002119 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002120 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002121 install : true,
2122 install_dir : rootlibexecdir)
2123
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002124executable('systemd-growfs',
2125 'src/partition/growfs.c',
2126 include_directories : includes,
2127 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002128 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002129 install_rpath : rootlibexecdir,
2130 install : true,
2131 install_dir : rootlibexecdir)
2132
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002133executable('systemd-makefs',
2134 'src/partition/makefs.c',
2135 include_directories : includes,
2136 link_with : [libshared],
2137 install_rpath : rootlibexecdir,
2138 install : true,
2139 install_dir : rootlibexecdir)
2140
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002141executable('systemd-sleep',
2142 'src/sleep/sleep.c',
2143 include_directories : includes,
2144 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002145 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002146 install : true,
2147 install_dir : rootlibexecdir)
2148
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002149exe = executable('systemd-sysctl',
2150 'src/sysctl/sysctl.c',
2151 include_directories : includes,
2152 link_with : [libshared],
2153 install_rpath : rootlibexecdir,
2154 install : true,
2155 install_dir : rootlibexecdir)
2156public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002157
2158executable('systemd-ac-power',
2159 'src/ac-power/ac-power.c',
2160 include_directories : includes,
2161 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002162 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002163 install : true,
2164 install_dir : rootlibexecdir)
2165
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002166exe = executable('systemd-detect-virt',
2167 'src/detect-virt/detect-virt.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-delta',
2175 'src/delta/delta.c',
2176 include_directories : includes,
2177 link_with : [libshared],
2178 install_rpath : rootlibexecdir,
2179 install : true)
2180public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002181
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002182exe = executable('systemd-escape',
2183 'src/escape/escape.c',
2184 include_directories : includes,
2185 link_with : [libshared],
2186 install_rpath : rootlibexecdir,
2187 install : true,
2188 install_dir : rootbindir)
2189public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002190
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002191exe = executable('systemd-notify',
2192 'src/notify/notify.c',
2193 include_directories : includes,
2194 link_with : [libshared],
2195 install_rpath : rootlibexecdir,
2196 install : true,
2197 install_dir : rootbindir)
2198public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002199
2200executable('systemd-volatile-root',
2201 'src/volatile-root/volatile-root.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
2208executable('systemd-cgroups-agent',
2209 'src/cgroups-agent/cgroups-agent.c',
2210 include_directories : includes,
2211 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002212 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002213 install : true,
2214 install_dir : rootlibexecdir)
2215
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002216exe = executable('systemd-path',
2217 'src/path/path.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)
2222public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002223
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002224exe = executable('systemd-ask-password',
2225 'src/ask-password/ask-password.c',
2226 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002227 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002228 install_rpath : rootlibexecdir,
2229 install : true,
2230 install_dir : rootbindir)
2231public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002232
2233executable('systemd-reply-password',
2234 'src/reply-password/reply-password.c',
2235 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002236 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002237 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002238 install : true,
2239 install_dir : rootlibexecdir)
2240
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002241exe = executable('systemd-tty-ask-password-agent',
2242 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2243 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002244 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002245 install_rpath : rootlibexecdir,
2246 install : true,
2247 install_dir : rootbindir)
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-cgls',
2251 'src/cgls/cgls.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
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002258exe = executable('systemd-cgtop',
2259 'src/cgtop/cgtop.c',
2260 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002261 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002262 install_rpath : rootlibexecdir,
2263 install : true)
2264public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002265
2266executable('systemd-initctl',
2267 'src/initctl/initctl.c',
2268 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002269 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002270 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002271 install : true,
2272 install_dir : rootlibexecdir)
2273
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002274exe = executable('systemd-mount',
2275 'src/mount/mount-tool.c',
2276 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002277 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002278 install_rpath : rootlibexecdir,
2279 install : true)
2280public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002281
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002282meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002283 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002284
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002285exe = executable('systemd-run',
2286 'src/run/run.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('systemd-stdio-bridge',
2294 'src/stdio-bridge/stdio-bridge.c',
2295 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002296 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002297 install_rpath : rootlibexecdir,
2298 install : true)
2299public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002300
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002301exe = executable('busctl',
2302 'src/busctl/busctl.c',
2303 'src/busctl/busctl-introspect.c',
2304 'src/busctl/busctl-introspect.h',
2305 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002306 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002307 install_rpath : rootlibexecdir,
2308 install : true)
2309public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002310
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002311if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002312 exe = executable('systemd-sysusers',
2313 'src/sysusers/sysusers.c',
2314 include_directories : includes,
2315 link_with : [libshared],
2316 install_rpath : rootlibexecdir,
2317 install : true,
2318 install_dir : rootbindir)
2319 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002320endif
2321
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002322if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002323 exe = executable('systemd-tmpfiles',
2324 'src/tmpfiles/tmpfiles.c',
2325 include_directories : includes,
2326 link_with : [libshared],
2327 dependencies : [libacl],
2328 install_rpath : rootlibexecdir,
2329 install : true,
2330 install_dir : rootbindir)
2331 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002332
2333 test('test-systemd-tmpfiles',
2334 test_systemd_tmpfiles_py,
2335 args : exe.full_path())
2336 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002337endif
2338
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002339if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002340 exe = executable('systemd-hwdb',
2341 'src/hwdb/hwdb.c',
2342 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2343 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002344 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002345 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002346 install : true,
2347 install_dir : rootbindir)
2348 public_programs += [exe]
2349endif
2350
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002351if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002352 executable('systemd-quotacheck',
2353 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002354 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002355 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002356 install_rpath : rootlibexecdir,
2357 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002358 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002359endif
2360
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002361exe = executable('systemd-socket-proxyd',
2362 'src/socket-proxy/socket-proxyd.c',
2363 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002364 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002365 dependencies : [threads],
2366 install_rpath : rootlibexecdir,
2367 install : true,
2368 install_dir : rootlibexecdir)
2369public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002370
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002371exe = executable('systemd-udevd',
2372 systemd_udevd_sources,
2373 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002374 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002375 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002376 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002377 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002378 dependencies : [threads,
2379 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002380 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002381 libacl,
2382 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002383 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002384 install : true,
2385 install_dir : rootlibexecdir)
2386public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002387
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002388exe = executable('udevadm',
2389 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002390 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002391 include_directories : includes,
2392 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002393 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002394 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002395 dependencies : [threads,
2396 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002397 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002398 libacl,
2399 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002400 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002401 install : true,
2402 install_dir : rootbindir)
2403public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002404
2405executable('systemd-shutdown',
2406 systemd_shutdown_sources,
2407 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002408 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002409 dependencies : [libmount],
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-done',
2415 'src/update-done/update-done.c',
2416 include_directories : includes,
2417 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002418 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002419 install : true,
2420 install_dir : rootlibexecdir)
2421
2422executable('systemd-update-utmp',
2423 'src/update-utmp/update-utmp.c',
2424 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002425 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002426 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002427 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002428 install : true,
2429 install_dir : rootlibexecdir)
2430
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002431if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002432 executable('systemd-modules-load',
2433 'src/modules-load/modules-load.c',
2434 include_directories : includes,
2435 link_with : [libshared],
2436 dependencies : [libkmod],
2437 install_rpath : rootlibexecdir,
2438 install : true,
2439 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002440
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002441 meson.add_install_script('sh', '-c',
2442 mkdir_p.format(modulesloaddir))
2443 meson.add_install_script('sh', '-c',
2444 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002445endif
2446
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002447exe = executable('systemd-nspawn',
2448 systemd_nspawn_sources,
2449 'src/core/mount-setup.c', # FIXME: use a variable?
2450 'src/core/mount-setup.h',
2451 'src/core/loopback-setup.c',
2452 'src/core/loopback-setup.h',
2453 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002454 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002455 dependencies : [libacl,
2456 libblkid,
2457 libseccomp,
2458 libselinux],
2459 install_rpath : rootlibexecdir,
2460 install : true)
2461public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002462
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002463if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002464 executable('systemd-networkd',
2465 systemd_networkd_sources,
2466 include_directories : includes,
2467 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002468 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002469 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002470 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002471 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002472 install_rpath : rootlibexecdir,
2473 install : true,
2474 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002475
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002476 executable('systemd-networkd-wait-online',
2477 systemd_networkd_wait_online_sources,
2478 include_directories : includes,
2479 link_with : [libnetworkd_core,
2480 libshared],
2481 install_rpath : rootlibexecdir,
2482 install : true,
2483 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002484
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002485 exe = executable('networkctl',
2486 networkctl_sources,
2487 include_directories : includes,
2488 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002489 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002490 install_rpath : rootlibexecdir,
2491 install : true,
2492 install_dir : rootbindir)
2493 public_programs += [exe]
2494endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002495
2496executable('systemd-sulogin-shell',
2497 ['src/sulogin-shell/sulogin-shell.c'],
2498 include_directories : includes,
2499 link_with : [libshared],
2500 install_rpath : rootlibexecdir,
2501 install : true,
2502 install_dir : rootlibexecdir)
2503
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002504############################################################
2505
2506foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002507 sources = tuple[0]
2508 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2509 dependencies = tuple[2]
2510 condition = tuple.length() >= 4 ? tuple[3] : ''
2511 type = tuple.length() >= 5 ? tuple[4] : ''
2512 defs = tuple.length() >= 6 ? tuple[5] : []
2513 incs = tuple.length() >= 7 ? tuple[6] : includes
2514 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002515
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002516 name = sources[0].split('/')[-1].split('.')[0]
2517 if type.startswith('timeout=')
2518 timeout = type.split('=')[1].to_int()
2519 type = ''
2520 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002521 if want_tests == 'false'
2522 message('Not compiling @0@ because tests is set to false'.format(name))
2523 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002524 exe = executable(
2525 name,
2526 sources,
2527 include_directories : incs,
2528 link_with : link_with,
2529 dependencies : dependencies,
2530 c_args : defs,
2531 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002532 install : install_tests,
2533 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002534
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002535 if type == 'manual'
2536 message('@0@ is a manual test'.format(name))
2537 elif type == 'unsafe' and want_tests != 'unsafe'
2538 message('@0@ is an unsafe test'.format(name))
2539 else
2540 test(name, exe,
2541 env : test_env,
2542 timeout : timeout)
2543 endif
2544 else
2545 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2546 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002547endforeach
2548
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002549test_libsystemd_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002550 'test-libsystemd-sym',
2551 test_libsystemd_sym_c,
2552 include_directories : includes,
2553 link_with : [libsystemd],
2554 install : install_tests,
2555 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002556test('test-libsystemd-sym',
2557 test_libsystemd_sym)
2558
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002559test_libudev_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002560 'test-libudev-sym',
2561 test_libudev_sym_c,
2562 include_directories : includes,
2563 c_args : ['-Wno-deprecated-declarations'],
2564 link_with : [libudev],
2565 install : install_tests,
2566 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002567test('test-libudev-sym',
2568 test_libudev_sym)
2569
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002570############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002571
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002572fuzzer_exes = []
2573
2574foreach tuple : fuzzers
2575 sources = tuple[0]
2576 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2577 dependencies = tuple[2]
2578 defs = tuple.length() >= 4 ? tuple[3] : []
2579 incs = tuple.length() >= 5 ? tuple[4] : includes
2580
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002581 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002582 dependencies += fuzzing_engine
2583 else
2584 sources += 'src/fuzz/fuzz-main.c'
2585 endif
2586
2587 name = sources[0].split('/')[-1].split('.')[0]
2588
2589 fuzzer_exes += executable(
2590 name,
2591 sources,
2592 include_directories : [incs, include_directories('src/fuzz')],
2593 link_with : link_with,
2594 dependencies : dependencies,
2595 c_args : defs,
2596 install : false)
2597endforeach
2598
2599run_target('fuzzers',
2600 depends : fuzzer_exes,
2601 command : ['true'])
2602
2603############################################################
2604
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002605make_directive_index_py = find_program('tools/make-directive-index.py')
2606make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002607xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002608hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002609
2610subdir('units')
2611subdir('sysctl.d')
2612subdir('sysusers.d')
2613subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002614subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002615subdir('hwdb')
2616subdir('network')
2617subdir('man')
2618subdir('shell-completion/bash')
2619subdir('shell-completion/zsh')
Lennart Poettering2d684e62018-03-28 16:58:37 +02002620subdir('doc/sysvinit')
2621subdir('doc/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002622
2623# FIXME: figure out if the warning is true:
2624# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2625install_subdir('factory/etc',
2626 install_dir : factorydir)
2627
2628
2629install_data('xorg/50-systemd-user.sh',
2630 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002631install_data('modprobe.d/systemd.conf',
2632 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002633install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002634 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002635 'NEWS',
2636 'README',
2637 'doc/CODING_STYLE',
2638 'doc/DISTRO_PORTING',
2639 'doc/ENVIRONMENT.md',
2640 'doc/HACKING',
2641 'doc/TRANSIENT-SETTINGS.md',
2642 'doc/TRANSLATORS',
2643 'doc/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002644 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2645 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002646
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002647meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2648meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2649
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002650############################################################
2651
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002652meson_check_help = find_program('tools/meson-check-help.sh')
2653
2654foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002655 name = exec.full_path().split('/')[-1]
2656 test('check-help-' + name,
2657 meson_check_help,
2658 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002659endforeach
2660
2661############################################################
2662
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002663# Enable tests for all supported sanitizers
2664foreach tuple : sanitizers
2665 sanitizer = tuple[0]
2666 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002667
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002668 have = run_command(check_compilation_sh,
2669 cc.cmd_array(), '-x', 'c',
2670 '-fsanitize=@0@'.format(sanitizer),
2671 '-include', link_test_c).returncode() == 0
2672 message('@0@ sanitizer supported: @1@'.format(sanitizer, have ? 'yes' : 'no'))
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002673
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002674 if have
2675 prev = ''
2676 foreach p : fuzz_regression_tests
2677 b = p.split('/')[-2]
2678 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002679
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002680 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002681
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002682 if name != prev
2683 if want_tests == 'false'
2684 message('Not compiling @0@ because tests is set to false'.format(name))
2685 elif slow_tests
2686 exe = custom_target(
2687 name,
2688 output : name,
2689 depends : build,
2690 command : [env, 'ln', '-fs',
2691 join_paths(build.full_path(), b),
2692 '@OUTPUT@'],
2693 build_by_default : true)
2694 else
2695 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2696 endif
2697 endif
2698 prev = name
2699
2700 if want_tests != 'false' and slow_tests
2701 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2702 env,
2703 args : [exe.full_path(),
2704 join_paths(meson.source_root(),
2705 'test/fuzz-regressions',
2706 p)])
2707 endif
2708 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002709 endif
2710endforeach
2711
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002712
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002713############################################################
2714
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002715if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002716 all_files = run_command(
2717 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002718 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002719 'ls-files',
2720 ':/*.[ch]'])
2721 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002722
userwithuide85a6902017-08-09 13:41:44 +00002723 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002724 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002725 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002726 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002727 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002728 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002729 output : 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002730 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002731endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002732
2733if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002734 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002735 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002736 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002737 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002738endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002739
2740if git.found()
2741 git_head = run_command(
2742 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002743 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002744 'rev-parse', 'HEAD']).stdout().strip()
2745 git_head_short = run_command(
2746 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002747 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002748 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2749
2750 run_target(
2751 'git-snapshot',
2752 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002753 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002754 git_head_short),
2755 '--prefix', 'systemd-@0@/'.format(git_head),
2756 'HEAD'])
2757endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002758
2759############################################################
2760
Lennart Poettering51b13862017-12-20 12:51:14 +01002761meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2762run_target(
2763 'check-api-docs',
2764 depends : [man, libsystemd, libudev],
2765 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2766
2767############################################################
2768
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002769status = [
2770 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2771
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002772 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002773 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002774 'prefix directory: @0@'.format(prefixdir),
2775 'rootprefix directory: @0@'.format(rootprefixdir),
2776 'sysconf directory: @0@'.format(sysconfdir),
2777 'include directory: @0@'.format(includedir),
2778 'lib directory: @0@'.format(libdir),
2779 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002780 'SysV init scripts: @0@'.format(sysvinit_path),
2781 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002782 'PAM modules directory: @0@'.format(pamlibdir),
2783 'PAM configuration directory: @0@'.format(pamconfdir),
2784 'RPM macros directory: @0@'.format(rpmmacrosdir),
2785 'modprobe.d directory: @0@'.format(modprobedir),
2786 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2787 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2788 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2789 'bash completions directory: @0@'.format(bashcompletiondir),
2790 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002791 'extra start script: @0@'.format(get_option('rc-local')),
2792 'extra stop script: @0@'.format(get_option('halt-local')),
2793 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2794 get_option('debug-tty')),
2795 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002796 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002797 'maximum system UID: @0@'.format(system_uid_max),
2798 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002799 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2800 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2801 'minimum container UID base: @0@'.format(container_uid_base_min),
2802 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002803 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002804 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002805 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002806 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002807 'nobody user name: @0@'.format(nobody_user),
2808 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002809 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002810 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002811
2812 'default DNSSEC mode: @0@'.format(default_dnssec),
2813 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2814 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2815
2816alt_dns_servers = '\n '.join(dns_servers.split(' '))
2817alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2818status += [
2819 'default DNS servers: @0@'.format(alt_dns_servers),
2820 'default NTP servers: @0@'.format(alt_ntp_servers)]
2821
2822alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2823 '@@0@'.format(time_epoch)).stdout().strip()
2824status += [
2825 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2826
2827# TODO:
2828# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2829# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2830# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2831
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002832if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002833 status += [
2834 'efi arch: @0@'.format(efi_arch)]
2835
2836 if have_gnu_efi
2837 status += [
2838 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2839 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002840 'EFI lib directory: @0@'.format(efi_libdir),
2841 'EFI lds directory: @0@'.format(efi_ldsdir),
2842 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002843 endif
2844endif
2845
2846found = []
2847missing = []
2848
2849foreach tuple : [
2850 ['libcryptsetup'],
2851 ['PAM'],
2852 ['AUDIT'],
2853 ['IMA'],
2854 ['AppArmor'],
2855 ['SELinux'],
2856 ['SECCOMP'],
2857 ['SMACK'],
2858 ['zlib'],
2859 ['xz'],
2860 ['lz4'],
2861 ['bzip2'],
2862 ['ACL'],
2863 ['gcrypt'],
2864 ['qrencode'],
2865 ['microhttpd'],
2866 ['gnutls'],
2867 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002868 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002869 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002870 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002871 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002872 ['libiptc'],
2873 ['elfutils'],
2874 ['binfmt'],
2875 ['vconsole'],
2876 ['quotacheck'],
2877 ['tmpfiles'],
2878 ['environment.d'],
2879 ['sysusers'],
2880 ['firstboot'],
2881 ['randomseed'],
2882 ['backlight'],
2883 ['rfkill'],
2884 ['logind'],
2885 ['machined'],
2886 ['importd'],
2887 ['hostnamed'],
2888 ['timedated'],
2889 ['timesyncd'],
2890 ['localed'],
2891 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002892 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002893 ['coredump'],
2894 ['polkit'],
2895 ['legacy pkla', install_polkit_pkla],
2896 ['efi'],
2897 ['gnu-efi', have_gnu_efi],
2898 ['kmod'],
2899 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01002900 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002901 ['blkid'],
2902 ['dbus'],
2903 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002904 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002905 ['hwdb'],
2906 ['tpm'],
2907 ['man pages', want_man],
2908 ['html pages', want_html],
2909 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002910 ['SysV compat'],
2911 ['utmp'],
2912 ['ldconfig'],
2913 ['hibernate'],
2914 ['adm group', get_option('adm-group')],
2915 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002916 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002917 ['debug hashmap'],
2918 ['debug mmap cache'],
2919]
2920
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01002921 if tuple.length() >= 2
2922 cond = tuple[1]
2923 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002924 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2925 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002926 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002927 endif
2928 if cond
2929 found += [tuple[0]]
2930 else
2931 missing += [tuple[0]]
2932 endif
2933endforeach
2934
2935status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002936 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002937 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002938 '',
2939 'disabled features: @0@'.format(', '.join(missing)),
2940 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002941message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002942
2943if rootprefixdir != rootprefix_default
2944 message('WARNING:\n' +
2945 ' Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2946 ' systemd used fixed names for unit file directories and other paths, so anything\n' +
2947 ' except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
2948endif