blob: 68423bdfa5ef4ead8099d973cf823a0ab8e76198 [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 <linux/stat.h>
425#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400426'''
427# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700428# FIXME: these should use -D_GNU_SOURCE, since that is defined at build time
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400429
430foreach decl : ['char16_t',
431 'char32_t',
432 'key_serial_t',
433 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000434 'struct fib_rule_uid_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100435 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400436 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400437
438 # We get -1 if the size cannot be determined
439 have = cc.sizeof(decl, prefix : decl_headers) > 0
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200440 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400441endforeach
442
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700443conf.set10('HAVE_STRUCT_STATX_IN_SYS_STAT_H', cc.sizeof('struct statx', prefix : '''
444#include <sys/stat.h>
445''', args : '-D_GNU_SOURCE') > 0)
446
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400447foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
448 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
449 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
450 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530451 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400452 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
453 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
454 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
455 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
456 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530457 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400458 # if_tunnel.h is buggy and cannot be included on its own
459 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
460 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
461 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
462 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
463 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
464 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
465 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530466 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400467 ['NDA_IFINDEX', 'linux/neighbour.h'],
468 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000469 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400470 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530471 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400472 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400473 prefix = decl.length() > 2 ? decl[2] : ''
474 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200475 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400476endforeach
477
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400478foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200479 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400480endforeach
481
482foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100483 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100484 ['gettid', '''#include <sys/types.h>
485 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100486 ['pivot_root', '''#include <stdlib.h>
487 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100488 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400489 #include <sys/stat.h>
490 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100491 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100492 ['renameat2', '''#include <stdio.h>
493 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400494 ['kcmp', '''#include <linux/kcmp.h>'''],
495 ['keyctl', '''#include <sys/types.h>
496 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100497 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400498 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200499 ['bpf', '''#include <sys/syscall.h>
500 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100501 ['statx', '''#include <sys/types.h>
502 #include <sys/stat.h>
503 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100504 ['explicit_bzero' , '''#include <string.h>'''],
505 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400506]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400507
Lennart Poettering85db59b2017-12-25 12:01:14 +0100508 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200509 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400510endforeach
511
Lennart Poettering85db59b2017-12-25 12:01:14 +0100512if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200513 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200514 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400515else
516 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200517 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200518 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400519endif
520
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400521#####################################################################
522
523sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400524awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400525m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400526stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400527git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100528env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100529perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400530
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400531meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400532mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400533test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
534splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400535
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400536# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
537# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500538progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400539 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400540 ['kmod', '/usr/bin/kmod' ],
541 ['kexec', '/usr/sbin/kexec' ],
542 ['sulogin', '/usr/sbin/sulogin' ],
543 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
544 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
545 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
546 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
547 ]
548foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400549 path = get_option(prog[0] + '-path')
550 if path != ''
551 message('Using @1@ for @0@'.format(prog[0], path))
552 else
553 exe = find_program(prog[0],
554 '/usr/sbin/' + prog[0],
555 '/sbin/' + prog[0],
556 required: false)
557 path = exe.found() ? exe.path() : prog[1]
558 endif
559 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
560 conf.set_quoted(name, path)
561 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400562endforeach
563
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500564conf.set_quoted('TELINIT', get_option('telinit-path'))
565
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400566if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100567 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400568endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400569
570############################################################
571
572gperf = find_program('gperf')
573
574gperf_test_format = '''
575#include <string.h>
576const char * in_word_set(const char *, @0@);
577@1@
578'''
579gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
580gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
581gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
582if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400583 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400584else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400585 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
586 if cc.compiles(gperf_test)
587 gperf_len_type = 'unsigned'
588 else
589 error('unable to determine gperf len type')
590 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400591endif
592message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400593conf.set('GPERF_LEN_TYPE', gperf_len_type,
594 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400595
596############################################################
597
598if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400599 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400600endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100601foreach header : ['crypt.h',
602 'linux/btrfs.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400603 'linux/memfd.h',
604 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200605 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400606 'valgrind/memcheck.h',
607 'valgrind/valgrind.h',
608 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400609
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200610 conf.set10('HAVE_' + header.underscorify().to_upper(),
611 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400612endforeach
613
614############################################################
615
616conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400617conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
618gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400619
620default_hierarchy = get_option('default-hierarchy')
621conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
622 description : 'default cgroup hierarchy as string')
623if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400624 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400625elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400626 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400627else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400628 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400629endif
630
631time_epoch = get_option('time-epoch')
632if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400633 NEWS = files('NEWS')
634 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400635endif
636time_epoch = time_epoch.to_int()
637conf.set('TIME_EPOCH', time_epoch)
638
639system_uid_max = get_option('system-uid-max')
640if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400641 system_uid_max = run_command(
642 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800643 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
644 '/etc/login.defs').stdout().strip()
645 if system_uid_max == ''
646 system_uid_max = '999'
647 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400648endif
649system_uid_max = system_uid_max.to_int()
650conf.set('SYSTEM_UID_MAX', system_uid_max)
651substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400652message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400653
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400654system_gid_max = get_option('system-gid-max')
655if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400656 system_gid_max = run_command(
657 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800658 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
659 '/etc/login.defs').stdout().strip()
660 if system_gid_max == ''
661 system_gid_max = '999'
662 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400663endif
664system_gid_max = system_gid_max.to_int()
665conf.set('SYSTEM_GID_MAX', system_gid_max)
666substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400667message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400668
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100669dynamic_uid_min = get_option('dynamic-uid-min').to_int()
670dynamic_uid_max = get_option('dynamic-uid-max').to_int()
671conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
672conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
673substs.set('dynamicuidmin', dynamic_uid_min)
674substs.set('dynamicuidmax', dynamic_uid_max)
675
676container_uid_base_min = get_option('container-uid-base-min').to_int()
677container_uid_base_max = get_option('container-uid-base-max').to_int()
678conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
679conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
680substs.set('containeruidbasemin', container_uid_base_min)
681substs.set('containeruidbasemax', container_uid_base_max)
682
Lennart Poetteringafde4572017-12-05 11:00:24 +0100683nobody_user = get_option('nobody-user')
684nobody_group = get_option('nobody-group')
685
686getent_result = run_command('getent', 'passwd', '65534')
687if getent_result.returncode() == 0
688 name = getent_result.stdout().split(':')[0]
689 if name != nobody_user
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900690 warning('\n' +
691 '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) +
692 'Your build will result in an user table setup that is incompatible with the local system.')
Lennart Poetteringafde4572017-12-05 11:00:24 +0100693 endif
694endif
695id_result = run_command('id', '-u', nobody_user)
696if id_result.returncode() == 0
697 id = id_result.stdout().to_int()
698 if id != 65534
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900699 warning('\n' +
700 '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) +
701 'Your build will result in an user table setup that is incompatible with the local system.')
Lennart Poetteringafde4572017-12-05 11:00:24 +0100702 endif
703endif
704
705getent_result = run_command('getent', 'group', '65534')
706if getent_result.returncode() == 0
707 name = getent_result.stdout().split(':')[0]
708 if name != nobody_group
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900709 warning('\n' +
710 '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) +
711 'Your build will result in an group table setup that is incompatible with the local system.')
Lennart Poetteringafde4572017-12-05 11:00:24 +0100712 endif
713endif
714id_result = run_command('id', '-g', nobody_group)
715if id_result.returncode() == 0
716 id = id_result.stdout().to_int()
717 if id != 65534
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900718 warning('\n' +
719 '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) +
720 'Your build will result in an group table setup that is incompatible with the local system.')
Lennart Poetteringafde4572017-12-05 11:00:24 +0100721 endif
722endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900723if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900724 warning('\n' +
725 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
726 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900727endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100728
729conf.set_quoted('NOBODY_USER_NAME', nobody_user)
730conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900731substs.set('NOBODY_USER_NAME', nobody_user)
732substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100733
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400734tty_gid = get_option('tty-gid')
735conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400736substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400737
Ikey Doherty84786b82017-12-03 12:28:23 +0000738# Ensure provided GID argument is numeric, otherwise fallback to default assignment
739if get_option('users-gid') != ''
Yu Watanabed6806872017-12-05 14:01:39 +0900740 users_gid = get_option('users-gid').to_int()
Ikey Doherty84786b82017-12-03 12:28:23 +0000741else
Yu Watanabed6806872017-12-05 14:01:39 +0900742 users_gid = '-'
Ikey Doherty84786b82017-12-03 12:28:23 +0000743endif
744substs.set('USERS_GID', users_gid)
745
Yu Watanabe348b4432018-05-07 18:17:35 +0900746conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
747conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400748
749substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700750substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400751
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400752kill_user_processes = get_option('default-kill-user-processes')
753conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100754conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400755substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400756
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400757dns_servers = get_option('dns-servers')
758conf.set_quoted('DNS_SERVERS', dns_servers)
759substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400760
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400761ntp_servers = get_option('ntp-servers')
762conf.set_quoted('NTP_SERVERS', ntp_servers)
763substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400764
765conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
766
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400767substs.set('SUSHELL', get_option('debug-shell'))
768substs.set('DEBUGTTY', get_option('debug-tty'))
769
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200770enable_debug_hashmap = false
771enable_debug_mmap_cache = false
Yu Watanabead7aa762018-05-02 13:56:28 +0900772foreach name : get_option('debug')
773 if name == 'hashmap'
774 enable_debug_hashmap = true
775 elif name == 'mmap-cache'
776 enable_debug_mmap_cache = true
777 else
778 message('unknown debug option "@0@", ignoring'.format(name))
779 endif
780endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200781conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
782conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400783
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200784conf.set10('VALGRIND', get_option('valgrind'))
785
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400786#####################################################################
787
788threads = dependency('threads')
789librt = cc.find_library('rt')
790libm = cc.find_library('m')
791libdl = cc.find_library('dl')
792libcrypt = cc.find_library('crypt')
793
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400794libcap = dependency('libcap', required : false)
795if not libcap.found()
796 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
797 libcap = cc.find_library('cap')
798endif
799
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400800libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100801 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400802
803want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500804if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400805 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400806 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400807 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200808 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400809else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200810 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400811 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400812endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200813conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400814
815want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500816if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400817 libselinux = dependency('libselinux',
818 version : '>= 2.1.9',
819 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200820 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400821else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200822 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400823 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400824endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200825conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400826
827want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500828if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400829 libapparmor = dependency('libapparmor',
830 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200831 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400832else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200833 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400834 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400835endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200836conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400837
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400838smack_run_label = get_option('smack-run-label')
839if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400840 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400841endif
842
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400843want_polkit = get_option('polkit')
844install_polkit = false
845install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500846if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400847 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400848
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400849 libpolkit = dependency('polkit-gobject-1',
850 required : false)
851 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
852 message('Old polkit detected, will install pkla files')
853 install_polkit_pkla = true
854 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400855endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200856conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400857
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400858want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500859if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400860 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200861 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400862else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200863 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400864 libacl = []
865endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200866conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400867
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400868want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500869if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400870 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200871 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400872else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200873 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400874 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400875endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200876conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400877
878want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500879if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400880 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200881 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400882else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200883 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400884 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400885endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200886conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400887
888want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500889if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400890 libkmod = dependency('libkmod',
891 version : '>= 15',
892 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200893 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400894else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200895 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400896 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400897endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200898conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400899
900want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500901if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400902 libpam = cc.find_library('pam', required : want_pam == 'true')
903 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200904 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400905else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200906 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400907 libpam = []
908 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400909endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200910conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400911
912want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500913if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400914 libmicrohttpd = dependency('libmicrohttpd',
915 version : '>= 0.9.33',
916 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200917 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400918else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200919 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400920 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400921endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200922conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400923
924want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500925if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400926 libcryptsetup = dependency('libcryptsetup',
927 version : '>= 1.6.0',
928 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200929 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400930else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200931 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400932 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400933endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200934conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400935
936want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500937if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400938 libcurl = dependency('libcurl',
939 version : '>= 7.32.0',
940 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200941 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400942else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200943 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400944 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400945endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200946conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400947
948want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400949want_libidn2 = get_option('libidn2')
950if want_libidn == 'true' and want_libidn2 == 'true'
951 error('libidn and libidn2 cannot be requested simultaneously')
952endif
953
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500954if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400955 libidn = dependency('libidn',
956 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200957 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400958else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200959 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400960 libidn = []
961endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200962conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500963if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400964 # libidn is used for both libidn and libidn2 objects
965 libidn = dependency('libidn2',
966 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200967 have = libidn.found()
968else
969 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400970endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200971conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400972
973want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500974if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400975 libiptc = dependency('libiptc',
976 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200977 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400978else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200979 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400980 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400981endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200982conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400983
984want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500985if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400986 libqrencode = dependency('libqrencode',
987 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200988 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400989else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200990 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400991 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400992endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200993conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400994
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400995want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500996if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400997 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
998 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200999 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001000else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001001 have = false
1002endif
1003if not have
1004 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001005 libgcrypt = []
1006 libgpg_error = []
1007endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001008conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001009
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001010want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001011if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001012 libgnutls = dependency('gnutls',
1013 version : '>= 3.1.4',
1014 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001015 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001016else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001017 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001018 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001019endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001020conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001021
1022want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001023if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001024 libdw = dependency('libdw',
1025 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001026 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001027else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001028 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001029 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001030endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001031conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001032
1033want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001034if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001035 libz = dependency('zlib',
1036 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001037 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001038else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001039 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001040 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001041endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001042conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001043
1044want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001045if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001046 libbzip2 = cc.find_library('bz2',
1047 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001048 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001049else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001050 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001051 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001052endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001053conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001054
1055want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001056if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001057 libxz = dependency('liblzma',
1058 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001059 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001060else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001061 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001062 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001063endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001064conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001065
1066want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001067if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001068 liblz4 = dependency('liblz4',
1069 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001070 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001071else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001072 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001073 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001074endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001075conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001076
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001077want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001078if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001079 libxkbcommon = dependency('xkbcommon',
1080 version : '>= 0.3.0',
1081 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001082 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001083else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001084 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001085 libxkbcommon = []
1086endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001087conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001088
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001089want_pcre2 = get_option('pcre2')
1090if want_pcre2 != 'false'
1091 libpcre2 = dependency('libpcre2-8',
1092 required : want_pcre2 == 'true')
1093 have = libpcre2.found()
1094else
1095 have = false
1096 libpcre2 = []
1097endif
1098conf.set10('HAVE_PCRE2', have)
1099
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001100want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001101if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001102 libglib = dependency('glib-2.0',
1103 version : '>= 2.22.0',
1104 required : want_glib == 'true')
1105 libgobject = dependency('gobject-2.0',
1106 version : '>= 2.22.0',
1107 required : want_glib == 'true')
1108 libgio = dependency('gio-2.0',
1109 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001110 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001111else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001112 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001113 libglib = []
1114 libgobject = []
1115 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001116endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001117conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001118
1119want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001120if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001121 libdbus = dependency('dbus-1',
1122 version : '>= 1.3.2',
1123 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001124 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001125else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001126 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001127 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001128endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001129conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001130
Yu Watanabe42303dc2017-06-18 05:22:32 +09001131default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001132if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001133 default_dnssec = 'no'
1134endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001135if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001136 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1137 default_dnssec = 'no'
1138endif
1139conf.set('DEFAULT_DNSSEC_MODE',
1140 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1141substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1142
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001143dns_over_tls = get_option('dns-over-tls')
1144if dns_over_tls != 'false'
Yu Watanabe48f5da12018-06-28 16:09:04 +09001145 have = (conf.get('HAVE_GNUTLS') == 1 and
1146 libgnutls.version().version_compare('>=3.5.3'))
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001147 if dns_over_tls == 'true' and not have
1148 error('DNS-over-TLS support was requested, but dependencies are not available')
1149 endif
1150else
1151 have = false
1152endif
1153conf.set10('ENABLE_DNS_OVER_TLS', have)
1154
Iwan Timmerc9299be2018-06-13 20:26:24 +02001155default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001156if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001157 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001158endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001159if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1160 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 +02001161 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001162endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001163conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1164 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1165substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001166
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001167want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001168if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001169 have = (conf.get('HAVE_LIBCURL') == 1 and
1170 conf.get('HAVE_ZLIB') == 1 and
1171 conf.get('HAVE_BZIP2') == 1 and
1172 conf.get('HAVE_XZ') == 1 and
1173 conf.get('HAVE_GCRYPT') == 1)
1174 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001175 error('importd support was requested, but dependencies are not available')
1176 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001177else
1178 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001179endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001180conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001181
1182want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001183if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001184 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1185 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001186 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1187 # it's possible to build one without the other. Complain only if
1188 # support was explictly requested. The auxiliary files like sysusers
1189 # config should be installed when any of the programs are built.
1190 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1191 error('remote support was requested, but dependencies are not available')
1192 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001193 have = have_deps[0] or have_deps[1]
1194else
1195 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001196endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001197conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001198
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001199foreach term : ['utmp',
1200 'hibernate',
1201 'environment-d',
1202 'binfmt',
1203 'coredump',
1204 'resolve',
1205 'logind',
1206 'hostnamed',
1207 'localed',
1208 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001209 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001210 'networkd',
1211 'timedated',
1212 'timesyncd',
1213 'myhostname',
1214 'firstboot',
1215 'randomseed',
1216 'backlight',
1217 'vconsole',
1218 'quotacheck',
1219 'sysusers',
1220 'tmpfiles',
1221 'hwdb',
1222 'rfkill',
1223 'ldconfig',
1224 'efi',
1225 'tpm',
1226 'ima',
1227 'smack',
1228 'gshadow',
1229 'idn',
1230 'nss-systemd']
1231 have = get_option(term)
1232 name = 'ENABLE_' + term.underscorify().to_upper()
1233 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001234endforeach
1235
Yu Watanabe348b4432018-05-07 18:17:35 +09001236conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001237
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001238want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001239install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001240slow_tests = get_option('slow-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001241tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001242fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001243
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001244conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001245
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001246#####################################################################
1247
1248if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001249 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001250
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001251 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001252 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001253 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001254 elif efi_arch == 'x86_64'
1255 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001256 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001257 elif efi_arch == 'arm'
1258 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001259 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001260 elif efi_arch == 'aarch64'
1261 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001262 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001263 else
1264 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001265 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001266 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001267
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001268 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001269 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001270
1271 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001272else
1273 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001274endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001275conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001276
1277#####################################################################
1278
1279config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001280 output : 'config.h',
1281 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001282
Yu Watanabe348b4432018-05-07 18:17:35 +09001283meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1284
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001285includes = include_directories('src/basic',
1286 'src/shared',
1287 'src/systemd',
1288 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001289 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001290 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001291 'src/resolve',
1292 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001293 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001294 'src/login',
1295 'src/udev',
1296 'src/libudev',
1297 'src/core',
1298 'src/libsystemd/sd-bus',
1299 'src/libsystemd/sd-device',
1300 'src/libsystemd/sd-hwdb',
1301 'src/libsystemd/sd-id128',
1302 'src/libsystemd/sd-netlink',
1303 'src/libsystemd/sd-network',
1304 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001305 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001306
1307add_project_arguments('-include', 'config.h', language : 'c')
1308
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001309subdir('po')
1310subdir('catalog')
1311subdir('src/systemd')
1312subdir('src/basic')
1313subdir('src/libsystemd')
1314subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001315subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001316subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001317
1318libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001319 'journal-core',
1320 libjournal_core_sources,
1321 journald_gperf_c,
1322 include_directories : includes,
1323 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001324
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001325libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001326libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001327 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001328 'src/systemd/sd-id128.h', # pick a header file at random to work around old meson bug
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001329 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001330 include_directories : includes,
1331 link_args : ['-shared',
1332 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001333 link_with : [libbasic,
1334 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001335 link_whole : [libsystemd_static,
1336 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001337 dependencies : [threads,
1338 librt,
1339 libxz,
1340 liblz4],
1341 link_depends : libsystemd_sym,
1342 install : true,
1343 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001344
Davide Cavalca70848ec2018-04-09 02:43:35 -07001345static_libsystemd = get_option('static-libsystemd')
1346static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1347
1348install_libsystemd_static = static_library(
1349 'systemd',
1350 libsystemd_sources,
1351 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001352 basic_sources,
1353 basic_gcrypt_sources,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001354 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001355 build_by_default : static_libsystemd != 'false',
1356 install : static_libsystemd != 'false',
1357 install_dir : rootlibdir,
1358 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1359 dependencies : [threads,
1360 librt,
1361 libxz,
1362 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001363 libcap,
1364 libblkid,
1365 libmount,
1366 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001367 libgcrypt],
1368 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1369
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001370############################################################
1371
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001372# binaries that have --help and are intended for use by humans,
1373# usually, but not always, installed in /bin.
1374public_programs = []
1375
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001376subdir('src/libudev')
1377subdir('src/shared')
1378subdir('src/core')
1379subdir('src/udev')
1380subdir('src/network')
1381
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001382subdir('src/analyze')
1383subdir('src/journal-remote')
1384subdir('src/coredump')
1385subdir('src/hostname')
1386subdir('src/import')
1387subdir('src/kernel-install')
1388subdir('src/locale')
1389subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001390subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001391subdir('src/nspawn')
1392subdir('src/resolve')
1393subdir('src/timedate')
1394subdir('src/timesync')
1395subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001396subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001397
1398subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001399subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001400subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001401subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001402
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001403############################################################
1404
1405# only static linking apart from libdl, to make sure that the
1406# module is linked to all libraries that it uses.
1407test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001408 'test-dlopen',
1409 test_dlopen_c,
1410 include_directories : includes,
1411 link_with : [libbasic],
1412 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001413
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001414foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001415 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001416 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001417 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001418
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001419 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001420 if condition
1421 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001422
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001423 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1424 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001425
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001426 nss = shared_library(
1427 'nss_' + module,
1428 'src/nss-@0@/nss-@0@.c'.format(module),
1429 version : '2',
1430 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001431 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1432 link_args : ['-Wl,-z,nodelete',
1433 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001434 '-Wl,--version-script=' + version_script_arg,
1435 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001436 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001437 libbasic],
1438 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001439 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001440 link_depends : sym,
1441 install : true,
1442 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001443
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001444 # We cannot use shared_module because it does not support version suffix.
1445 # Unfortunately shared_library insists on creating the symlink…
1446 meson.add_install_script('sh', '-c',
1447 'rm $DESTDIR@0@/libnss_@1@.so'
1448 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001449
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001450 test('dlopen-nss_' + module,
1451 test_dlopen,
1452 args : [nss.full_path()]) # path to dlopen must include a slash
1453 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001454endforeach
1455
1456############################################################
1457
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001458executable('systemd',
1459 systemd_sources,
1460 include_directories : includes,
1461 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001462 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001463 dependencies : [threads,
1464 librt,
1465 libseccomp,
1466 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001467 libmount,
1468 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001469 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001470 install : true,
1471 install_dir : rootlibexecdir)
1472
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001473meson.add_install_script(meson_make_symlink,
1474 join_paths(rootlibexecdir, 'systemd'),
1475 join_paths(rootsbindir, 'init'))
1476
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001477exe = executable('systemd-analyze',
1478 systemd_analyze_sources,
1479 include_directories : includes,
1480 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001481 libshared],
1482 dependencies : [threads,
1483 librt,
1484 libseccomp,
1485 libselinux,
1486 libmount,
1487 libblkid],
1488 install_rpath : rootlibexecdir,
1489 install : true)
1490public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001491
1492executable('systemd-journald',
1493 systemd_journald_sources,
1494 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001495 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001496 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001497 dependencies : [threads,
1498 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001499 liblz4,
1500 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001501 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001502 install : true,
1503 install_dir : rootlibexecdir)
1504
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001505exe = executable('systemd-cat',
1506 systemd_cat_sources,
1507 include_directories : includes,
1508 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001509 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001510 dependencies : [threads],
1511 install_rpath : rootlibexecdir,
1512 install : true)
1513public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001514
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001515exe = executable('journalctl',
1516 journalctl_sources,
1517 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001518 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001519 dependencies : [threads,
1520 libqrencode,
1521 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001522 liblz4,
1523 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001524 install_rpath : rootlibexecdir,
1525 install : true,
1526 install_dir : rootbindir)
1527public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001528
1529executable('systemd-getty-generator',
1530 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001531 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001532 link_with : [libshared],
1533 install_rpath : rootlibexecdir,
1534 install : true,
1535 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001536
1537executable('systemd-debug-generator',
1538 'src/debug-generator/debug-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-fstab-generator',
1546 'src/fstab-generator/fstab-generator.c',
1547 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001548 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001549 link_with : [libshared],
1550 install_rpath : rootlibexecdir,
1551 install : true,
1552 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001553
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001554if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001555 executable('30-systemd-environment-d-generator',
1556 'src/environment-d-generator/environment-d-generator.c',
1557 include_directories : includes,
1558 link_with : [libshared],
1559 install_rpath : rootlibexecdir,
1560 install : true,
1561 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001562
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001563 meson.add_install_script(meson_make_symlink,
1564 join_paths(sysconfdir, 'environment'),
1565 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001566endif
1567
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001568if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001569 executable('systemd-hibernate-resume-generator',
1570 'src/hibernate-resume/hibernate-resume-generator.c',
1571 include_directories : includes,
1572 link_with : [libshared],
1573 install_rpath : rootlibexecdir,
1574 install : true,
1575 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001576
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001577 executable('systemd-hibernate-resume',
1578 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001579 include_directories : includes,
1580 link_with : [libshared],
1581 install_rpath : rootlibexecdir,
1582 install : true,
1583 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001584endif
1585
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001586if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001587 executable('systemd-gpt-auto-generator',
1588 'src/gpt-auto-generator/gpt-auto-generator.c',
1589 'src/basic/blkid-util.h',
1590 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001591 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001592 dependencies : libblkid,
1593 install_rpath : rootlibexecdir,
1594 install : true,
1595 install_dir : systemgeneratordir)
1596
1597 exe = executable('systemd-dissect',
1598 'src/dissect/dissect.c',
1599 include_directories : includes,
1600 link_with : [libshared],
1601 install_rpath : rootlibexecdir,
1602 install : true,
1603 install_dir : rootlibexecdir)
1604 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001605endif
1606
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001607if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001608 executable('systemd-resolved',
1609 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001610 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001611 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001612 libbasic_gcrypt,
1613 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001614 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001615 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001616 install : true,
1617 install_dir : rootlibexecdir)
1618
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001619 exe = executable('resolvectl',
1620 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001621 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001622 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001623 libbasic_gcrypt,
1624 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001625 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001626 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001627 libm,
1628 libidn],
1629 install_rpath : rootlibexecdir,
1630 install : true)
1631 public_programs += [exe]
Lennart Poettering088c1362018-02-27 17:48:54 +01001632
1633 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001634 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001635 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001636
1637 meson.add_install_script(meson_make_symlink,
1638 join_paths(bindir, 'resolvectl'),
1639 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001640endif
1641
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001642if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001643 executable('systemd-logind',
1644 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001645 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001646 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001647 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001648 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001649 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001650 install_rpath : rootlibexecdir,
1651 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001652 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001653
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001654 exe = executable('loginctl',
1655 loginctl_sources,
1656 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001657 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001658 dependencies : [threads,
1659 liblz4,
1660 libxz],
1661 install_rpath : rootlibexecdir,
1662 install : true,
1663 install_dir : rootbindir)
1664 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001665
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001666 exe = executable('systemd-inhibit',
1667 'src/login/inhibit.c',
1668 include_directories : includes,
1669 link_with : [libshared],
1670 install_rpath : rootlibexecdir,
1671 install : true,
1672 install_dir : rootbindir)
1673 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001674
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001675 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001676 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1677 pam_systemd = shared_library(
1678 'pam_systemd',
1679 pam_systemd_c,
1680 name_prefix : '',
1681 include_directories : includes,
1682 link_args : ['-shared',
1683 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001684 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001685 libshared_static],
1686 dependencies : [threads,
1687 libpam,
1688 libpam_misc],
1689 link_depends : pam_systemd_sym,
1690 install : true,
1691 install_dir : pamlibdir)
1692
1693 test('dlopen-pam_systemd',
1694 test_dlopen,
1695 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1696 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001697endif
1698
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001699executable('systemd-user-runtime-dir',
1700 user_runtime_dir_sources,
1701 include_directories : includes,
1702 link_with : [libshared, liblogind_core],
1703 install_rpath : rootlibexecdir,
1704 install : true,
1705 install_dir : rootlibexecdir)
1706
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001707if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001708 executable('systemd-user-sessions',
1709 'src/user-sessions/user-sessions.c',
1710 include_directories : includes,
1711 link_with : [libshared],
1712 install_rpath : rootlibexecdir,
1713 install : true,
1714 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001715endif
1716
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001717if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001718 exe = executable('bootctl',
1719 'src/boot/bootctl.c',
1720 include_directories : includes,
1721 link_with : [libshared],
1722 dependencies : [libblkid],
1723 install_rpath : rootlibexecdir,
1724 install : true)
1725 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001726endif
1727
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001728exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1729 include_directories : includes,
1730 link_with : [libshared],
1731 dependencies : [threads],
1732 install_rpath : rootlibexecdir,
1733 install : true)
1734public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001735
Felipe Satelerf3794362018-05-22 15:08:57 -04001736
1737if get_option('link-systemctl-shared')
1738 systemctl_link_with = [libshared]
1739else
1740 systemctl_link_with = [libsystemd_static,
1741 libshared_static,
1742 libjournal_client,
1743 libbasic_gcrypt]
1744endif
1745
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001746exe = executable('systemctl', 'src/systemctl/systemctl.c',
1747 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001748 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001749 dependencies : [threads,
1750 libcap,
1751 libselinux,
1752 libxz,
1753 liblz4],
1754 install_rpath : rootlibexecdir,
1755 install : true,
1756 install_dir : rootbindir)
1757public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001758
Lennart Poettering61d05782018-04-16 21:41:40 +02001759if conf.get('ENABLE_PORTABLED') == 1
1760 executable('systemd-portabled',
1761 systemd_portabled_sources,
1762 include_directories : includes,
1763 link_with : [libshared],
1764 dependencies : [threads],
1765 install_rpath : rootlibexecdir,
1766 install : true,
1767 install_dir : rootlibexecdir)
1768
1769 exe = executable('portablectl', 'src/portable/portablectl.c',
1770 include_directories : includes,
1771 link_with : [libshared],
1772 dependencies : [threads],
1773 install_rpath : rootlibexecdir,
1774 install : true,
1775 install_dir : rootlibexecdir)
1776 public_programs += [exe]
1777endif
1778
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001779foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1780 meson.add_install_script(meson_make_symlink,
1781 join_paths(rootbindir, 'systemctl'),
1782 join_paths(rootsbindir, alias))
1783endforeach
1784
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001785if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001786 executable('systemd-backlight',
1787 'src/backlight/backlight.c',
1788 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001789 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001790 install_rpath : rootlibexecdir,
1791 install : true,
1792 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001793endif
1794
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001795if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001796 executable('systemd-rfkill',
1797 'src/rfkill/rfkill.c',
1798 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001799 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001800 install_rpath : rootlibexecdir,
1801 install : true,
1802 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001803endif
1804
1805executable('systemd-system-update-generator',
1806 'src/system-update-generator/system-update-generator.c',
1807 include_directories : includes,
1808 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001809 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001810 install : true,
1811 install_dir : systemgeneratordir)
1812
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001813if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001814 executable('systemd-cryptsetup',
1815 'src/cryptsetup/cryptsetup.c',
1816 include_directories : includes,
1817 link_with : [libshared],
1818 dependencies : [libcryptsetup],
1819 install_rpath : rootlibexecdir,
1820 install : true,
1821 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001822
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001823 executable('systemd-cryptsetup-generator',
1824 'src/cryptsetup/cryptsetup-generator.c',
1825 include_directories : includes,
1826 link_with : [libshared],
1827 dependencies : [libcryptsetup],
1828 install_rpath : rootlibexecdir,
1829 install : true,
1830 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001831
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001832 executable('systemd-veritysetup',
1833 'src/veritysetup/veritysetup.c',
1834 include_directories : includes,
1835 link_with : [libshared],
1836 dependencies : [libcryptsetup],
1837 install_rpath : rootlibexecdir,
1838 install : true,
1839 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001840
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001841 executable('systemd-veritysetup-generator',
1842 'src/veritysetup/veritysetup-generator.c',
1843 include_directories : includes,
1844 link_with : [libshared],
1845 dependencies : [libcryptsetup],
1846 install_rpath : rootlibexecdir,
1847 install : true,
1848 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001849endif
1850
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001851if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001852 executable('systemd-sysv-generator',
1853 'src/sysv-generator/sysv-generator.c',
1854 include_directories : includes,
1855 link_with : [libshared],
1856 install_rpath : rootlibexecdir,
1857 install : true,
1858 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001859
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001860 executable('systemd-rc-local-generator',
1861 'src/rc-local-generator/rc-local-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 -04001867endif
1868
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001869if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001870 executable('systemd-hostnamed',
1871 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001872 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001873 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001874 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001875 install : true,
1876 install_dir : rootlibexecdir)
1877
1878 exe = executable('hostnamectl',
1879 'src/hostname/hostnamectl.c',
1880 include_directories : includes,
1881 link_with : [libshared],
1882 install_rpath : rootlibexecdir,
1883 install : true)
1884 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001885endif
1886
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001887if conf.get('ENABLE_LOCALED') == 1
1888 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001889 # logind will load libxkbcommon.so dynamically on its own
1890 deps = [libdl]
1891 else
1892 deps = []
1893 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001894
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001895 executable('systemd-localed',
1896 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001897 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001898 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001899 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001900 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001901 install : true,
1902 install_dir : rootlibexecdir)
1903
1904 exe = executable('localectl',
1905 localectl_sources,
1906 include_directories : includes,
1907 link_with : [libshared],
1908 install_rpath : rootlibexecdir,
1909 install : true)
1910 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001911endif
1912
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001913if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001914 executable('systemd-timedated',
1915 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001916 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001917 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001918 install_rpath : rootlibexecdir,
1919 install : true,
1920 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09001921endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001922
Yu Watanabe6129ec82018-05-03 18:07:43 +09001923if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001924 exe = executable('timedatectl',
1925 'src/timedate/timedatectl.c',
1926 include_directories : includes,
1927 install_rpath : rootlibexecdir,
1928 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09001929 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001930 install : true)
1931 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001932endif
1933
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001934if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001935 executable('systemd-timesyncd',
1936 systemd_timesyncd_sources,
1937 include_directories : includes,
1938 link_with : [libshared],
1939 dependencies : [threads,
1940 libm],
1941 install_rpath : rootlibexecdir,
1942 install : true,
1943 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001944
1945 executable('systemd-time-wait-sync',
1946 'src/time-wait-sync/time-wait-sync.c',
1947 include_directories : includes,
1948 link_with : [libshared],
1949 install_rpath : rootlibexecdir,
1950 install : true,
1951 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001952endif
1953
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001954if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001955 executable('systemd-machined',
1956 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001957 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001958 link_with : [libmachine_core,
1959 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001960 install_rpath : rootlibexecdir,
1961 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001962 install_dir : rootlibexecdir)
1963
1964 exe = executable('machinectl',
1965 'src/machine/machinectl.c',
1966 include_directories : includes,
1967 link_with : [libshared],
1968 dependencies : [threads,
1969 libxz,
1970 liblz4],
1971 install_rpath : rootlibexecdir,
1972 install : true,
1973 install_dir : rootbindir)
1974 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001975endif
1976
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001977if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001978 executable('systemd-importd',
1979 systemd_importd_sources,
1980 include_directories : includes,
1981 link_with : [libshared],
1982 dependencies : [threads],
1983 install_rpath : rootlibexecdir,
1984 install : true,
1985 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001986
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001987 systemd_pull = executable('systemd-pull',
1988 systemd_pull_sources,
1989 include_directories : includes,
1990 link_with : [libshared],
1991 dependencies : [libcurl,
1992 libz,
1993 libbzip2,
1994 libxz,
1995 libgcrypt],
1996 install_rpath : rootlibexecdir,
1997 install : true,
1998 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001999
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002000 systemd_import = executable('systemd-import',
2001 systemd_import_sources,
2002 include_directories : includes,
2003 link_with : [libshared],
2004 dependencies : [libcurl,
2005 libz,
2006 libbzip2,
2007 libxz],
2008 install_rpath : rootlibexecdir,
2009 install : true,
2010 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002011
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002012 systemd_export = executable('systemd-export',
2013 systemd_export_sources,
2014 include_directories : includes,
2015 link_with : [libshared],
2016 dependencies : [libcurl,
2017 libz,
2018 libbzip2,
2019 libxz],
2020 install_rpath : rootlibexecdir,
2021 install : true,
2022 install_dir : rootlibexecdir)
2023 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002024endif
2025
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002026if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002027 exe = executable('systemd-journal-upload',
2028 systemd_journal_upload_sources,
2029 include_directories : includes,
2030 link_with : [libshared],
2031 dependencies : [threads,
2032 libcurl,
2033 libgnutls,
2034 libxz,
2035 liblz4],
2036 install_rpath : rootlibexecdir,
2037 install : true,
2038 install_dir : rootlibexecdir)
2039 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002040endif
2041
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002042if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002043 s_j_remote = executable('systemd-journal-remote',
2044 systemd_journal_remote_sources,
2045 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002046 link_with : [libshared,
2047 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002048 dependencies : [threads,
2049 libmicrohttpd,
2050 libgnutls,
2051 libxz,
2052 liblz4],
2053 install_rpath : rootlibexecdir,
2054 install : true,
2055 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002056
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002057 s_j_gatewayd = executable('systemd-journal-gatewayd',
2058 systemd_journal_gatewayd_sources,
2059 include_directories : includes,
2060 link_with : [libshared],
2061 dependencies : [threads,
2062 libmicrohttpd,
2063 libgnutls,
2064 libxz,
2065 liblz4],
2066 install_rpath : rootlibexecdir,
2067 install : true,
2068 install_dir : rootlibexecdir)
2069 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002070endif
2071
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002072if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002073 executable('systemd-coredump',
2074 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002075 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002076 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002077 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002078 libacl,
2079 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002080 libxz,
2081 liblz4],
2082 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002083 install : true,
2084 install_dir : rootlibexecdir)
2085
2086 exe = executable('coredumpctl',
2087 coredumpctl_sources,
2088 include_directories : includes,
2089 link_with : [libshared],
2090 dependencies : [threads,
2091 libxz,
2092 liblz4],
2093 install_rpath : rootlibexecdir,
2094 install : true)
2095 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002096endif
2097
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002098if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002099 exe = executable('systemd-binfmt',
2100 'src/binfmt/binfmt.c',
2101 include_directories : includes,
2102 link_with : [libshared],
2103 install_rpath : rootlibexecdir,
2104 install : true,
2105 install_dir : rootlibexecdir)
2106 public_programs += [exe]
2107
2108 meson.add_install_script('sh', '-c',
2109 mkdir_p.format(binfmtdir))
2110 meson.add_install_script('sh', '-c',
2111 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2112endif
2113
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002114if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002115 executable('systemd-vconsole-setup',
2116 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002117 include_directories : includes,
2118 link_with : [libshared],
2119 install_rpath : rootlibexecdir,
2120 install : true,
2121 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002122endif
2123
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002124if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002125 executable('systemd-random-seed',
2126 'src/random-seed/random-seed.c',
2127 include_directories : includes,
2128 link_with : [libshared],
2129 install_rpath : rootlibexecdir,
2130 install : true,
2131 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002132endif
2133
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002134if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002135 executable('systemd-firstboot',
2136 'src/firstboot/firstboot.c',
2137 include_directories : includes,
2138 link_with : [libshared],
2139 dependencies : [libcrypt],
2140 install_rpath : rootlibexecdir,
2141 install : true,
2142 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002143endif
2144
2145executable('systemd-remount-fs',
2146 'src/remount-fs/remount-fs.c',
2147 'src/core/mount-setup.c',
2148 'src/core/mount-setup.h',
2149 include_directories : includes,
2150 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002151 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002152 install : true,
2153 install_dir : rootlibexecdir)
2154
2155executable('systemd-machine-id-setup',
2156 'src/machine-id-setup/machine-id-setup-main.c',
2157 'src/core/machine-id-setup.c',
2158 'src/core/machine-id-setup.h',
2159 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002160 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002161 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002162 install : true,
2163 install_dir : rootbindir)
2164
2165executable('systemd-fsck',
2166 'src/fsck/fsck.c',
2167 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002168 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002169 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002170 install : true,
2171 install_dir : rootlibexecdir)
2172
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002173executable('systemd-growfs',
2174 'src/partition/growfs.c',
2175 include_directories : includes,
2176 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002177 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002178 install_rpath : rootlibexecdir,
2179 install : true,
2180 install_dir : rootlibexecdir)
2181
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002182executable('systemd-makefs',
2183 'src/partition/makefs.c',
2184 include_directories : includes,
2185 link_with : [libshared],
2186 install_rpath : rootlibexecdir,
2187 install : true,
2188 install_dir : rootlibexecdir)
2189
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002190executable('systemd-sleep',
2191 'src/sleep/sleep.c',
2192 include_directories : includes,
2193 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002194 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002195 install : true,
2196 install_dir : rootlibexecdir)
2197
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002198exe = executable('systemd-sysctl',
2199 'src/sysctl/sysctl.c',
2200 include_directories : includes,
2201 link_with : [libshared],
2202 install_rpath : rootlibexecdir,
2203 install : true,
2204 install_dir : rootlibexecdir)
2205public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002206
2207executable('systemd-ac-power',
2208 'src/ac-power/ac-power.c',
2209 include_directories : includes,
2210 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002211 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002212 install : true,
2213 install_dir : rootlibexecdir)
2214
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002215exe = executable('systemd-detect-virt',
2216 'src/detect-virt/detect-virt.c',
2217 include_directories : includes,
2218 link_with : [libshared],
2219 install_rpath : rootlibexecdir,
2220 install : true)
2221public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002222
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002223exe = executable('systemd-delta',
2224 'src/delta/delta.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-escape',
2232 'src/escape/escape.c',
2233 include_directories : includes,
2234 link_with : [libshared],
2235 install_rpath : rootlibexecdir,
2236 install : true,
2237 install_dir : rootbindir)
2238public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002239
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002240exe = executable('systemd-notify',
2241 'src/notify/notify.c',
2242 include_directories : includes,
2243 link_with : [libshared],
2244 install_rpath : rootlibexecdir,
2245 install : true,
2246 install_dir : rootbindir)
2247public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002248
2249executable('systemd-volatile-root',
2250 'src/volatile-root/volatile-root.c',
2251 include_directories : includes,
2252 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002253 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002254 install : true,
2255 install_dir : rootlibexecdir)
2256
2257executable('systemd-cgroups-agent',
2258 'src/cgroups-agent/cgroups-agent.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
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002265exe = executable('systemd-path',
2266 'src/path/path.c',
2267 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002268 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002269 install_rpath : rootlibexecdir,
2270 install : true)
2271public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002272
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002273exe = executable('systemd-ask-password',
2274 'src/ask-password/ask-password.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,
2279 install_dir : rootbindir)
2280public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002281
2282executable('systemd-reply-password',
2283 'src/reply-password/reply-password.c',
2284 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002285 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002286 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002287 install : true,
2288 install_dir : rootlibexecdir)
2289
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002290exe = executable('systemd-tty-ask-password-agent',
2291 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2292 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002293 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002294 install_rpath : rootlibexecdir,
2295 install : true,
2296 install_dir : rootbindir)
2297public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002298
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002299exe = executable('systemd-cgls',
2300 'src/cgls/cgls.c',
2301 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002302 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002303 install_rpath : rootlibexecdir,
2304 install : true)
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-cgtop',
2308 'src/cgtop/cgtop.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
2315executable('systemd-initctl',
2316 'src/initctl/initctl.c',
2317 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002318 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002319 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002320 install : true,
2321 install_dir : rootlibexecdir)
2322
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002323exe = executable('systemd-mount',
2324 'src/mount/mount-tool.c',
2325 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002326 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002327 install_rpath : rootlibexecdir,
2328 install : true)
2329public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002330
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002331meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002332 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002333
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002334exe = executable('systemd-run',
2335 'src/run/run.c',
2336 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002337 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002338 install_rpath : rootlibexecdir,
2339 install : true)
2340public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002341
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002342exe = executable('systemd-stdio-bridge',
2343 'src/stdio-bridge/stdio-bridge.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('busctl',
2351 'src/busctl/busctl.c',
2352 'src/busctl/busctl-introspect.c',
2353 'src/busctl/busctl-introspect.h',
2354 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002355 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002356 install_rpath : rootlibexecdir,
2357 install : true)
2358public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002359
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002360if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002361 exe = executable('systemd-sysusers',
2362 'src/sysusers/sysusers.c',
2363 include_directories : includes,
2364 link_with : [libshared],
2365 install_rpath : rootlibexecdir,
2366 install : true,
2367 install_dir : rootbindir)
2368 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002369endif
2370
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002371if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002372 exe = executable('systemd-tmpfiles',
2373 'src/tmpfiles/tmpfiles.c',
2374 include_directories : includes,
2375 link_with : [libshared],
2376 dependencies : [libacl],
2377 install_rpath : rootlibexecdir,
2378 install : true,
2379 install_dir : rootbindir)
2380 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002381
2382 test('test-systemd-tmpfiles',
2383 test_systemd_tmpfiles_py,
2384 args : exe.full_path())
2385 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002386endif
2387
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002388if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002389 exe = executable('systemd-hwdb',
2390 'src/hwdb/hwdb.c',
2391 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2392 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002393 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002394 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002395 install : true,
2396 install_dir : rootbindir)
2397 public_programs += [exe]
2398endif
2399
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002400if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002401 executable('systemd-quotacheck',
2402 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002403 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002404 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002405 install_rpath : rootlibexecdir,
2406 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002407 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002408endif
2409
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002410exe = executable('systemd-socket-proxyd',
2411 'src/socket-proxy/socket-proxyd.c',
2412 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002413 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002414 dependencies : [threads],
2415 install_rpath : rootlibexecdir,
2416 install : true,
2417 install_dir : rootlibexecdir)
2418public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002419
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002420exe = executable('systemd-udevd',
2421 systemd_udevd_sources,
2422 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002423 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002424 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002425 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002426 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002427 dependencies : [threads,
2428 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002429 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002430 libacl,
2431 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002432 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002433 install : true,
2434 install_dir : rootlibexecdir)
2435public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002436
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002437exe = executable('udevadm',
2438 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002439 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002440 include_directories : includes,
2441 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002442 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002443 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002444 dependencies : [threads,
2445 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002446 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002447 libacl,
2448 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002449 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002450 install : true,
2451 install_dir : rootbindir)
2452public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002453
2454executable('systemd-shutdown',
2455 systemd_shutdown_sources,
2456 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002457 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002458 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002459 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002460 install : true,
2461 install_dir : rootlibexecdir)
2462
2463executable('systemd-update-done',
2464 'src/update-done/update-done.c',
2465 include_directories : includes,
2466 link_with : [libshared],
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-utmp',
2472 'src/update-utmp/update-utmp.c',
2473 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002474 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002475 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002476 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002477 install : true,
2478 install_dir : rootlibexecdir)
2479
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002480if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002481 executable('systemd-modules-load',
2482 'src/modules-load/modules-load.c',
2483 include_directories : includes,
2484 link_with : [libshared],
2485 dependencies : [libkmod],
2486 install_rpath : rootlibexecdir,
2487 install : true,
2488 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002489
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002490 meson.add_install_script('sh', '-c',
2491 mkdir_p.format(modulesloaddir))
2492 meson.add_install_script('sh', '-c',
2493 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002494endif
2495
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002496exe = executable('systemd-nspawn',
2497 systemd_nspawn_sources,
2498 'src/core/mount-setup.c', # FIXME: use a variable?
2499 'src/core/mount-setup.h',
2500 'src/core/loopback-setup.c',
2501 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002502 include_directories : includes,
2503 link_with : [libnspawn_core,
2504 libshared],
2505 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002506 install_rpath : rootlibexecdir,
2507 install : true)
2508public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002509
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002510if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002511 executable('systemd-networkd',
2512 systemd_networkd_sources,
2513 include_directories : includes,
2514 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002515 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002516 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002517 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002518 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002519 install_rpath : rootlibexecdir,
2520 install : true,
2521 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002522
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002523 executable('systemd-networkd-wait-online',
2524 systemd_networkd_wait_online_sources,
2525 include_directories : includes,
2526 link_with : [libnetworkd_core,
2527 libshared],
2528 install_rpath : rootlibexecdir,
2529 install : true,
2530 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002531
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002532 exe = executable('networkctl',
2533 networkctl_sources,
2534 include_directories : includes,
2535 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002536 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002537 install_rpath : rootlibexecdir,
2538 install : true,
2539 install_dir : rootbindir)
2540 public_programs += [exe]
2541endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002542
2543executable('systemd-sulogin-shell',
2544 ['src/sulogin-shell/sulogin-shell.c'],
2545 include_directories : includes,
2546 link_with : [libshared],
2547 install_rpath : rootlibexecdir,
2548 install : true,
2549 install_dir : rootlibexecdir)
2550
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002551############################################################
2552
2553foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002554 sources = tuple[0]
2555 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2556 dependencies = tuple[2]
2557 condition = tuple.length() >= 4 ? tuple[3] : ''
2558 type = tuple.length() >= 5 ? tuple[4] : ''
2559 defs = tuple.length() >= 6 ? tuple[5] : []
2560 incs = tuple.length() >= 7 ? tuple[6] : includes
2561 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002562
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002563 name = sources[0].split('/')[-1].split('.')[0]
2564 if type.startswith('timeout=')
2565 timeout = type.split('=')[1].to_int()
2566 type = ''
2567 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002568 if want_tests == 'false'
2569 message('Not compiling @0@ because tests is set to false'.format(name))
2570 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002571 exe = executable(
2572 name,
2573 sources,
2574 include_directories : incs,
2575 link_with : link_with,
2576 dependencies : dependencies,
2577 c_args : defs,
2578 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002579 install : install_tests,
2580 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002581
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002582 if type == 'manual'
2583 message('@0@ is a manual test'.format(name))
2584 elif type == 'unsafe' and want_tests != 'unsafe'
2585 message('@0@ is an unsafe test'.format(name))
2586 else
2587 test(name, exe,
2588 env : test_env,
2589 timeout : timeout)
2590 endif
2591 else
2592 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2593 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002594endforeach
2595
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002596exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002597 'test-libsystemd-sym',
2598 test_libsystemd_sym_c,
2599 include_directories : includes,
2600 link_with : [libsystemd],
2601 install : install_tests,
2602 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002603test('test-libsystemd-sym', exe)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002604
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002605exe = executable(
2606 'test-libsystemd-static-sym',
2607 test_libsystemd_sym_c,
2608 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002609 link_with : [install_libsystemd_static],
2610 dependencies : [threads], # threads is already included in dependencies on the library,
2611 # but does not seem to get propagated. Add here as a work-around.
Davide Cavalca20f3d322018-04-24 13:34:48 -07002612 build_by_default : static_libsystemd_pic,
2613 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002614 install_dir : testsdir)
Davide Cavalca20f3d322018-04-24 13:34:48 -07002615if static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002616 test('test-libsystemd-static-sym', exe)
2617endif
2618
2619exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002620 'test-libudev-sym',
2621 test_libudev_sym_c,
2622 include_directories : includes,
2623 c_args : ['-Wno-deprecated-declarations'],
2624 link_with : [libudev],
2625 install : install_tests,
2626 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002627test('test-libudev-sym', exe)
2628
2629exe = executable(
2630 'test-libudev-static-sym',
2631 test_libudev_sym_c,
2632 include_directories : includes,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002633 c_args : ['-Wno-deprecated-declarations'],
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002634 link_with : [install_libudev_static],
Davide Cavalca20f3d322018-04-24 13:34:48 -07002635 build_by_default : static_libudev_pic,
2636 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002637 install_dir : testsdir)
Davide Cavalca20f3d322018-04-24 13:34:48 -07002638if static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002639 test('test-libudev-static-sym', exe)
2640endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002641
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002642############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002643
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002644fuzzer_exes = []
2645
2646foreach tuple : fuzzers
2647 sources = tuple[0]
2648 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2649 dependencies = tuple[2]
2650 defs = tuple.length() >= 4 ? tuple[3] : []
2651 incs = tuple.length() >= 5 ? tuple[4] : includes
2652
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002653 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002654 dependencies += fuzzing_engine
2655 else
2656 sources += 'src/fuzz/fuzz-main.c'
2657 endif
2658
2659 name = sources[0].split('/')[-1].split('.')[0]
2660
2661 fuzzer_exes += executable(
2662 name,
2663 sources,
2664 include_directories : [incs, include_directories('src/fuzz')],
2665 link_with : link_with,
2666 dependencies : dependencies,
2667 c_args : defs,
2668 install : false)
2669endforeach
2670
2671run_target('fuzzers',
2672 depends : fuzzer_exes,
2673 command : ['true'])
2674
2675############################################################
2676
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002677make_directive_index_py = find_program('tools/make-directive-index.py')
2678make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002679xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002680hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002681
2682subdir('units')
2683subdir('sysctl.d')
2684subdir('sysusers.d')
2685subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002686subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002687subdir('hwdb')
2688subdir('network')
2689subdir('man')
2690subdir('shell-completion/bash')
2691subdir('shell-completion/zsh')
Lennart Poettering2d684e62018-03-28 16:58:37 +02002692subdir('doc/sysvinit')
2693subdir('doc/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002694
2695# FIXME: figure out if the warning is true:
2696# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2697install_subdir('factory/etc',
2698 install_dir : factorydir)
2699
2700
2701install_data('xorg/50-systemd-user.sh',
2702 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002703install_data('modprobe.d/systemd.conf',
2704 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002705install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002706 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002707 'NEWS',
2708 'README',
2709 'doc/CODING_STYLE',
2710 'doc/DISTRO_PORTING',
2711 'doc/ENVIRONMENT.md',
2712 'doc/HACKING',
2713 'doc/TRANSIENT-SETTINGS.md',
2714 'doc/TRANSLATORS',
2715 'doc/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002716 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2717 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002718
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002719meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2720meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2721
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002722############################################################
2723
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002724meson_check_help = find_program('tools/meson-check-help.sh')
2725
2726foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002727 name = exec.full_path().split('/')[-1]
2728 test('check-help-' + name,
2729 meson_check_help,
2730 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002731endforeach
2732
2733############################################################
2734
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002735# Enable tests for all supported sanitizers
2736foreach tuple : sanitizers
2737 sanitizer = tuple[0]
2738 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002739
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002740 have = run_command(check_compilation_sh,
2741 cc.cmd_array(), '-x', 'c',
2742 '-fsanitize=@0@'.format(sanitizer),
2743 '-include', link_test_c).returncode() == 0
2744 message('@0@ sanitizer supported: @1@'.format(sanitizer, have ? 'yes' : 'no'))
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002745
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002746 if have
2747 prev = ''
2748 foreach p : fuzz_regression_tests
2749 b = p.split('/')[-2]
2750 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002751
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002752 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002753
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002754 if name != prev
2755 if want_tests == 'false'
2756 message('Not compiling @0@ because tests is set to false'.format(name))
2757 elif slow_tests
2758 exe = custom_target(
2759 name,
2760 output : name,
2761 depends : build,
2762 command : [env, 'ln', '-fs',
2763 join_paths(build.full_path(), b),
2764 '@OUTPUT@'],
2765 build_by_default : true)
2766 else
2767 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2768 endif
2769 endif
2770 prev = name
2771
2772 if want_tests != 'false' and slow_tests
2773 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2774 env,
2775 args : [exe.full_path(),
2776 join_paths(meson.source_root(),
2777 'test/fuzz-regressions',
2778 p)])
2779 endif
2780 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002781 endif
2782endforeach
2783
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002784
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002785############################################################
2786
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002787if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002788 all_files = run_command(
2789 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002790 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002791 'ls-files',
2792 ':/*.[ch]'])
2793 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002794
userwithuide85a6902017-08-09 13:41:44 +00002795 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002796 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002797 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002798 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00002799 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002800 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002801 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002802endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002803
2804if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002805 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002806 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002807 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002808 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002809endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002810
2811if git.found()
2812 git_head = run_command(
2813 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002814 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002815 'rev-parse', 'HEAD']).stdout().strip()
2816 git_head_short = run_command(
2817 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002818 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002819 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2820
2821 run_target(
2822 'git-snapshot',
2823 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002824 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002825 git_head_short),
2826 '--prefix', 'systemd-@0@/'.format(git_head),
2827 'HEAD'])
2828endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002829
2830############################################################
2831
Lennart Poettering51b13862017-12-20 12:51:14 +01002832meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2833run_target(
2834 'check-api-docs',
2835 depends : [man, libsystemd, libudev],
2836 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2837
2838############################################################
2839
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002840status = [
2841 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2842
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002843 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002844 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002845 'prefix directory: @0@'.format(prefixdir),
2846 'rootprefix directory: @0@'.format(rootprefixdir),
2847 'sysconf directory: @0@'.format(sysconfdir),
2848 'include directory: @0@'.format(includedir),
2849 'lib directory: @0@'.format(libdir),
2850 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002851 'SysV init scripts: @0@'.format(sysvinit_path),
2852 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002853 'PAM modules directory: @0@'.format(pamlibdir),
2854 'PAM configuration directory: @0@'.format(pamconfdir),
2855 'RPM macros directory: @0@'.format(rpmmacrosdir),
2856 'modprobe.d directory: @0@'.format(modprobedir),
2857 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2858 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2859 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2860 'bash completions directory: @0@'.format(bashcompletiondir),
2861 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002862 'extra start script: @0@'.format(get_option('rc-local')),
2863 'extra stop script: @0@'.format(get_option('halt-local')),
2864 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2865 get_option('debug-tty')),
2866 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002867 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002868 'maximum system UID: @0@'.format(system_uid_max),
2869 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002870 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2871 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2872 'minimum container UID base: @0@'.format(container_uid_base_min),
2873 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002874 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002875 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002876 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002877 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002878 'nobody user name: @0@'.format(nobody_user),
2879 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002880 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002881 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002882
2883 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02002884 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002885 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2886 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2887
2888alt_dns_servers = '\n '.join(dns_servers.split(' '))
2889alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2890status += [
2891 'default DNS servers: @0@'.format(alt_dns_servers),
2892 'default NTP servers: @0@'.format(alt_ntp_servers)]
2893
2894alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2895 '@@0@'.format(time_epoch)).stdout().strip()
2896status += [
2897 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2898
2899# TODO:
2900# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2901# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2902# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2903
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002904if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002905 status += [
2906 'efi arch: @0@'.format(efi_arch)]
2907
2908 if have_gnu_efi
2909 status += [
2910 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2911 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002912 'EFI lib directory: @0@'.format(efi_libdir),
2913 'EFI lds directory: @0@'.format(efi_ldsdir),
2914 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002915 endif
2916endif
2917
2918found = []
2919missing = []
2920
2921foreach tuple : [
2922 ['libcryptsetup'],
2923 ['PAM'],
2924 ['AUDIT'],
2925 ['IMA'],
2926 ['AppArmor'],
2927 ['SELinux'],
2928 ['SECCOMP'],
2929 ['SMACK'],
2930 ['zlib'],
2931 ['xz'],
2932 ['lz4'],
2933 ['bzip2'],
2934 ['ACL'],
2935 ['gcrypt'],
2936 ['qrencode'],
2937 ['microhttpd'],
2938 ['gnutls'],
2939 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002940 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002941 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002942 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002943 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002944 ['libiptc'],
2945 ['elfutils'],
2946 ['binfmt'],
2947 ['vconsole'],
2948 ['quotacheck'],
2949 ['tmpfiles'],
2950 ['environment.d'],
2951 ['sysusers'],
2952 ['firstboot'],
2953 ['randomseed'],
2954 ['backlight'],
2955 ['rfkill'],
2956 ['logind'],
2957 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02002958 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002959 ['importd'],
2960 ['hostnamed'],
2961 ['timedated'],
2962 ['timesyncd'],
2963 ['localed'],
2964 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002965 ['resolve'],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09002966 ['DNS-over-TLS'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002967 ['coredump'],
2968 ['polkit'],
2969 ['legacy pkla', install_polkit_pkla],
2970 ['efi'],
2971 ['gnu-efi', have_gnu_efi],
2972 ['kmod'],
2973 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01002974 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002975 ['blkid'],
2976 ['dbus'],
2977 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002978 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002979 ['hwdb'],
2980 ['tpm'],
2981 ['man pages', want_man],
2982 ['html pages', want_html],
2983 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002984 ['SysV compat'],
2985 ['utmp'],
2986 ['ldconfig'],
2987 ['hibernate'],
2988 ['adm group', get_option('adm-group')],
2989 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002990 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002991 ['debug hashmap'],
2992 ['debug mmap cache'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02002993 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002994]
2995
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01002996 if tuple.length() >= 2
2997 cond = tuple[1]
2998 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002999 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3000 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003001 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003002 endif
3003 if cond
3004 found += [tuple[0]]
3005 else
3006 missing += [tuple[0]]
3007 endif
3008endforeach
3009
3010status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003011 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003012 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003013 '',
3014 'disabled features: @0@'.format(', '.join(missing)),
3015 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003016message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003017
3018if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003019 warning('\n' +
3020 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3021 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3022 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003023endif