blob: a8433000d6fde3f03f30ef3149e95c3a846bdfa1 [file] [log] [blame]
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01001# SPDX-License-Identifier: LGPL-2.1+
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01002
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003project('systemd', 'c',
Lennart Poetteringde7436b2018-06-22 13:03:47 +02004 version : '239',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04005 license : 'LGPLv2+',
6 default_options: [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04007 'c_std=gnu99',
8 'prefix=/usr',
9 'sysconfdir=/etc',
10 'localstatedir=/var',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040011 ],
Yu Watanabe8ea9fad2018-05-10 14:50:52 +090012 meson_version : '>= 0.44',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040013 )
14
Lennart Poetteringde7436b2018-06-22 13:03:47 +020015libsystemd_version = '0.23.0'
16libudev_version = '1.6.11'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020017
Yu Watanabe348b4432018-05-07 18:17:35 +090018# We need the same data in two different formats, ugh!
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040019# Also, for hysterical reasons, we use different variable
20# names, sometimes. Not all variables are included in every
21# set. Ugh, ugh, ugh!
22conf = configuration_data()
23conf.set_quoted('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version())
24conf.set_quoted('PACKAGE_VERSION', meson.project_version())
25
26substs = configuration_data()
27substs.set('PACKAGE_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
28substs.set('PACKAGE_VERSION', meson.project_version())
29
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040030#####################################################################
31
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040032# Try to install the git pre-commit hook
33git_hook = run_command(join_paths(meson.source_root(), 'tools/add-git-hook.sh'))
34if git_hook.returncode() == 0
35 message(git_hook.stdout().strip())
36endif
37
38#####################################################################
39
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010040if get_option('split-usr') == 'auto'
41 split_usr = run_command('test', '-L', '/bin').returncode() != 0
42else
43 split_usr = get_option('split-usr') == 'true'
44endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010045conf.set10('HAVE_SPLIT_USR', split_usr,
46 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010047
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010048if get_option('split-bin') == 'auto'
49 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
50else
51 split_bin = get_option('split-bin') == 'true'
52endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010053conf.set10('HAVE_SPLIT_BIN', split_bin,
54 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010055
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010056rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010057# Unusual rootprefixdir values are used by some distros
58# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010059rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010060if rootprefixdir == ''
61 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010062endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040063
64sysvinit_path = get_option('sysvinit-path')
65sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090066conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020067 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040068
69# join_paths ignore the preceding arguments if an absolute component is
70# encountered, so this should canonicalize various paths when they are
71# absolute or relative.
72prefixdir = get_option('prefix')
73if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040074 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040075endif
76bindir = join_paths(prefixdir, get_option('bindir'))
77libdir = join_paths(prefixdir, get_option('libdir'))
78sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
79includedir = join_paths(prefixdir, get_option('includedir'))
80datadir = join_paths(prefixdir, get_option('datadir'))
81localstatedir = join_paths('/', get_option('localstatedir'))
82
83rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010084rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040085rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
86
87rootlibdir = get_option('rootlibdir')
88if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040089 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040090endif
91
92# Dirs of external packages
Michael Bieble17e5ba2017-04-13 10:30:56 -040093pkgconfigdatadir = join_paths(datadir, 'pkgconfig')
94pkgconfiglibdir = join_paths(libdir, 'pkgconfig')
95polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
96polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
97polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
98varlogdir = join_paths(localstatedir, 'log')
99xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900100rpmmacrosdir = get_option('rpmmacrosdir')
101if rpmmacrosdir != 'no'
102 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
103endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200104modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400105
106# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400107pkgdatadir = join_paths(datadir, 'systemd')
108environmentdir = join_paths(prefixdir, 'lib/environment.d')
109pkgsysconfdir = join_paths(sysconfdir, 'systemd')
110userunitdir = join_paths(prefixdir, 'lib/systemd/user')
111userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
112tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
113sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
114sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
115binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
116modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
117networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
118pkgincludedir = join_paths(includedir, 'systemd')
119systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
120usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
121systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
122userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
123systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
124systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
125systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
126systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
127udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
128udevhomedir = udevlibexecdir
129udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
130udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
131catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
132kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
133factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400134bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
135testsdir = join_paths(prefixdir, 'lib/systemd/tests')
136systemdstatedir = join_paths(localstatedir, 'lib/systemd')
137catalogstatedir = join_paths(systemdstatedir, 'catalog')
138randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200139profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400140
tblume75aaade2018-02-01 22:46:15 +0100141docdir = get_option('docdir')
142if docdir == ''
143 docdir = join_paths(datadir, 'doc/systemd')
144endif
145
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400146dbuspolicydir = get_option('dbuspolicydir')
147if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400148 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400149endif
150
151dbussessionservicedir = get_option('dbussessionservicedir')
152if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400153 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400154endif
155
156dbussystemservicedir = get_option('dbussystemservicedir')
157if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400158 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400159endif
160
161pamlibdir = get_option('pamlibdir')
162if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400163 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400164endif
165
166pamconfdir = get_option('pamconfdir')
167if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400168 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400169endif
170
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100171memory_accounting_default = get_option('memory-accounting-default')
172
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400173conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400174conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400175conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
176conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
177conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400178conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
179conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100180
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100181conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100182
Michael Bieble17e5ba2017-04-13 10:30:56 -0400183conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400184conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
185conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400186conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
187conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
188conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
189conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100190conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100191conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400192conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
193conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
194conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
195conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
196conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100197conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400198conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400199conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
200conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400201conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
202conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
203conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
204conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
205conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
206conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400207conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
208conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400209conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400210conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400211conf.set_quoted('LIBDIR', libdir)
212conf.set_quoted('ROOTLIBDIR', rootlibdir)
213conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
214conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400215conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
216conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
217conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
218conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
219conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
220conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100221conf.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'true' : 'false')
Michal Koutný7f672e82018-03-09 18:27:13 +0100222conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400223
224conf.set_quoted('ABS_BUILD_DIR', meson.build_root())
225conf.set_quoted('ABS_SRC_DIR', meson.source_root())
226
227substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400228substs.set('exec_prefix', prefixdir)
229substs.set('libdir', libdir)
230substs.set('rootlibdir', rootlibdir)
231substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400232substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400233substs.set('bindir', bindir)
234substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400235substs.set('rootlibexecdir', rootlibexecdir)
236substs.set('systemunitdir', systemunitdir)
237substs.set('userunitdir', userunitdir)
238substs.set('systempresetdir', systempresetdir)
239substs.set('userpresetdir', userpresetdir)
240substs.set('udevhwdbdir', udevhwdbdir)
241substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400242substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200243substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400244substs.set('catalogdir', catalogdir)
245substs.set('tmpfilesdir', tmpfilesdir)
246substs.set('sysusersdir', sysusersdir)
247substs.set('sysctldir', sysctldir)
248substs.set('binfmtdir', binfmtdir)
249substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200250substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400251substs.set('systemgeneratordir', systemgeneratordir)
252substs.set('usergeneratordir', usergeneratordir)
253substs.set('systemenvgeneratordir', systemenvgeneratordir)
254substs.set('userenvgeneratordir', userenvgeneratordir)
255substs.set('systemshutdowndir', systemshutdowndir)
256substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400257substs.set('VARLOGDIR', varlogdir)
258substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400259substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
260substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400261substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
262substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
263substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
264substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100265substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400266
267#####################################################################
268
269cc = meson.get_compiler('c')
270pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400271check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100272meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400273
Adam Duskett08318a22018-01-15 06:25:46 -0500274if get_option('tests') != 'false'
275 cxx = find_program('c++', required : false)
276 if cxx.found()
277 # Used only for tests
278 add_languages('cpp')
279 endif
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400280endif
281
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500282want_ossfuzz = get_option('oss-fuzz')
283want_libfuzzer = get_option('llvm-fuzz')
284fuzzer_build = want_ossfuzz or want_libfuzzer
285if want_ossfuzz and want_libfuzzer
286 error('only one of oss-fuzz and llvm-fuzz can be specified')
287endif
288if want_libfuzzer
289 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
290endif
291if want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500292 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
293endif
294
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900295possible_cc_flags = [
296 '-Wextra',
297 '-Werror=undef',
298 '-Wlogical-op',
299 '-Wmissing-include-dirs',
300 '-Wold-style-definition',
301 '-Wpointer-arith',
302 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900303 '-Wfloat-equal',
304 '-Wsuggest-attribute=noreturn',
305 '-Werror=missing-prototypes',
306 '-Werror=implicit-function-declaration',
307 '-Werror=missing-declarations',
308 '-Werror=return-type',
309 '-Werror=incompatible-pointer-types',
310 '-Werror=format=2',
311 '-Wstrict-prototypes',
312 '-Wredundant-decls',
313 '-Wmissing-noreturn',
314 '-Wimplicit-fallthrough=5',
315 '-Wshadow',
316 '-Wendif-labels',
317 '-Wstrict-aliasing=2',
318 '-Wwrite-strings',
319 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200320 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200321 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900322 '-Wdate-time',
323 '-Wnested-externs',
324 '-ffast-math',
325 '-fno-common',
326 '-fdiagnostics-show-option',
327 '-fno-strict-aliasing',
328 '-fvisibility=hidden',
329 '-fstack-protector',
330 '-fstack-protector-strong',
331 '--param=ssp-buffer-size=4',
332]
333
334# --as-needed and --no-undefined are provided by meson by default,
335# run mesonconf to see what is enabled
336possible_link_flags = [
337 '-Wl,-z,relro',
338 '-Wl,-z,now',
339]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400340
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500341# the oss-fuzz fuzzers are not built with -fPIE, so don't
342# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500343if not fuzzer_build
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900344 possible_cc_flags += '-fPIE'
345 possible_link_flags += '-pie'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500346endif
347
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900348if cc.get_id() == 'clang'
349 possible_cc_flags += [
350 '-Wno-typedef-redefinition',
351 '-Wno-gnu-variable-sized-type-not-at-end',
352 ]
353endif
354
355if get_option('buildtype') != 'debug'
356 possible_cc_flags += [
357 '-ffunction-sections',
358 '-fdata-sections',
359 ]
360
361 possible_link_flags += '-Wl,--gc-sections'
362endif
363
364add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
365
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400366# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
Zbigniew Jędrzejewski-Szmekd40f5cc2018-06-07 15:08:02 +0200367# arguments, just emits a warning. So test for the "positive" version instead.
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400368foreach arg : ['unused-parameter',
369 'missing-field-initializers',
370 'unused-result',
Zbigniew Jędrzejewski-Szmekfb1b5882017-09-04 19:49:12 +0300371 'format-signedness',
372 'error=nonnull', # work-around for gcc 7.1 turning this on on its own
373 ]
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400374 if cc.has_argument('-W' + arg)
375 add_project_arguments('-Wno-' + arg, language : 'c')
376 endif
377endforeach
378
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800379if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400380 #include <time.h>
381 #include <inttypes.h>
382 typedef uint64_t usec_t;
383 usec_t now(clockid_t clock);
384 int main(void) {
385 struct timespec now;
386 return 0;
387 }
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800388''', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400389 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400390endif
391
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400392link_test_c = files('tools/meson-link-test.c')
393
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900394foreach arg : possible_link_flags
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400395 have = run_command(check_compilation_sh,
396 cc.cmd_array(), '-x', 'c', arg,
397 '-include', link_test_c).returncode() == 0
398 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900399 if have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400400 add_project_link_arguments(arg, language : 'c')
401 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400402endforeach
403
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400404cpp = ' '.join(cc.cmd_array()) + ' -E'
405
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400406#####################################################################
407# compilation result tests
408
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400409conf.set('_GNU_SOURCE', true)
410conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400411
412conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
413conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
414conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
415conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
416conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
417conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
418conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
419
420decl_headers = '''
421#include <uchar.h>
422#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000423#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100424#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400425'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400426
427foreach decl : ['char16_t',
428 'char32_t',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400429 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000430 'struct fib_rule_uid_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100431 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400432 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400433
434 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200435 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
436
437 if decl == 'struct statx'
438 if have
439 want_linux_stat_h = false
440 else
441 have = cc.sizeof(decl,
442 prefix : decl_headers + '#include <linux/stat.h>',
443 args : '-D_GNU_SOURCE') > 0
444 want_linux_stat_h = have
445 endif
446 endif
447
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200448 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400449endforeach
450
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200451conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700452
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400453foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
454 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
455 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
456 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530457 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400458 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
459 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
460 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
461 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
462 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530463 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400464 # if_tunnel.h is buggy and cannot be included on its own
465 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
466 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
467 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
468 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
469 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
470 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
471 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530472 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400473 ['NDA_IFINDEX', 'linux/neighbour.h'],
474 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000475 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400476 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530477 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400478 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400479 prefix = decl.length() > 2 ? decl[2] : ''
480 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200481 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400482endforeach
483
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400484foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200485 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400486endforeach
487
488foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100489 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100490 ['gettid', '''#include <sys/types.h>
491 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100492 ['pivot_root', '''#include <stdlib.h>
493 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100494 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400495 #include <sys/stat.h>
496 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100497 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100498 ['renameat2', '''#include <stdio.h>
499 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400500 ['kcmp', '''#include <linux/kcmp.h>'''],
501 ['keyctl', '''#include <sys/types.h>
502 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100503 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400504 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200505 ['bpf', '''#include <sys/syscall.h>
506 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100507 ['statx', '''#include <sys/types.h>
508 #include <sys/stat.h>
509 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100510 ['explicit_bzero' , '''#include <string.h>'''],
511 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400512]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400513
Lennart Poettering85db59b2017-12-25 12:01:14 +0100514 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200515 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400516endforeach
517
Lennart Poettering85db59b2017-12-25 12:01:14 +0100518if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200519 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200520 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400521else
522 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200523 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200524 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400525endif
526
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400527#####################################################################
528
529sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400530awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400531m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400532stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400533git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100534env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100535perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400536
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400537meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400538mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400539test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
540splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400541
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400542# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
543# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500544progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400545 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400546 ['kmod', '/usr/bin/kmod' ],
547 ['kexec', '/usr/sbin/kexec' ],
548 ['sulogin', '/usr/sbin/sulogin' ],
549 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
550 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
551 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
552 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
553 ]
554foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400555 path = get_option(prog[0] + '-path')
556 if path != ''
557 message('Using @1@ for @0@'.format(prog[0], path))
558 else
559 exe = find_program(prog[0],
560 '/usr/sbin/' + prog[0],
561 '/sbin/' + prog[0],
562 required: false)
563 path = exe.found() ? exe.path() : prog[1]
564 endif
565 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
566 conf.set_quoted(name, path)
567 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400568endforeach
569
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500570conf.set_quoted('TELINIT', get_option('telinit-path'))
571
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400572if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100573 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400574endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400575
576############################################################
577
578gperf = find_program('gperf')
579
580gperf_test_format = '''
581#include <string.h>
582const char * in_word_set(const char *, @0@);
583@1@
584'''
585gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
586gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
587gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
588if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400589 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400590else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400591 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
592 if cc.compiles(gperf_test)
593 gperf_len_type = 'unsigned'
594 else
595 error('unable to determine gperf len type')
596 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400597endif
598message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400599conf.set('GPERF_LEN_TYPE', gperf_len_type,
600 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400601
602############################################################
603
604if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400605 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400606endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100607foreach header : ['crypt.h',
608 'linux/btrfs.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400609 'linux/memfd.h',
610 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200611 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400612 'valgrind/memcheck.h',
613 'valgrind/valgrind.h',
614 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400615
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200616 conf.set10('HAVE_' + header.underscorify().to_upper(),
617 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400618endforeach
619
620############################################################
621
622conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400623conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
624gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400625
626default_hierarchy = get_option('default-hierarchy')
627conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
628 description : 'default cgroup hierarchy as string')
629if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400630 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400631elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400632 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400633else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400634 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400635endif
636
637time_epoch = get_option('time-epoch')
638if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400639 NEWS = files('NEWS')
640 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400641endif
642time_epoch = time_epoch.to_int()
643conf.set('TIME_EPOCH', time_epoch)
644
645system_uid_max = get_option('system-uid-max')
646if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400647 system_uid_max = run_command(
648 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800649 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
650 '/etc/login.defs').stdout().strip()
651 if system_uid_max == ''
652 system_uid_max = '999'
653 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400654endif
655system_uid_max = system_uid_max.to_int()
656conf.set('SYSTEM_UID_MAX', system_uid_max)
657substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400658message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400659
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400660system_gid_max = get_option('system-gid-max')
661if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400662 system_gid_max = run_command(
663 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800664 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
665 '/etc/login.defs').stdout().strip()
666 if system_gid_max == ''
667 system_gid_max = '999'
668 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400669endif
670system_gid_max = system_gid_max.to_int()
671conf.set('SYSTEM_GID_MAX', system_gid_max)
672substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400673message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400674
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100675dynamic_uid_min = get_option('dynamic-uid-min').to_int()
676dynamic_uid_max = get_option('dynamic-uid-max').to_int()
677conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
678conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
679substs.set('dynamicuidmin', dynamic_uid_min)
680substs.set('dynamicuidmax', dynamic_uid_max)
681
682container_uid_base_min = get_option('container-uid-base-min').to_int()
683container_uid_base_max = get_option('container-uid-base-max').to_int()
684conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
685conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
686substs.set('containeruidbasemin', container_uid_base_min)
687substs.set('containeruidbasemax', container_uid_base_max)
688
Lennart Poetteringafde4572017-12-05 11:00:24 +0100689nobody_user = get_option('nobody-user')
690nobody_group = get_option('nobody-group')
691
Chen Qi2484bff2018-07-23 14:53:09 +0800692if not meson.is_cross_build()
693 getent_result = run_command('getent', 'passwd', '65534')
694 if getent_result.returncode() == 0
695 name = getent_result.stdout().split(':')[0]
696 if name != nobody_user
697 warning('\n' +
698 '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) +
699 'Your build will result in an user table setup that is incompatible with the local system.')
700 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100701 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800702 id_result = run_command('id', '-u', nobody_user)
703 if id_result.returncode() == 0
704 id = id_result.stdout().to_int()
705 if id != 65534
706 warning('\n' +
707 '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) +
708 'Your build will result in an user table setup that is incompatible with the local system.')
709 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100710 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100711
Chen Qi2484bff2018-07-23 14:53:09 +0800712 getent_result = run_command('getent', 'group', '65534')
713 if getent_result.returncode() == 0
714 name = getent_result.stdout().split(':')[0]
715 if name != nobody_group
716 warning('\n' +
717 '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) +
718 'Your build will result in an group table setup that is incompatible with the local system.')
719 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100720 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800721 id_result = run_command('id', '-g', nobody_group)
722 if id_result.returncode() == 0
723 id = id_result.stdout().to_int()
724 if id != 65534
725 warning('\n' +
726 '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) +
727 'Your build will result in an group table setup that is incompatible with the local system.')
728 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100729 endif
730endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900731if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900732 warning('\n' +
733 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
734 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900735endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100736
737conf.set_quoted('NOBODY_USER_NAME', nobody_user)
738conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900739substs.set('NOBODY_USER_NAME', nobody_user)
740substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100741
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400742tty_gid = get_option('tty-gid')
743conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400744substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400745
Ikey Doherty84786b82017-12-03 12:28:23 +0000746# Ensure provided GID argument is numeric, otherwise fallback to default assignment
747if get_option('users-gid') != ''
Yu Watanabed6806872017-12-05 14:01:39 +0900748 users_gid = get_option('users-gid').to_int()
Ikey Doherty84786b82017-12-03 12:28:23 +0000749else
Yu Watanabed6806872017-12-05 14:01:39 +0900750 users_gid = '-'
Ikey Doherty84786b82017-12-03 12:28:23 +0000751endif
752substs.set('USERS_GID', users_gid)
753
Yu Watanabe348b4432018-05-07 18:17:35 +0900754conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
755conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400756
757substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700758substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400759
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400760kill_user_processes = get_option('default-kill-user-processes')
761conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100762conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400763substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400764
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400765dns_servers = get_option('dns-servers')
766conf.set_quoted('DNS_SERVERS', dns_servers)
767substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400768
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400769ntp_servers = get_option('ntp-servers')
770conf.set_quoted('NTP_SERVERS', ntp_servers)
771substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400772
773conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
774
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400775substs.set('SUSHELL', get_option('debug-shell'))
776substs.set('DEBUGTTY', get_option('debug-tty'))
777
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200778enable_debug_hashmap = false
779enable_debug_mmap_cache = false
Yu Watanabead7aa762018-05-02 13:56:28 +0900780foreach name : get_option('debug')
781 if name == 'hashmap'
782 enable_debug_hashmap = true
783 elif name == 'mmap-cache'
784 enable_debug_mmap_cache = true
785 else
786 message('unknown debug option "@0@", ignoring'.format(name))
787 endif
788endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200789conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
790conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400791
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200792conf.set10('VALGRIND', get_option('valgrind'))
793
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400794#####################################################################
795
796threads = dependency('threads')
797librt = cc.find_library('rt')
798libm = cc.find_library('m')
799libdl = cc.find_library('dl')
800libcrypt = cc.find_library('crypt')
801
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400802libcap = dependency('libcap', required : false)
803if not libcap.found()
804 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
805 libcap = cc.find_library('cap')
806endif
807
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400808libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100809 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400810
811want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500812if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400813 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400814 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400815 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200816 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400817else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200818 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400819 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400820endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200821conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400822
823want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500824if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400825 libselinux = dependency('libselinux',
826 version : '>= 2.1.9',
827 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200828 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400829else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200830 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400831 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400832endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200833conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400834
835want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500836if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400837 libapparmor = dependency('libapparmor',
838 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200839 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400840else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200841 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400842 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400843endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200844conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400845
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400846smack_run_label = get_option('smack-run-label')
847if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400848 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400849endif
850
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400851want_polkit = get_option('polkit')
852install_polkit = false
853install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500854if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400855 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400856
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400857 libpolkit = dependency('polkit-gobject-1',
858 required : false)
859 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
860 message('Old polkit detected, will install pkla files')
861 install_polkit_pkla = true
862 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400863endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200864conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400865
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400866want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500867if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400868 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200869 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400870else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200871 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400872 libacl = []
873endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200874conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400875
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400876want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500877if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400878 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200879 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400880else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200881 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400882 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400883endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200884conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400885
886want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500887if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400888 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200889 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400890else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200891 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400892 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400893endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200894conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400895
896want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500897if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400898 libkmod = dependency('libkmod',
899 version : '>= 15',
900 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200901 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400902else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200903 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400904 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400905endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200906conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400907
908want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500909if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400910 libpam = cc.find_library('pam', required : want_pam == 'true')
911 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200912 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400913else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200914 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400915 libpam = []
916 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400917endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200918conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400919
920want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500921if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400922 libmicrohttpd = dependency('libmicrohttpd',
923 version : '>= 0.9.33',
924 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200925 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400926else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200927 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400928 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400929endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200930conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400931
932want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500933if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400934 libcryptsetup = dependency('libcryptsetup',
935 version : '>= 1.6.0',
936 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200937 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400938else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200939 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400940 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400941endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200942conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400943
944want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500945if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400946 libcurl = dependency('libcurl',
947 version : '>= 7.32.0',
948 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200949 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400950else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200951 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400952 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400953endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200954conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400955
956want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400957want_libidn2 = get_option('libidn2')
958if want_libidn == 'true' and want_libidn2 == 'true'
959 error('libidn and libidn2 cannot be requested simultaneously')
960endif
961
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500962if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400963 libidn = dependency('libidn',
964 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200965 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400966else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200967 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400968 libidn = []
969endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200970conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500971if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400972 # libidn is used for both libidn and libidn2 objects
973 libidn = dependency('libidn2',
974 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200975 have = libidn.found()
976else
977 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400978endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200979conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400980
981want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500982if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400983 libiptc = dependency('libiptc',
984 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200985 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400986else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200987 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400988 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400989endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200990conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400991
992want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500993if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400994 libqrencode = dependency('libqrencode',
995 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200996 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400997else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200998 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400999 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001000endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001001conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001002
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001003want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001004if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001005 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1006 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001007 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001008else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001009 have = false
1010endif
1011if not have
1012 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001013 libgcrypt = []
1014 libgpg_error = []
1015endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001016conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001017
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001018want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001019if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001020 libgnutls = dependency('gnutls',
1021 version : '>= 3.1.4',
1022 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001023 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001024else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001025 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001026 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001027endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001028conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001029
1030want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001031if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001032 libdw = dependency('libdw',
1033 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001034 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001035else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001036 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001037 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001038endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001039conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001040
1041want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001042if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001043 libz = dependency('zlib',
1044 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001045 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001046else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001047 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001048 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001049endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001050conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001051
1052want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001053if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001054 libbzip2 = cc.find_library('bz2',
1055 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001056 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001057else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001058 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001059 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001060endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001061conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001062
1063want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001064if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001065 libxz = dependency('liblzma',
1066 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001067 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001068else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001069 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001070 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001071endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001072conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001073
1074want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001075if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001076 liblz4 = dependency('liblz4',
1077 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001078 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001079else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001080 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001081 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001082endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001083conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001084
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001085want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001086if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001087 libxkbcommon = dependency('xkbcommon',
1088 version : '>= 0.3.0',
1089 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001090 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001091else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001092 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001093 libxkbcommon = []
1094endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001095conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001096
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001097want_pcre2 = get_option('pcre2')
1098if want_pcre2 != 'false'
1099 libpcre2 = dependency('libpcre2-8',
1100 required : want_pcre2 == 'true')
1101 have = libpcre2.found()
1102else
1103 have = false
1104 libpcre2 = []
1105endif
1106conf.set10('HAVE_PCRE2', have)
1107
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001108want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001109if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001110 libglib = dependency('glib-2.0',
1111 version : '>= 2.22.0',
1112 required : want_glib == 'true')
1113 libgobject = dependency('gobject-2.0',
1114 version : '>= 2.22.0',
1115 required : want_glib == 'true')
1116 libgio = dependency('gio-2.0',
1117 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001118 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001119else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001120 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001121 libglib = []
1122 libgobject = []
1123 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001124endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001125conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001126
1127want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001128if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001129 libdbus = dependency('dbus-1',
1130 version : '>= 1.3.2',
1131 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001132 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001133else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001134 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001135 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001136endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001137conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001138
Yu Watanabe42303dc2017-06-18 05:22:32 +09001139default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001140if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001141 default_dnssec = 'no'
1142endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001143if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001144 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1145 default_dnssec = 'no'
1146endif
1147conf.set('DEFAULT_DNSSEC_MODE',
1148 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1149substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1150
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001151dns_over_tls = get_option('dns-over-tls')
1152if dns_over_tls != 'false'
Yu Watanabe48f5da12018-06-28 16:09:04 +09001153 have = (conf.get('HAVE_GNUTLS') == 1 and
1154 libgnutls.version().version_compare('>=3.5.3'))
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001155 if dns_over_tls == 'true' and not have
1156 error('DNS-over-TLS support was requested, but dependencies are not available')
1157 endif
1158else
1159 have = false
1160endif
1161conf.set10('ENABLE_DNS_OVER_TLS', have)
1162
Iwan Timmerc9299be2018-06-13 20:26:24 +02001163default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001164if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001165 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001166endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001167if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1168 message('default-dns-over-tls cannot be set to opportunistic when DNS-over-TLS support is disabled. Setting default-dns-over-tls to no.')
Iwan Timmerc9299be2018-06-13 20:26:24 +02001169 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001170endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001171conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1172 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1173substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001174
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001175want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001176if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001177 have = (conf.get('HAVE_LIBCURL') == 1 and
1178 conf.get('HAVE_ZLIB') == 1 and
1179 conf.get('HAVE_BZIP2') == 1 and
1180 conf.get('HAVE_XZ') == 1 and
1181 conf.get('HAVE_GCRYPT') == 1)
1182 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001183 error('importd support was requested, but dependencies are not available')
1184 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001185else
1186 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001187endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001188conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001189
1190want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001191if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001192 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1193 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001194 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1195 # it's possible to build one without the other. Complain only if
1196 # support was explictly requested. The auxiliary files like sysusers
1197 # config should be installed when any of the programs are built.
1198 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1199 error('remote support was requested, but dependencies are not available')
1200 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001201 have = have_deps[0] or have_deps[1]
1202else
1203 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001204endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001205conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001206
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001207foreach term : ['utmp',
1208 'hibernate',
1209 'environment-d',
1210 'binfmt',
1211 'coredump',
1212 'resolve',
1213 'logind',
1214 'hostnamed',
1215 'localed',
1216 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001217 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001218 'networkd',
1219 'timedated',
1220 'timesyncd',
1221 'myhostname',
1222 'firstboot',
1223 'randomseed',
1224 'backlight',
1225 'vconsole',
1226 'quotacheck',
1227 'sysusers',
1228 'tmpfiles',
1229 'hwdb',
1230 'rfkill',
1231 'ldconfig',
1232 'efi',
1233 'tpm',
1234 'ima',
1235 'smack',
1236 'gshadow',
1237 'idn',
1238 'nss-systemd']
1239 have = get_option(term)
1240 name = 'ENABLE_' + term.underscorify().to_upper()
1241 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001242endforeach
1243
Yu Watanabe348b4432018-05-07 18:17:35 +09001244conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001245
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001246want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001247install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001248slow_tests = get_option('slow-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001249tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001250fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001251
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001252conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001253
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001254#####################################################################
1255
1256if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001257 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001258
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001259 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001260 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001261 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001262 elif efi_arch == 'x86_64'
1263 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001264 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001265 elif efi_arch == 'arm'
1266 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001267 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001268 elif efi_arch == 'aarch64'
1269 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001270 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001271 else
1272 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001273 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001274 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001275
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001276 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001277 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001278
1279 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001280else
1281 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001282endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001283conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001284
1285#####################################################################
1286
1287config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001288 output : 'config.h',
1289 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001290
Yu Watanabe348b4432018-05-07 18:17:35 +09001291meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1292
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001293includes = include_directories('src/basic',
1294 'src/shared',
1295 'src/systemd',
1296 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001297 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001298 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001299 'src/resolve',
1300 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001301 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001302 'src/login',
1303 'src/udev',
1304 'src/libudev',
1305 'src/core',
1306 'src/libsystemd/sd-bus',
1307 'src/libsystemd/sd-device',
1308 'src/libsystemd/sd-hwdb',
1309 'src/libsystemd/sd-id128',
1310 'src/libsystemd/sd-netlink',
1311 'src/libsystemd/sd-network',
1312 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001313 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001314
1315add_project_arguments('-include', 'config.h', language : 'c')
1316
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001317subdir('po')
1318subdir('catalog')
1319subdir('src/systemd')
1320subdir('src/basic')
1321subdir('src/libsystemd')
1322subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001323subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001324subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001325
1326libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001327 'journal-core',
1328 libjournal_core_sources,
1329 journald_gperf_c,
1330 include_directories : includes,
1331 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001332
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001333libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001334libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001335 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001336 '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 +02001337 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001338 include_directories : includes,
1339 link_args : ['-shared',
1340 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001341 link_with : [libbasic,
1342 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001343 link_whole : [libsystemd_static,
1344 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001345 dependencies : [threads,
1346 librt,
1347 libxz,
1348 liblz4],
1349 link_depends : libsystemd_sym,
1350 install : true,
1351 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001352
Davide Cavalca70848ec2018-04-09 02:43:35 -07001353static_libsystemd = get_option('static-libsystemd')
1354static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1355
1356install_libsystemd_static = static_library(
1357 'systemd',
1358 libsystemd_sources,
1359 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001360 basic_sources,
1361 basic_gcrypt_sources,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001362 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001363 build_by_default : static_libsystemd != 'false',
1364 install : static_libsystemd != 'false',
1365 install_dir : rootlibdir,
1366 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1367 dependencies : [threads,
1368 librt,
1369 libxz,
1370 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001371 libcap,
1372 libblkid,
1373 libmount,
1374 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001375 libgcrypt],
1376 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1377
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001378############################################################
1379
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001380# binaries that have --help and are intended for use by humans,
1381# usually, but not always, installed in /bin.
1382public_programs = []
1383
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001384subdir('src/libudev')
1385subdir('src/shared')
1386subdir('src/core')
1387subdir('src/udev')
1388subdir('src/network')
1389
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001390subdir('src/analyze')
1391subdir('src/journal-remote')
1392subdir('src/coredump')
1393subdir('src/hostname')
1394subdir('src/import')
1395subdir('src/kernel-install')
1396subdir('src/locale')
1397subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001398subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001399subdir('src/nspawn')
1400subdir('src/resolve')
1401subdir('src/timedate')
1402subdir('src/timesync')
1403subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001404subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001405
1406subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001407subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001408subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001409subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001410
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001411############################################################
1412
1413# only static linking apart from libdl, to make sure that the
1414# module is linked to all libraries that it uses.
1415test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001416 'test-dlopen',
1417 test_dlopen_c,
1418 include_directories : includes,
1419 link_with : [libbasic],
1420 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001421
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001422foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001423 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001424 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001425 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001426
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001427 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001428 if condition
1429 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001430
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001431 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1432 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001433
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001434 nss = shared_library(
1435 'nss_' + module,
1436 'src/nss-@0@/nss-@0@.c'.format(module),
1437 version : '2',
1438 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001439 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1440 link_args : ['-Wl,-z,nodelete',
1441 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001442 '-Wl,--version-script=' + version_script_arg,
1443 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001444 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001445 libbasic],
1446 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001447 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001448 link_depends : sym,
1449 install : true,
1450 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001451
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001452 # We cannot use shared_module because it does not support version suffix.
1453 # Unfortunately shared_library insists on creating the symlink…
1454 meson.add_install_script('sh', '-c',
1455 'rm $DESTDIR@0@/libnss_@1@.so'
1456 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001457
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001458 test('dlopen-nss_' + module,
1459 test_dlopen,
1460 args : [nss.full_path()]) # path to dlopen must include a slash
1461 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001462endforeach
1463
1464############################################################
1465
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001466executable('systemd',
1467 systemd_sources,
1468 include_directories : includes,
1469 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001470 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001471 dependencies : [threads,
1472 librt,
1473 libseccomp,
1474 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001475 libmount,
1476 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001477 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001478 install : true,
1479 install_dir : rootlibexecdir)
1480
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001481meson.add_install_script(meson_make_symlink,
1482 join_paths(rootlibexecdir, 'systemd'),
1483 join_paths(rootsbindir, 'init'))
1484
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001485exe = executable('systemd-analyze',
1486 systemd_analyze_sources,
1487 include_directories : includes,
1488 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001489 libshared],
1490 dependencies : [threads,
1491 librt,
1492 libseccomp,
1493 libselinux,
1494 libmount,
1495 libblkid],
1496 install_rpath : rootlibexecdir,
1497 install : true)
1498public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001499
1500executable('systemd-journald',
1501 systemd_journald_sources,
1502 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001503 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001504 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001505 dependencies : [threads,
1506 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001507 liblz4,
1508 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001509 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001510 install : true,
1511 install_dir : rootlibexecdir)
1512
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001513exe = executable('systemd-cat',
1514 systemd_cat_sources,
1515 include_directories : includes,
1516 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001517 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001518 dependencies : [threads],
1519 install_rpath : rootlibexecdir,
1520 install : true)
1521public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001522
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001523exe = executable('journalctl',
1524 journalctl_sources,
1525 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001526 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001527 dependencies : [threads,
1528 libqrencode,
1529 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001530 liblz4,
1531 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001532 install_rpath : rootlibexecdir,
1533 install : true,
1534 install_dir : rootbindir)
1535public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001536
1537executable('systemd-getty-generator',
1538 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001539 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001540 link_with : [libshared],
1541 install_rpath : rootlibexecdir,
1542 install : true,
1543 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001544
1545executable('systemd-debug-generator',
1546 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001547 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001548 link_with : [libshared],
1549 install_rpath : rootlibexecdir,
1550 install : true,
1551 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001552
1553executable('systemd-fstab-generator',
1554 'src/fstab-generator/fstab-generator.c',
1555 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001556 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001557 link_with : [libshared],
1558 install_rpath : rootlibexecdir,
1559 install : true,
1560 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001561
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001562if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001563 executable('30-systemd-environment-d-generator',
1564 'src/environment-d-generator/environment-d-generator.c',
1565 include_directories : includes,
1566 link_with : [libshared],
1567 install_rpath : rootlibexecdir,
1568 install : true,
1569 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001570
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001571 meson.add_install_script(meson_make_symlink,
1572 join_paths(sysconfdir, 'environment'),
1573 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001574endif
1575
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001576if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001577 executable('systemd-hibernate-resume-generator',
1578 'src/hibernate-resume/hibernate-resume-generator.c',
1579 include_directories : includes,
1580 link_with : [libshared],
1581 install_rpath : rootlibexecdir,
1582 install : true,
1583 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001584
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001585 executable('systemd-hibernate-resume',
1586 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001587 include_directories : includes,
1588 link_with : [libshared],
1589 install_rpath : rootlibexecdir,
1590 install : true,
1591 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001592endif
1593
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001594if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001595 executable('systemd-gpt-auto-generator',
1596 'src/gpt-auto-generator/gpt-auto-generator.c',
1597 'src/basic/blkid-util.h',
1598 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001599 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001600 dependencies : libblkid,
1601 install_rpath : rootlibexecdir,
1602 install : true,
1603 install_dir : systemgeneratordir)
1604
1605 exe = executable('systemd-dissect',
1606 'src/dissect/dissect.c',
1607 include_directories : includes,
1608 link_with : [libshared],
1609 install_rpath : rootlibexecdir,
1610 install : true,
1611 install_dir : rootlibexecdir)
1612 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001613endif
1614
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001615if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001616 executable('systemd-resolved',
1617 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001618 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001619 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001620 libbasic_gcrypt,
1621 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001622 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001623 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001624 install : true,
1625 install_dir : rootlibexecdir)
1626
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001627 exe = executable('resolvectl',
1628 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001629 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001630 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001631 libbasic_gcrypt,
1632 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001633 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001634 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001635 libm,
1636 libidn],
1637 install_rpath : rootlibexecdir,
1638 install : true)
1639 public_programs += [exe]
Lennart Poettering088c1362018-02-27 17:48:54 +01001640
1641 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001642 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001643 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001644
1645 meson.add_install_script(meson_make_symlink,
1646 join_paths(bindir, 'resolvectl'),
1647 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001648endif
1649
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001650if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001651 executable('systemd-logind',
1652 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001653 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001654 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001655 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001656 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001657 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001658 install_rpath : rootlibexecdir,
1659 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001660 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001661
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001662 exe = executable('loginctl',
1663 loginctl_sources,
1664 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001665 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001666 dependencies : [threads,
1667 liblz4,
1668 libxz],
1669 install_rpath : rootlibexecdir,
1670 install : true,
1671 install_dir : rootbindir)
1672 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001673
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001674 exe = executable('systemd-inhibit',
1675 'src/login/inhibit.c',
1676 include_directories : includes,
1677 link_with : [libshared],
1678 install_rpath : rootlibexecdir,
1679 install : true,
1680 install_dir : rootbindir)
1681 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001682
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001683 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001684 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1685 pam_systemd = shared_library(
1686 'pam_systemd',
1687 pam_systemd_c,
1688 name_prefix : '',
1689 include_directories : includes,
1690 link_args : ['-shared',
1691 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001692 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001693 libshared_static],
1694 dependencies : [threads,
1695 libpam,
1696 libpam_misc],
1697 link_depends : pam_systemd_sym,
1698 install : true,
1699 install_dir : pamlibdir)
1700
1701 test('dlopen-pam_systemd',
1702 test_dlopen,
1703 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1704 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001705endif
1706
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001707executable('systemd-user-runtime-dir',
1708 user_runtime_dir_sources,
1709 include_directories : includes,
1710 link_with : [libshared, liblogind_core],
1711 install_rpath : rootlibexecdir,
1712 install : true,
1713 install_dir : rootlibexecdir)
1714
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001715if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001716 executable('systemd-user-sessions',
1717 'src/user-sessions/user-sessions.c',
1718 include_directories : includes,
1719 link_with : [libshared],
1720 install_rpath : rootlibexecdir,
1721 install : true,
1722 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001723endif
1724
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001725if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001726 exe = executable('bootctl',
1727 'src/boot/bootctl.c',
1728 include_directories : includes,
1729 link_with : [libshared],
1730 dependencies : [libblkid],
1731 install_rpath : rootlibexecdir,
1732 install : true)
1733 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001734endif
1735
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001736exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1737 include_directories : includes,
1738 link_with : [libshared],
1739 dependencies : [threads],
1740 install_rpath : rootlibexecdir,
1741 install : true)
1742public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001743
Felipe Satelerf3794362018-05-22 15:08:57 -04001744
1745if get_option('link-systemctl-shared')
1746 systemctl_link_with = [libshared]
1747else
1748 systemctl_link_with = [libsystemd_static,
1749 libshared_static,
1750 libjournal_client,
1751 libbasic_gcrypt]
1752endif
1753
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001754exe = executable('systemctl', 'src/systemctl/systemctl.c',
1755 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001756 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001757 dependencies : [threads,
1758 libcap,
1759 libselinux,
1760 libxz,
1761 liblz4],
1762 install_rpath : rootlibexecdir,
1763 install : true,
1764 install_dir : rootbindir)
1765public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001766
Lennart Poettering61d05782018-04-16 21:41:40 +02001767if conf.get('ENABLE_PORTABLED') == 1
1768 executable('systemd-portabled',
1769 systemd_portabled_sources,
1770 include_directories : includes,
1771 link_with : [libshared],
1772 dependencies : [threads],
1773 install_rpath : rootlibexecdir,
1774 install : true,
1775 install_dir : rootlibexecdir)
1776
1777 exe = executable('portablectl', 'src/portable/portablectl.c',
1778 include_directories : includes,
1779 link_with : [libshared],
1780 dependencies : [threads],
1781 install_rpath : rootlibexecdir,
1782 install : true,
1783 install_dir : rootlibexecdir)
1784 public_programs += [exe]
1785endif
1786
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001787foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1788 meson.add_install_script(meson_make_symlink,
1789 join_paths(rootbindir, 'systemctl'),
1790 join_paths(rootsbindir, alias))
1791endforeach
1792
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001793if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001794 executable('systemd-backlight',
1795 'src/backlight/backlight.c',
1796 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001797 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001798 install_rpath : rootlibexecdir,
1799 install : true,
1800 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001801endif
1802
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001803if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001804 executable('systemd-rfkill',
1805 'src/rfkill/rfkill.c',
1806 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001807 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001808 install_rpath : rootlibexecdir,
1809 install : true,
1810 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001811endif
1812
1813executable('systemd-system-update-generator',
1814 'src/system-update-generator/system-update-generator.c',
1815 include_directories : includes,
1816 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001817 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001818 install : true,
1819 install_dir : systemgeneratordir)
1820
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001821if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001822 executable('systemd-cryptsetup',
1823 'src/cryptsetup/cryptsetup.c',
1824 include_directories : includes,
1825 link_with : [libshared],
1826 dependencies : [libcryptsetup],
1827 install_rpath : rootlibexecdir,
1828 install : true,
1829 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001830
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001831 executable('systemd-cryptsetup-generator',
1832 'src/cryptsetup/cryptsetup-generator.c',
1833 include_directories : includes,
1834 link_with : [libshared],
1835 dependencies : [libcryptsetup],
1836 install_rpath : rootlibexecdir,
1837 install : true,
1838 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001839
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001840 executable('systemd-veritysetup',
1841 'src/veritysetup/veritysetup.c',
1842 include_directories : includes,
1843 link_with : [libshared],
1844 dependencies : [libcryptsetup],
1845 install_rpath : rootlibexecdir,
1846 install : true,
1847 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001848
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001849 executable('systemd-veritysetup-generator',
1850 'src/veritysetup/veritysetup-generator.c',
1851 include_directories : includes,
1852 link_with : [libshared],
1853 dependencies : [libcryptsetup],
1854 install_rpath : rootlibexecdir,
1855 install : true,
1856 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001857endif
1858
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001859if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001860 executable('systemd-sysv-generator',
1861 'src/sysv-generator/sysv-generator.c',
1862 include_directories : includes,
1863 link_with : [libshared],
1864 install_rpath : rootlibexecdir,
1865 install : true,
1866 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001867
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001868 executable('systemd-rc-local-generator',
1869 'src/rc-local-generator/rc-local-generator.c',
1870 include_directories : includes,
1871 link_with : [libshared],
1872 install_rpath : rootlibexecdir,
1873 install : true,
1874 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001875endif
1876
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001877if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001878 executable('systemd-hostnamed',
1879 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001880 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001881 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001882 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001883 install : true,
1884 install_dir : rootlibexecdir)
1885
1886 exe = executable('hostnamectl',
1887 'src/hostname/hostnamectl.c',
1888 include_directories : includes,
1889 link_with : [libshared],
1890 install_rpath : rootlibexecdir,
1891 install : true)
1892 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001893endif
1894
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001895if conf.get('ENABLE_LOCALED') == 1
1896 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001897 # logind will load libxkbcommon.so dynamically on its own
1898 deps = [libdl]
1899 else
1900 deps = []
1901 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001902
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001903 executable('systemd-localed',
1904 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001905 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001906 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001907 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001908 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001909 install : true,
1910 install_dir : rootlibexecdir)
1911
1912 exe = executable('localectl',
1913 localectl_sources,
1914 include_directories : includes,
1915 link_with : [libshared],
1916 install_rpath : rootlibexecdir,
1917 install : true)
1918 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001919endif
1920
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001921if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001922 executable('systemd-timedated',
1923 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001924 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001925 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001926 install_rpath : rootlibexecdir,
1927 install : true,
1928 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09001929endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001930
Yu Watanabe6129ec82018-05-03 18:07:43 +09001931if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001932 exe = executable('timedatectl',
1933 'src/timedate/timedatectl.c',
1934 include_directories : includes,
1935 install_rpath : rootlibexecdir,
1936 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09001937 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001938 install : true)
1939 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001940endif
1941
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001942if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001943 executable('systemd-timesyncd',
1944 systemd_timesyncd_sources,
1945 include_directories : includes,
1946 link_with : [libshared],
1947 dependencies : [threads,
1948 libm],
1949 install_rpath : rootlibexecdir,
1950 install : true,
1951 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001952
1953 executable('systemd-time-wait-sync',
1954 'src/time-wait-sync/time-wait-sync.c',
1955 include_directories : includes,
1956 link_with : [libshared],
1957 install_rpath : rootlibexecdir,
1958 install : true,
1959 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001960endif
1961
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001962if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001963 executable('systemd-machined',
1964 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001965 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001966 link_with : [libmachine_core,
1967 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001968 install_rpath : rootlibexecdir,
1969 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001970 install_dir : rootlibexecdir)
1971
1972 exe = executable('machinectl',
1973 'src/machine/machinectl.c',
1974 include_directories : includes,
1975 link_with : [libshared],
1976 dependencies : [threads,
1977 libxz,
1978 liblz4],
1979 install_rpath : rootlibexecdir,
1980 install : true,
1981 install_dir : rootbindir)
1982 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001983endif
1984
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001985if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001986 executable('systemd-importd',
1987 systemd_importd_sources,
1988 include_directories : includes,
1989 link_with : [libshared],
1990 dependencies : [threads],
1991 install_rpath : rootlibexecdir,
1992 install : true,
1993 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001994
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001995 systemd_pull = executable('systemd-pull',
1996 systemd_pull_sources,
1997 include_directories : includes,
1998 link_with : [libshared],
1999 dependencies : [libcurl,
2000 libz,
2001 libbzip2,
2002 libxz,
2003 libgcrypt],
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 systemd_import = executable('systemd-import',
2009 systemd_import_sources,
2010 include_directories : includes,
2011 link_with : [libshared],
2012 dependencies : [libcurl,
2013 libz,
2014 libbzip2,
2015 libxz],
2016 install_rpath : rootlibexecdir,
2017 install : true,
2018 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002019
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002020 systemd_export = executable('systemd-export',
2021 systemd_export_sources,
2022 include_directories : includes,
2023 link_with : [libshared],
2024 dependencies : [libcurl,
2025 libz,
2026 libbzip2,
2027 libxz],
2028 install_rpath : rootlibexecdir,
2029 install : true,
2030 install_dir : rootlibexecdir)
2031 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002032endif
2033
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002034if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002035 exe = executable('systemd-journal-upload',
2036 systemd_journal_upload_sources,
2037 include_directories : includes,
2038 link_with : [libshared],
2039 dependencies : [threads,
2040 libcurl,
2041 libgnutls,
2042 libxz,
2043 liblz4],
2044 install_rpath : rootlibexecdir,
2045 install : true,
2046 install_dir : rootlibexecdir)
2047 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002048endif
2049
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002050if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002051 s_j_remote = executable('systemd-journal-remote',
2052 systemd_journal_remote_sources,
2053 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002054 link_with : [libshared,
2055 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002056 dependencies : [threads,
2057 libmicrohttpd,
2058 libgnutls,
2059 libxz,
2060 liblz4],
2061 install_rpath : rootlibexecdir,
2062 install : true,
2063 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002064
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002065 s_j_gatewayd = executable('systemd-journal-gatewayd',
2066 systemd_journal_gatewayd_sources,
2067 include_directories : includes,
2068 link_with : [libshared],
2069 dependencies : [threads,
2070 libmicrohttpd,
2071 libgnutls,
2072 libxz,
2073 liblz4],
2074 install_rpath : rootlibexecdir,
2075 install : true,
2076 install_dir : rootlibexecdir)
2077 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002078endif
2079
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002080if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002081 executable('systemd-coredump',
2082 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002083 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002084 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002085 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002086 libacl,
2087 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002088 libxz,
2089 liblz4],
2090 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002091 install : true,
2092 install_dir : rootlibexecdir)
2093
2094 exe = executable('coredumpctl',
2095 coredumpctl_sources,
2096 include_directories : includes,
2097 link_with : [libshared],
2098 dependencies : [threads,
2099 libxz,
2100 liblz4],
2101 install_rpath : rootlibexecdir,
2102 install : true)
2103 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002104endif
2105
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002106if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002107 exe = executable('systemd-binfmt',
2108 'src/binfmt/binfmt.c',
2109 include_directories : includes,
2110 link_with : [libshared],
2111 install_rpath : rootlibexecdir,
2112 install : true,
2113 install_dir : rootlibexecdir)
2114 public_programs += [exe]
2115
2116 meson.add_install_script('sh', '-c',
2117 mkdir_p.format(binfmtdir))
2118 meson.add_install_script('sh', '-c',
2119 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2120endif
2121
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002122if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002123 executable('systemd-vconsole-setup',
2124 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002125 include_directories : includes,
2126 link_with : [libshared],
2127 install_rpath : rootlibexecdir,
2128 install : true,
2129 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002130endif
2131
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002132if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002133 executable('systemd-random-seed',
2134 'src/random-seed/random-seed.c',
2135 include_directories : includes,
2136 link_with : [libshared],
2137 install_rpath : rootlibexecdir,
2138 install : true,
2139 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002140endif
2141
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002142if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002143 executable('systemd-firstboot',
2144 'src/firstboot/firstboot.c',
2145 include_directories : includes,
2146 link_with : [libshared],
2147 dependencies : [libcrypt],
2148 install_rpath : rootlibexecdir,
2149 install : true,
2150 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002151endif
2152
2153executable('systemd-remount-fs',
2154 'src/remount-fs/remount-fs.c',
2155 'src/core/mount-setup.c',
2156 'src/core/mount-setup.h',
2157 include_directories : includes,
2158 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002159 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002160 install : true,
2161 install_dir : rootlibexecdir)
2162
2163executable('systemd-machine-id-setup',
2164 'src/machine-id-setup/machine-id-setup-main.c',
2165 'src/core/machine-id-setup.c',
2166 'src/core/machine-id-setup.h',
2167 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002168 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002169 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002170 install : true,
2171 install_dir : rootbindir)
2172
2173executable('systemd-fsck',
2174 'src/fsck/fsck.c',
2175 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002176 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002177 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002178 install : true,
2179 install_dir : rootlibexecdir)
2180
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002181executable('systemd-growfs',
2182 'src/partition/growfs.c',
2183 include_directories : includes,
2184 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002185 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002186 install_rpath : rootlibexecdir,
2187 install : true,
2188 install_dir : rootlibexecdir)
2189
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002190executable('systemd-makefs',
2191 'src/partition/makefs.c',
2192 include_directories : includes,
2193 link_with : [libshared],
2194 install_rpath : rootlibexecdir,
2195 install : true,
2196 install_dir : rootlibexecdir)
2197
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002198executable('systemd-sleep',
2199 'src/sleep/sleep.c',
2200 include_directories : includes,
2201 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002202 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002203 install : true,
2204 install_dir : rootlibexecdir)
2205
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002206exe = executable('systemd-sysctl',
2207 'src/sysctl/sysctl.c',
2208 include_directories : includes,
2209 link_with : [libshared],
2210 install_rpath : rootlibexecdir,
2211 install : true,
2212 install_dir : rootlibexecdir)
2213public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002214
2215executable('systemd-ac-power',
2216 'src/ac-power/ac-power.c',
2217 include_directories : includes,
2218 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002219 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002220 install : true,
2221 install_dir : rootlibexecdir)
2222
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002223exe = executable('systemd-detect-virt',
2224 'src/detect-virt/detect-virt.c',
2225 include_directories : includes,
2226 link_with : [libshared],
2227 install_rpath : rootlibexecdir,
2228 install : true)
2229public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002230
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002231exe = executable('systemd-delta',
2232 'src/delta/delta.c',
2233 include_directories : includes,
2234 link_with : [libshared],
2235 install_rpath : rootlibexecdir,
2236 install : true)
2237public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002238
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002239exe = executable('systemd-escape',
2240 'src/escape/escape.c',
2241 include_directories : includes,
2242 link_with : [libshared],
2243 install_rpath : rootlibexecdir,
2244 install : true,
2245 install_dir : rootbindir)
2246public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002247
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002248exe = executable('systemd-notify',
2249 'src/notify/notify.c',
2250 include_directories : includes,
2251 link_with : [libshared],
2252 install_rpath : rootlibexecdir,
2253 install : true,
2254 install_dir : rootbindir)
2255public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002256
2257executable('systemd-volatile-root',
2258 'src/volatile-root/volatile-root.c',
2259 include_directories : includes,
2260 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002261 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002262 install : true,
2263 install_dir : rootlibexecdir)
2264
2265executable('systemd-cgroups-agent',
2266 'src/cgroups-agent/cgroups-agent.c',
2267 include_directories : includes,
2268 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002269 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002270 install : true,
2271 install_dir : rootlibexecdir)
2272
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002273exe = executable('systemd-path',
2274 'src/path/path.c',
2275 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002276 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002277 install_rpath : rootlibexecdir,
2278 install : true)
2279public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002280
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002281exe = executable('systemd-ask-password',
2282 'src/ask-password/ask-password.c',
2283 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002284 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002285 install_rpath : rootlibexecdir,
2286 install : true,
2287 install_dir : rootbindir)
2288public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002289
2290executable('systemd-reply-password',
2291 'src/reply-password/reply-password.c',
2292 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002293 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002294 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002295 install : true,
2296 install_dir : rootlibexecdir)
2297
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002298exe = executable('systemd-tty-ask-password-agent',
2299 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2300 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002301 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002302 install_rpath : rootlibexecdir,
2303 install : true,
2304 install_dir : rootbindir)
2305public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002306
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002307exe = executable('systemd-cgls',
2308 'src/cgls/cgls.c',
2309 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002310 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002311 install_rpath : rootlibexecdir,
2312 install : true)
2313public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002314
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002315exe = executable('systemd-cgtop',
2316 'src/cgtop/cgtop.c',
2317 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002318 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002319 install_rpath : rootlibexecdir,
2320 install : true)
2321public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002322
2323executable('systemd-initctl',
2324 'src/initctl/initctl.c',
2325 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002326 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002327 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002328 install : true,
2329 install_dir : rootlibexecdir)
2330
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002331exe = executable('systemd-mount',
2332 'src/mount/mount-tool.c',
2333 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002334 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002335 install_rpath : rootlibexecdir,
2336 install : true)
2337public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002338
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002339meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002340 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002341
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002342exe = executable('systemd-run',
2343 'src/run/run.c',
2344 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002345 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002346 install_rpath : rootlibexecdir,
2347 install : true)
2348public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002349
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002350exe = executable('systemd-stdio-bridge',
2351 'src/stdio-bridge/stdio-bridge.c',
2352 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002353 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002354 install_rpath : rootlibexecdir,
2355 install : true)
2356public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002357
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002358exe = executable('busctl',
2359 'src/busctl/busctl.c',
2360 'src/busctl/busctl-introspect.c',
2361 'src/busctl/busctl-introspect.h',
2362 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002363 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002364 install_rpath : rootlibexecdir,
2365 install : true)
2366public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002367
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002368if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002369 exe = executable('systemd-sysusers',
2370 'src/sysusers/sysusers.c',
2371 include_directories : includes,
2372 link_with : [libshared],
2373 install_rpath : rootlibexecdir,
2374 install : true,
2375 install_dir : rootbindir)
2376 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002377endif
2378
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002379if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002380 exe = executable('systemd-tmpfiles',
2381 'src/tmpfiles/tmpfiles.c',
2382 include_directories : includes,
2383 link_with : [libshared],
2384 dependencies : [libacl],
2385 install_rpath : rootlibexecdir,
2386 install : true,
2387 install_dir : rootbindir)
2388 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002389
2390 test('test-systemd-tmpfiles',
2391 test_systemd_tmpfiles_py,
2392 args : exe.full_path())
2393 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002394endif
2395
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002396if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002397 exe = executable('systemd-hwdb',
2398 'src/hwdb/hwdb.c',
2399 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2400 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002401 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002402 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002403 install : true,
2404 install_dir : rootbindir)
2405 public_programs += [exe]
2406endif
2407
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002408if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002409 executable('systemd-quotacheck',
2410 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002411 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002412 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002413 install_rpath : rootlibexecdir,
2414 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002415 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002416endif
2417
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002418exe = executable('systemd-socket-proxyd',
2419 'src/socket-proxy/socket-proxyd.c',
2420 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002421 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002422 dependencies : [threads],
2423 install_rpath : rootlibexecdir,
2424 install : true,
2425 install_dir : rootlibexecdir)
2426public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002427
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002428exe = executable('systemd-udevd',
2429 systemd_udevd_sources,
2430 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002431 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002432 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002433 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002434 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002435 dependencies : [threads,
2436 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002437 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002438 libacl,
2439 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002440 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002441 install : true,
2442 install_dir : rootlibexecdir)
2443public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002444
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002445exe = executable('udevadm',
2446 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002447 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002448 include_directories : includes,
2449 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002450 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002451 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002452 dependencies : [threads,
2453 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002454 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002455 libacl,
2456 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002457 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002458 install : true,
2459 install_dir : rootbindir)
2460public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002461
2462executable('systemd-shutdown',
2463 systemd_shutdown_sources,
2464 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002465 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002466 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002467 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002468 install : true,
2469 install_dir : rootlibexecdir)
2470
2471executable('systemd-update-done',
2472 'src/update-done/update-done.c',
2473 include_directories : includes,
2474 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002475 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002476 install : true,
2477 install_dir : rootlibexecdir)
2478
2479executable('systemd-update-utmp',
2480 'src/update-utmp/update-utmp.c',
2481 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002482 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002483 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002484 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002485 install : true,
2486 install_dir : rootlibexecdir)
2487
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002488if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002489 executable('systemd-modules-load',
2490 'src/modules-load/modules-load.c',
2491 include_directories : includes,
2492 link_with : [libshared],
2493 dependencies : [libkmod],
2494 install_rpath : rootlibexecdir,
2495 install : true,
2496 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002497
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002498 meson.add_install_script('sh', '-c',
2499 mkdir_p.format(modulesloaddir))
2500 meson.add_install_script('sh', '-c',
2501 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002502endif
2503
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002504exe = executable('systemd-nspawn',
2505 systemd_nspawn_sources,
2506 'src/core/mount-setup.c', # FIXME: use a variable?
2507 'src/core/mount-setup.h',
2508 'src/core/loopback-setup.c',
2509 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002510 include_directories : includes,
2511 link_with : [libnspawn_core,
2512 libshared],
2513 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002514 install_rpath : rootlibexecdir,
2515 install : true)
2516public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002517
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002518if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002519 executable('systemd-networkd',
2520 systemd_networkd_sources,
2521 include_directories : includes,
2522 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002523 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002524 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002525 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002526 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002527 install_rpath : rootlibexecdir,
2528 install : true,
2529 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002530
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002531 executable('systemd-networkd-wait-online',
2532 systemd_networkd_wait_online_sources,
2533 include_directories : includes,
2534 link_with : [libnetworkd_core,
2535 libshared],
2536 install_rpath : rootlibexecdir,
2537 install : true,
2538 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002539
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002540 exe = executable('networkctl',
2541 networkctl_sources,
2542 include_directories : includes,
2543 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002544 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002545 install_rpath : rootlibexecdir,
2546 install : true,
2547 install_dir : rootbindir)
2548 public_programs += [exe]
2549endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002550
2551executable('systemd-sulogin-shell',
2552 ['src/sulogin-shell/sulogin-shell.c'],
2553 include_directories : includes,
2554 link_with : [libshared],
2555 install_rpath : rootlibexecdir,
2556 install : true,
2557 install_dir : rootlibexecdir)
2558
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002559############################################################
2560
2561foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002562 sources = tuple[0]
2563 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2564 dependencies = tuple[2]
2565 condition = tuple.length() >= 4 ? tuple[3] : ''
2566 type = tuple.length() >= 5 ? tuple[4] : ''
2567 defs = tuple.length() >= 6 ? tuple[5] : []
2568 incs = tuple.length() >= 7 ? tuple[6] : includes
2569 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002570
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002571 name = sources[0].split('/')[-1].split('.')[0]
2572 if type.startswith('timeout=')
2573 timeout = type.split('=')[1].to_int()
2574 type = ''
2575 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002576 if want_tests == 'false'
2577 message('Not compiling @0@ because tests is set to false'.format(name))
2578 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002579 exe = executable(
2580 name,
2581 sources,
2582 include_directories : incs,
2583 link_with : link_with,
2584 dependencies : dependencies,
2585 c_args : defs,
2586 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002587 install : install_tests,
2588 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002589
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002590 if type == 'manual'
2591 message('@0@ is a manual test'.format(name))
2592 elif type == 'unsafe' and want_tests != 'unsafe'
2593 message('@0@ is an unsafe test'.format(name))
2594 else
2595 test(name, exe,
2596 env : test_env,
2597 timeout : timeout)
2598 endif
2599 else
2600 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2601 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002602endforeach
2603
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002604exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002605 'test-libsystemd-sym',
2606 test_libsystemd_sym_c,
2607 include_directories : includes,
2608 link_with : [libsystemd],
2609 install : install_tests,
2610 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002611test('test-libsystemd-sym', exe)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002612
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002613exe = executable(
2614 'test-libsystemd-static-sym',
2615 test_libsystemd_sym_c,
2616 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002617 link_with : [install_libsystemd_static],
2618 dependencies : [threads], # threads is already included in dependencies on the library,
2619 # but does not seem to get propagated. Add here as a work-around.
Davide Cavalca20f3d322018-04-24 13:34:48 -07002620 build_by_default : static_libsystemd_pic,
2621 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002622 install_dir : testsdir)
Davide Cavalca20f3d322018-04-24 13:34:48 -07002623if static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002624 test('test-libsystemd-static-sym', exe)
2625endif
2626
2627exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002628 'test-libudev-sym',
2629 test_libudev_sym_c,
2630 include_directories : includes,
2631 c_args : ['-Wno-deprecated-declarations'],
2632 link_with : [libudev],
2633 install : install_tests,
2634 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002635test('test-libudev-sym', exe)
2636
2637exe = executable(
2638 'test-libudev-static-sym',
2639 test_libudev_sym_c,
2640 include_directories : includes,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002641 c_args : ['-Wno-deprecated-declarations'],
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002642 link_with : [install_libudev_static],
Davide Cavalca20f3d322018-04-24 13:34:48 -07002643 build_by_default : static_libudev_pic,
2644 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002645 install_dir : testsdir)
Davide Cavalca20f3d322018-04-24 13:34:48 -07002646if static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002647 test('test-libudev-static-sym', exe)
2648endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002649
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002650############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002651
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002652fuzzer_exes = []
2653
2654foreach tuple : fuzzers
2655 sources = tuple[0]
2656 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2657 dependencies = tuple[2]
2658 defs = tuple.length() >= 4 ? tuple[3] : []
2659 incs = tuple.length() >= 5 ? tuple[4] : includes
2660
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002661 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002662 dependencies += fuzzing_engine
2663 else
2664 sources += 'src/fuzz/fuzz-main.c'
2665 endif
2666
2667 name = sources[0].split('/')[-1].split('.')[0]
2668
2669 fuzzer_exes += executable(
2670 name,
2671 sources,
2672 include_directories : [incs, include_directories('src/fuzz')],
2673 link_with : link_with,
2674 dependencies : dependencies,
2675 c_args : defs,
2676 install : false)
2677endforeach
2678
2679run_target('fuzzers',
2680 depends : fuzzer_exes,
2681 command : ['true'])
2682
2683############################################################
2684
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002685make_directive_index_py = find_program('tools/make-directive-index.py')
2686make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002687xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002688hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002689
2690subdir('units')
2691subdir('sysctl.d')
2692subdir('sysusers.d')
2693subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002694subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002695subdir('hwdb')
2696subdir('network')
2697subdir('man')
2698subdir('shell-completion/bash')
2699subdir('shell-completion/zsh')
Lennart Poettering2d684e62018-03-28 16:58:37 +02002700subdir('doc/sysvinit')
2701subdir('doc/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002702
2703# FIXME: figure out if the warning is true:
2704# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2705install_subdir('factory/etc',
2706 install_dir : factorydir)
2707
2708
2709install_data('xorg/50-systemd-user.sh',
2710 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002711install_data('modprobe.d/systemd.conf',
2712 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002713install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002714 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002715 'NEWS',
2716 'README',
2717 'doc/CODING_STYLE',
2718 'doc/DISTRO_PORTING',
2719 'doc/ENVIRONMENT.md',
2720 'doc/HACKING',
2721 'doc/TRANSIENT-SETTINGS.md',
2722 'doc/TRANSLATORS',
2723 'doc/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002724 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2725 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002726
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002727meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2728meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2729
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002730############################################################
2731
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002732meson_check_help = find_program('tools/meson-check-help.sh')
2733
2734foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002735 name = exec.full_path().split('/')[-1]
2736 test('check-help-' + name,
2737 meson_check_help,
2738 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002739endforeach
2740
2741############################################################
2742
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002743# Enable tests for all supported sanitizers
2744foreach tuple : sanitizers
2745 sanitizer = tuple[0]
2746 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002747
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002748 have = run_command(check_compilation_sh,
2749 cc.cmd_array(), '-x', 'c',
2750 '-fsanitize=@0@'.format(sanitizer),
2751 '-include', link_test_c).returncode() == 0
2752 message('@0@ sanitizer supported: @1@'.format(sanitizer, have ? 'yes' : 'no'))
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002753
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002754 if have
2755 prev = ''
2756 foreach p : fuzz_regression_tests
2757 b = p.split('/')[-2]
2758 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002759
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002760 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002761
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002762 if name != prev
2763 if want_tests == 'false'
2764 message('Not compiling @0@ because tests is set to false'.format(name))
2765 elif slow_tests
2766 exe = custom_target(
2767 name,
2768 output : name,
2769 depends : build,
2770 command : [env, 'ln', '-fs',
2771 join_paths(build.full_path(), b),
2772 '@OUTPUT@'],
2773 build_by_default : true)
2774 else
2775 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2776 endif
2777 endif
2778 prev = name
2779
2780 if want_tests != 'false' and slow_tests
2781 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2782 env,
2783 args : [exe.full_path(),
2784 join_paths(meson.source_root(),
2785 'test/fuzz-regressions',
2786 p)])
2787 endif
2788 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002789 endif
2790endforeach
2791
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002792
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002793############################################################
2794
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002795if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002796 all_files = run_command(
2797 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002798 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002799 'ls-files',
2800 ':/*.[ch]'])
2801 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002802
userwithuide85a6902017-08-09 13:41:44 +00002803 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002804 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002805 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002806 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00002807 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002808 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002809 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002810endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002811
2812if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002813 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002814 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002815 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002816 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002817endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002818
2819if git.found()
2820 git_head = run_command(
2821 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002822 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002823 'rev-parse', 'HEAD']).stdout().strip()
2824 git_head_short = run_command(
2825 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002826 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002827 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2828
2829 run_target(
2830 'git-snapshot',
2831 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002832 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002833 git_head_short),
2834 '--prefix', 'systemd-@0@/'.format(git_head),
2835 'HEAD'])
2836endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002837
2838############################################################
2839
Lennart Poettering51b13862017-12-20 12:51:14 +01002840meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2841run_target(
2842 'check-api-docs',
2843 depends : [man, libsystemd, libudev],
2844 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2845
2846############################################################
2847
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002848status = [
2849 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2850
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002851 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002852 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002853 'prefix directory: @0@'.format(prefixdir),
2854 'rootprefix directory: @0@'.format(rootprefixdir),
2855 'sysconf directory: @0@'.format(sysconfdir),
2856 'include directory: @0@'.format(includedir),
2857 'lib directory: @0@'.format(libdir),
2858 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002859 'SysV init scripts: @0@'.format(sysvinit_path),
2860 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002861 'PAM modules directory: @0@'.format(pamlibdir),
2862 'PAM configuration directory: @0@'.format(pamconfdir),
2863 'RPM macros directory: @0@'.format(rpmmacrosdir),
2864 'modprobe.d directory: @0@'.format(modprobedir),
2865 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2866 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2867 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2868 'bash completions directory: @0@'.format(bashcompletiondir),
2869 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002870 'extra start script: @0@'.format(get_option('rc-local')),
2871 'extra stop script: @0@'.format(get_option('halt-local')),
2872 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2873 get_option('debug-tty')),
2874 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002875 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002876 'maximum system UID: @0@'.format(system_uid_max),
2877 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002878 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2879 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2880 'minimum container UID base: @0@'.format(container_uid_base_min),
2881 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002882 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002883 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002884 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002885 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002886 'nobody user name: @0@'.format(nobody_user),
2887 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002888 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002889 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002890
2891 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02002892 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002893 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2894 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2895
2896alt_dns_servers = '\n '.join(dns_servers.split(' '))
2897alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2898status += [
2899 'default DNS servers: @0@'.format(alt_dns_servers),
2900 'default NTP servers: @0@'.format(alt_ntp_servers)]
2901
2902alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2903 '@@0@'.format(time_epoch)).stdout().strip()
2904status += [
2905 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2906
2907# TODO:
2908# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2909# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2910# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2911
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002912if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002913 status += [
2914 'efi arch: @0@'.format(efi_arch)]
2915
2916 if have_gnu_efi
2917 status += [
2918 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2919 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002920 'EFI lib directory: @0@'.format(efi_libdir),
2921 'EFI lds directory: @0@'.format(efi_ldsdir),
2922 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002923 endif
2924endif
2925
2926found = []
2927missing = []
2928
2929foreach tuple : [
2930 ['libcryptsetup'],
2931 ['PAM'],
2932 ['AUDIT'],
2933 ['IMA'],
2934 ['AppArmor'],
2935 ['SELinux'],
2936 ['SECCOMP'],
2937 ['SMACK'],
2938 ['zlib'],
2939 ['xz'],
2940 ['lz4'],
2941 ['bzip2'],
2942 ['ACL'],
2943 ['gcrypt'],
2944 ['qrencode'],
2945 ['microhttpd'],
2946 ['gnutls'],
2947 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002948 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002949 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002950 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002951 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002952 ['libiptc'],
2953 ['elfutils'],
2954 ['binfmt'],
2955 ['vconsole'],
2956 ['quotacheck'],
2957 ['tmpfiles'],
2958 ['environment.d'],
2959 ['sysusers'],
2960 ['firstboot'],
2961 ['randomseed'],
2962 ['backlight'],
2963 ['rfkill'],
2964 ['logind'],
2965 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02002966 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002967 ['importd'],
2968 ['hostnamed'],
2969 ['timedated'],
2970 ['timesyncd'],
2971 ['localed'],
2972 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002973 ['resolve'],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09002974 ['DNS-over-TLS'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002975 ['coredump'],
2976 ['polkit'],
2977 ['legacy pkla', install_polkit_pkla],
2978 ['efi'],
2979 ['gnu-efi', have_gnu_efi],
2980 ['kmod'],
2981 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01002982 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002983 ['blkid'],
2984 ['dbus'],
2985 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002986 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002987 ['hwdb'],
2988 ['tpm'],
2989 ['man pages', want_man],
2990 ['html pages', want_html],
2991 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002992 ['SysV compat'],
2993 ['utmp'],
2994 ['ldconfig'],
2995 ['hibernate'],
2996 ['adm group', get_option('adm-group')],
2997 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002998 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002999 ['debug hashmap'],
3000 ['debug mmap cache'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003001 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003002]
3003
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003004 if tuple.length() >= 2
3005 cond = tuple[1]
3006 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003007 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3008 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003009 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003010 endif
3011 if cond
3012 found += [tuple[0]]
3013 else
3014 missing += [tuple[0]]
3015 endif
3016endforeach
3017
3018status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003019 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003020 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003021 '',
3022 'disabled features: @0@'.format(', '.join(missing)),
3023 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003024message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003025
3026if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003027 warning('\n' +
3028 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3029 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3030 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003031endif