blob: e72d8c685abaa699f2cc3c4afed0e0f35398cbab [file] [log] [blame]
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01001# SPDX-License-Identifier: LGPL-2.1+
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01002
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003project('systemd', 'c',
Lennart Poetteringde7436b2018-06-22 13:03:47 +02004 version : '239',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04005 license : 'LGPLv2+',
6 default_options: [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04007 'c_std=gnu99',
8 'prefix=/usr',
9 'sysconfdir=/etc',
10 'localstatedir=/var',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040011 ],
Yu Watanabe8ea9fad2018-05-10 14:50:52 +090012 meson_version : '>= 0.44',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040013 )
14
Lennart Poetteringde7436b2018-06-22 13:03:47 +020015libsystemd_version = '0.23.0'
16libudev_version = '1.6.11'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020017
Yu Watanabe348b4432018-05-07 18:17:35 +090018# We need the same data in two different formats, ugh!
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040019# Also, for hysterical reasons, we use different variable
20# names, sometimes. Not all variables are included in every
21# set. Ugh, ugh, ugh!
22conf = configuration_data()
23conf.set_quoted('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version())
24conf.set_quoted('PACKAGE_VERSION', meson.project_version())
25
26substs = configuration_data()
27substs.set('PACKAGE_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
28substs.set('PACKAGE_VERSION', meson.project_version())
29
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040030#####################################################################
31
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040032# Try to install the git pre-commit hook
33git_hook = run_command(join_paths(meson.source_root(), 'tools/add-git-hook.sh'))
34if git_hook.returncode() == 0
35 message(git_hook.stdout().strip())
36endif
37
38#####################################################################
39
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010040if get_option('split-usr') == 'auto'
41 split_usr = run_command('test', '-L', '/bin').returncode() != 0
42else
43 split_usr = get_option('split-usr') == 'true'
44endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010045conf.set10('HAVE_SPLIT_USR', split_usr,
46 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010047
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010048if get_option('split-bin') == 'auto'
49 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
50else
51 split_bin = get_option('split-bin') == 'true'
52endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010053conf.set10('HAVE_SPLIT_BIN', split_bin,
54 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010055
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010056rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010057# Unusual rootprefixdir values are used by some distros
58# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010059rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010060if rootprefixdir == ''
61 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010062endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040063
64sysvinit_path = get_option('sysvinit-path')
65sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090066conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020067 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040068
69# join_paths ignore the preceding arguments if an absolute component is
70# encountered, so this should canonicalize various paths when they are
71# absolute or relative.
72prefixdir = get_option('prefix')
73if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040074 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040075endif
76bindir = join_paths(prefixdir, get_option('bindir'))
77libdir = join_paths(prefixdir, get_option('libdir'))
78sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
79includedir = join_paths(prefixdir, get_option('includedir'))
80datadir = join_paths(prefixdir, get_option('datadir'))
81localstatedir = join_paths('/', get_option('localstatedir'))
82
83rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010084rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040085rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
86
87rootlibdir = get_option('rootlibdir')
88if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040089 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040090endif
91
92# Dirs of external packages
Michael Bieble17e5ba2017-04-13 10:30:56 -040093pkgconfigdatadir = join_paths(datadir, 'pkgconfig')
94pkgconfiglibdir = join_paths(libdir, 'pkgconfig')
95polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
96polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
97polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
98varlogdir = join_paths(localstatedir, 'log')
99xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900100rpmmacrosdir = get_option('rpmmacrosdir')
101if rpmmacrosdir != 'no'
102 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
103endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200104modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400105
106# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400107pkgdatadir = join_paths(datadir, 'systemd')
108environmentdir = join_paths(prefixdir, 'lib/environment.d')
109pkgsysconfdir = join_paths(sysconfdir, 'systemd')
110userunitdir = join_paths(prefixdir, 'lib/systemd/user')
111userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
112tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
113sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
114sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
115binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
116modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
117networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
118pkgincludedir = join_paths(includedir, 'systemd')
119systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
120usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
121systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
122userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
123systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
124systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
125systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
126systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
127udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
128udevhomedir = udevlibexecdir
129udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
130udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
131catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
132kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
133factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400134bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
135testsdir = join_paths(prefixdir, 'lib/systemd/tests')
136systemdstatedir = join_paths(localstatedir, 'lib/systemd')
137catalogstatedir = join_paths(systemdstatedir, 'catalog')
138randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200139profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400140
tblume75aaade2018-02-01 22:46:15 +0100141docdir = get_option('docdir')
142if docdir == ''
143 docdir = join_paths(datadir, 'doc/systemd')
144endif
145
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400146dbuspolicydir = get_option('dbuspolicydir')
147if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400148 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400149endif
150
151dbussessionservicedir = get_option('dbussessionservicedir')
152if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400153 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400154endif
155
156dbussystemservicedir = get_option('dbussystemservicedir')
157if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400158 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400159endif
160
161pamlibdir = get_option('pamlibdir')
162if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400163 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400164endif
165
166pamconfdir = get_option('pamconfdir')
167if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400168 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400169endif
170
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100171memory_accounting_default = get_option('memory-accounting-default')
172
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400173conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400174conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400175conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
176conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
177conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400178conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
179conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100180
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100181conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100182
Michael Bieble17e5ba2017-04-13 10:30:56 -0400183conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400184conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
185conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400186conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
187conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
188conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
189conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100190conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100191conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400192conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
193conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
194conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
195conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
196conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100197conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400198conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400199conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
200conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400201conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
202conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
203conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
204conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
205conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
206conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400207conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
208conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400209conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400210conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400211conf.set_quoted('LIBDIR', libdir)
212conf.set_quoted('ROOTLIBDIR', rootlibdir)
213conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
214conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400215conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
216conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
217conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
218conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
219conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
220conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100221conf.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'true' : 'false')
Michal Koutný7f672e82018-03-09 18:27:13 +0100222conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400223
224conf.set_quoted('ABS_BUILD_DIR', meson.build_root())
225conf.set_quoted('ABS_SRC_DIR', meson.source_root())
226
227substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400228substs.set('exec_prefix', prefixdir)
229substs.set('libdir', libdir)
230substs.set('rootlibdir', rootlibdir)
231substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400232substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400233substs.set('bindir', bindir)
234substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400235substs.set('rootlibexecdir', rootlibexecdir)
236substs.set('systemunitdir', systemunitdir)
237substs.set('userunitdir', userunitdir)
238substs.set('systempresetdir', systempresetdir)
239substs.set('userpresetdir', userpresetdir)
240substs.set('udevhwdbdir', udevhwdbdir)
241substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400242substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200243substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400244substs.set('catalogdir', catalogdir)
245substs.set('tmpfilesdir', tmpfilesdir)
246substs.set('sysusersdir', sysusersdir)
247substs.set('sysctldir', sysctldir)
248substs.set('binfmtdir', binfmtdir)
249substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200250substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400251substs.set('systemgeneratordir', systemgeneratordir)
252substs.set('usergeneratordir', usergeneratordir)
253substs.set('systemenvgeneratordir', systemenvgeneratordir)
254substs.set('userenvgeneratordir', userenvgeneratordir)
255substs.set('systemshutdowndir', systemshutdowndir)
256substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400257substs.set('VARLOGDIR', varlogdir)
258substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400259substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
260substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400261substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
262substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
263substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
264substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100265substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400266
267#####################################################################
268
269cc = meson.get_compiler('c')
270pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400271check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100272meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400273
Adam Duskett08318a22018-01-15 06:25:46 -0500274if get_option('tests') != 'false'
275 cxx = find_program('c++', required : false)
276 if cxx.found()
277 # Used only for tests
278 add_languages('cpp')
279 endif
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400280endif
281
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500282want_ossfuzz = get_option('oss-fuzz')
283want_libfuzzer = get_option('llvm-fuzz')
284fuzzer_build = want_ossfuzz or want_libfuzzer
285if want_ossfuzz and want_libfuzzer
286 error('only one of oss-fuzz and llvm-fuzz can be specified')
287endif
288if want_libfuzzer
289 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
290endif
291if want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500292 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
293endif
294
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900295possible_cc_flags = [
296 '-Wextra',
297 '-Werror=undef',
298 '-Wlogical-op',
299 '-Wmissing-include-dirs',
300 '-Wold-style-definition',
301 '-Wpointer-arith',
302 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900303 '-Wfloat-equal',
304 '-Wsuggest-attribute=noreturn',
305 '-Werror=missing-prototypes',
306 '-Werror=implicit-function-declaration',
307 '-Werror=missing-declarations',
308 '-Werror=return-type',
309 '-Werror=incompatible-pointer-types',
310 '-Werror=format=2',
311 '-Wstrict-prototypes',
312 '-Wredundant-decls',
313 '-Wmissing-noreturn',
314 '-Wimplicit-fallthrough=5',
315 '-Wshadow',
316 '-Wendif-labels',
317 '-Wstrict-aliasing=2',
318 '-Wwrite-strings',
319 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200320 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200321 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900322 '-Wdate-time',
323 '-Wnested-externs',
324 '-ffast-math',
325 '-fno-common',
326 '-fdiagnostics-show-option',
327 '-fno-strict-aliasing',
328 '-fvisibility=hidden',
329 '-fstack-protector',
330 '-fstack-protector-strong',
331 '--param=ssp-buffer-size=4',
332]
333
334# --as-needed and --no-undefined are provided by meson by default,
335# run mesonconf to see what is enabled
336possible_link_flags = [
337 '-Wl,-z,relro',
338 '-Wl,-z,now',
339]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400340
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500341# the oss-fuzz fuzzers are not built with -fPIE, so don't
342# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500343if not fuzzer_build
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900344 possible_cc_flags += '-fPIE'
345 possible_link_flags += '-pie'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500346endif
347
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900348if cc.get_id() == 'clang'
349 possible_cc_flags += [
350 '-Wno-typedef-redefinition',
351 '-Wno-gnu-variable-sized-type-not-at-end',
352 ]
353endif
354
355if get_option('buildtype') != 'debug'
356 possible_cc_flags += [
357 '-ffunction-sections',
358 '-fdata-sections',
359 ]
360
361 possible_link_flags += '-Wl,--gc-sections'
362endif
363
364add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
365
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400366# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
Zbigniew Jędrzejewski-Szmekd40f5cc2018-06-07 15:08:02 +0200367# arguments, just emits a warning. So test for the "positive" version instead.
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400368foreach arg : ['unused-parameter',
369 'missing-field-initializers',
370 'unused-result',
Zbigniew Jędrzejewski-Szmekfb1b5882017-09-04 19:49:12 +0300371 'format-signedness',
372 'error=nonnull', # work-around for gcc 7.1 turning this on on its own
373 ]
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400374 if cc.has_argument('-W' + arg)
375 add_project_arguments('-Wno-' + arg, language : 'c')
376 endif
377endforeach
378
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800379if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400380 #include <time.h>
381 #include <inttypes.h>
382 typedef uint64_t usec_t;
383 usec_t now(clockid_t clock);
384 int main(void) {
385 struct timespec now;
386 return 0;
387 }
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800388''', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400389 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400390endif
391
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400392link_test_c = files('tools/meson-link-test.c')
393
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900394foreach arg : possible_link_flags
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400395 have = run_command(check_compilation_sh,
396 cc.cmd_array(), '-x', 'c', arg,
397 '-include', link_test_c).returncode() == 0
398 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900399 if have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400400 add_project_link_arguments(arg, language : 'c')
401 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400402endforeach
403
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400404cpp = ' '.join(cc.cmd_array()) + ' -E'
405
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400406#####################################################################
407# compilation result tests
408
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400409conf.set('_GNU_SOURCE', true)
410conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400411
412conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
413conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
414conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
415conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
416conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
417conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
418conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
419
420decl_headers = '''
421#include <uchar.h>
422#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000423#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100424#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400425'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400426
427foreach decl : ['char16_t',
428 'char32_t',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400429 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000430 'struct fib_rule_uid_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100431 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400432 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400433
434 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200435 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
436
437 if decl == 'struct statx'
438 if have
439 want_linux_stat_h = false
440 else
441 have = cc.sizeof(decl,
442 prefix : decl_headers + '#include <linux/stat.h>',
443 args : '-D_GNU_SOURCE') > 0
444 want_linux_stat_h = have
445 endif
446 endif
447
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200448 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400449endforeach
450
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200451conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700452
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400453foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
454 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
455 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
456 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530457 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400458 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
459 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
460 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
461 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
462 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530463 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400464 # if_tunnel.h is buggy and cannot be included on its own
465 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
466 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
467 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
468 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
469 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
470 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
471 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530472 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400473 ['NDA_IFINDEX', 'linux/neighbour.h'],
474 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000475 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400476 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530477 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400478 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400479 prefix = decl.length() > 2 ? decl[2] : ''
480 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200481 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400482endforeach
483
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400484foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200485 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400486endforeach
487
488foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100489 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100490 ['gettid', '''#include <sys/types.h>
491 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100492 ['pivot_root', '''#include <stdlib.h>
493 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100494 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400495 #include <sys/stat.h>
496 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100497 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100498 ['renameat2', '''#include <stdio.h>
499 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400500 ['kcmp', '''#include <linux/kcmp.h>'''],
501 ['keyctl', '''#include <sys/types.h>
502 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100503 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400504 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200505 ['bpf', '''#include <sys/syscall.h>
506 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100507 ['statx', '''#include <sys/types.h>
508 #include <sys/stat.h>
509 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100510 ['explicit_bzero' , '''#include <string.h>'''],
511 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400512]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400513
Lennart Poettering85db59b2017-12-25 12:01:14 +0100514 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200515 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400516endforeach
517
Lennart Poettering85db59b2017-12-25 12:01:14 +0100518if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200519 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200520 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400521else
522 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200523 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200524 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400525endif
526
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400527#####################################################################
528
529sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400530awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400531m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400532stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400533git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100534env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100535perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400536
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400537meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400538mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400539test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
540splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400541
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400542# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
543# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500544progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400545 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400546 ['kmod', '/usr/bin/kmod' ],
547 ['kexec', '/usr/sbin/kexec' ],
548 ['sulogin', '/usr/sbin/sulogin' ],
549 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
550 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
551 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
552 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
553 ]
554foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400555 path = get_option(prog[0] + '-path')
556 if path != ''
557 message('Using @1@ for @0@'.format(prog[0], path))
558 else
559 exe = find_program(prog[0],
560 '/usr/sbin/' + prog[0],
561 '/sbin/' + prog[0],
562 required: false)
563 path = exe.found() ? exe.path() : prog[1]
564 endif
565 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
566 conf.set_quoted(name, path)
567 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400568endforeach
569
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500570conf.set_quoted('TELINIT', get_option('telinit-path'))
571
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400572if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100573 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400574endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400575
576############################################################
577
578gperf = find_program('gperf')
579
580gperf_test_format = '''
581#include <string.h>
582const char * in_word_set(const char *, @0@);
583@1@
584'''
585gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
586gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
587gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
588if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400589 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400590else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400591 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
592 if cc.compiles(gperf_test)
593 gperf_len_type = 'unsigned'
594 else
595 error('unable to determine gperf len type')
596 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400597endif
598message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400599conf.set('GPERF_LEN_TYPE', gperf_len_type,
600 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400601
602############################################################
603
604if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400605 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400606endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100607foreach header : ['crypt.h',
608 'linux/btrfs.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400609 'linux/memfd.h',
610 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200611 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400612 'valgrind/memcheck.h',
613 'valgrind/valgrind.h',
614 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400615
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200616 conf.set10('HAVE_' + header.underscorify().to_upper(),
617 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400618endforeach
619
620############################################################
621
622conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400623conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
624gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400625
626default_hierarchy = get_option('default-hierarchy')
627conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
628 description : 'default cgroup hierarchy as string')
629if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400630 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400631elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400632 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400633else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400634 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400635endif
636
637time_epoch = get_option('time-epoch')
638if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400639 NEWS = files('NEWS')
640 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400641endif
642time_epoch = time_epoch.to_int()
643conf.set('TIME_EPOCH', time_epoch)
644
645system_uid_max = get_option('system-uid-max')
646if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400647 system_uid_max = run_command(
648 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800649 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
650 '/etc/login.defs').stdout().strip()
651 if system_uid_max == ''
652 system_uid_max = '999'
653 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400654endif
655system_uid_max = system_uid_max.to_int()
656conf.set('SYSTEM_UID_MAX', system_uid_max)
657substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400658
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400659system_gid_max = get_option('system-gid-max')
660if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400661 system_gid_max = run_command(
662 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800663 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
664 '/etc/login.defs').stdout().strip()
665 if system_gid_max == ''
666 system_gid_max = '999'
667 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400668endif
669system_gid_max = system_gid_max.to_int()
670conf.set('SYSTEM_GID_MAX', system_gid_max)
671substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400672
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100673dynamic_uid_min = get_option('dynamic-uid-min').to_int()
674dynamic_uid_max = get_option('dynamic-uid-max').to_int()
675conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
676conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
677substs.set('dynamicuidmin', dynamic_uid_min)
678substs.set('dynamicuidmax', dynamic_uid_max)
679
680container_uid_base_min = get_option('container-uid-base-min').to_int()
681container_uid_base_max = get_option('container-uid-base-max').to_int()
682conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
683conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
684substs.set('containeruidbasemin', container_uid_base_min)
685substs.set('containeruidbasemax', container_uid_base_max)
686
Lennart Poetteringafde4572017-12-05 11:00:24 +0100687nobody_user = get_option('nobody-user')
688nobody_group = get_option('nobody-group')
689
Chen Qi2484bff2018-07-23 14:53:09 +0800690if not meson.is_cross_build()
691 getent_result = run_command('getent', 'passwd', '65534')
692 if getent_result.returncode() == 0
693 name = getent_result.stdout().split(':')[0]
694 if name != nobody_user
695 warning('\n' +
696 '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) +
697 'Your build will result in an user table setup that is incompatible with the local system.')
698 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100699 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800700 id_result = run_command('id', '-u', nobody_user)
701 if id_result.returncode() == 0
702 id = id_result.stdout().to_int()
703 if id != 65534
704 warning('\n' +
705 '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) +
706 'Your build will result in an user table setup that is incompatible with the local system.')
707 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100708 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100709
Chen Qi2484bff2018-07-23 14:53:09 +0800710 getent_result = run_command('getent', 'group', '65534')
711 if getent_result.returncode() == 0
712 name = getent_result.stdout().split(':')[0]
713 if name != nobody_group
714 warning('\n' +
715 '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) +
716 'Your build will result in an group table setup that is incompatible with the local system.')
717 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100718 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800719 id_result = run_command('id', '-g', nobody_group)
720 if id_result.returncode() == 0
721 id = id_result.stdout().to_int()
722 if id != 65534
723 warning('\n' +
724 '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) +
725 'Your build will result in an group table setup that is incompatible with the local system.')
726 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100727 endif
728endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900729if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900730 warning('\n' +
731 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
732 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900733endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100734
735conf.set_quoted('NOBODY_USER_NAME', nobody_user)
736conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900737substs.set('NOBODY_USER_NAME', nobody_user)
738substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100739
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400740tty_gid = get_option('tty-gid')
741conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400742substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400743
Ikey Doherty84786b82017-12-03 12:28:23 +0000744# Ensure provided GID argument is numeric, otherwise fallback to default assignment
745if get_option('users-gid') != ''
Yu Watanabed6806872017-12-05 14:01:39 +0900746 users_gid = get_option('users-gid').to_int()
Ikey Doherty84786b82017-12-03 12:28:23 +0000747else
Yu Watanabed6806872017-12-05 14:01:39 +0900748 users_gid = '-'
Ikey Doherty84786b82017-12-03 12:28:23 +0000749endif
750substs.set('USERS_GID', users_gid)
751
Yu Watanabe348b4432018-05-07 18:17:35 +0900752conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
753conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400754
755substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700756substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400757
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400758kill_user_processes = get_option('default-kill-user-processes')
759conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100760conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400761substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400762
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400763dns_servers = get_option('dns-servers')
764conf.set_quoted('DNS_SERVERS', dns_servers)
765substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400766
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400767ntp_servers = get_option('ntp-servers')
768conf.set_quoted('NTP_SERVERS', ntp_servers)
769substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400770
771conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
772
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400773substs.set('SUSHELL', get_option('debug-shell'))
774substs.set('DEBUGTTY', get_option('debug-tty'))
775
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200776enable_debug_hashmap = false
777enable_debug_mmap_cache = false
Yu Watanabead7aa762018-05-02 13:56:28 +0900778foreach name : get_option('debug')
779 if name == 'hashmap'
780 enable_debug_hashmap = true
781 elif name == 'mmap-cache'
782 enable_debug_mmap_cache = true
783 else
784 message('unknown debug option "@0@", ignoring'.format(name))
785 endif
786endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200787conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
788conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400789
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200790conf.set10('VALGRIND', get_option('valgrind'))
791
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400792#####################################################################
793
794threads = dependency('threads')
795librt = cc.find_library('rt')
796libm = cc.find_library('m')
797libdl = cc.find_library('dl')
798libcrypt = cc.find_library('crypt')
799
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400800libcap = dependency('libcap', required : false)
801if not libcap.found()
802 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
803 libcap = cc.find_library('cap')
804endif
805
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400806libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100807 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400808
809want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500810if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400811 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400812 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400813 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200814 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400815else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200816 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400817 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400818endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200819conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400820
821want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500822if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400823 libselinux = dependency('libselinux',
824 version : '>= 2.1.9',
825 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200826 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400827else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200828 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400829 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400830endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200831conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400832
833want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500834if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400835 libapparmor = dependency('libapparmor',
836 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200837 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400838else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200839 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400840 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400841endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200842conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400843
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400844smack_run_label = get_option('smack-run-label')
845if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400846 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400847endif
848
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400849want_polkit = get_option('polkit')
850install_polkit = false
851install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500852if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400853 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400854
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400855 libpolkit = dependency('polkit-gobject-1',
856 required : false)
857 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
858 message('Old polkit detected, will install pkla files')
859 install_polkit_pkla = true
860 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400861endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200862conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400863
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400864want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500865if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400866 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200867 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400868else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200869 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400870 libacl = []
871endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200872conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400873
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400874want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500875if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400876 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200877 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400878else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200879 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400880 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400881endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200882conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400883
884want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500885if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400886 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200887 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400888else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200889 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400890 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400891endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200892conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400893
894want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500895if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400896 libkmod = dependency('libkmod',
897 version : '>= 15',
898 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200899 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400900else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200901 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400902 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400903endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200904conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400905
906want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500907if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400908 libpam = cc.find_library('pam', required : want_pam == 'true')
909 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200910 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400911else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200912 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400913 libpam = []
914 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400915endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200916conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400917
918want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500919if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400920 libmicrohttpd = dependency('libmicrohttpd',
921 version : '>= 0.9.33',
922 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200923 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400924else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200925 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400926 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400927endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200928conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400929
930want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500931if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400932 libcryptsetup = dependency('libcryptsetup',
933 version : '>= 1.6.0',
934 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200935 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400936else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200937 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400938 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400939endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200940conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400941
942want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500943if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400944 libcurl = dependency('libcurl',
945 version : '>= 7.32.0',
946 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200947 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400948else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200949 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400950 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400951endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200952conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400953
954want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400955want_libidn2 = get_option('libidn2')
956if want_libidn == 'true' and want_libidn2 == 'true'
957 error('libidn and libidn2 cannot be requested simultaneously')
958endif
959
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500960if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400961 libidn = dependency('libidn',
962 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200963 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400964else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200965 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400966 libidn = []
967endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200968conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500969if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400970 # libidn is used for both libidn and libidn2 objects
971 libidn = dependency('libidn2',
972 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200973 have = libidn.found()
974else
975 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400976endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200977conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400978
979want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500980if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400981 libiptc = dependency('libiptc',
982 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200983 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400984else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200985 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400986 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400987endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200988conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400989
990want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500991if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400992 libqrencode = dependency('libqrencode',
993 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200994 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400995else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200996 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400997 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400998endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200999conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001000
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001001want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001002if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001003 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1004 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001005 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001006else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001007 have = false
1008endif
1009if not have
1010 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001011 libgcrypt = []
1012 libgpg_error = []
1013endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001014conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001015
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001016want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001017if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001018 libgnutls = dependency('gnutls',
1019 version : '>= 3.1.4',
1020 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001021 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001022else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001023 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001024 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001025endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001026conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001027
1028want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001029if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001030 libdw = dependency('libdw',
1031 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001032 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001033else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001034 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001035 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001036endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001037conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001038
1039want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001040if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001041 libz = dependency('zlib',
1042 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001043 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001044else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001045 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001046 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001047endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001048conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001049
1050want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001051if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001052 libbzip2 = cc.find_library('bz2',
1053 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001054 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001055else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001056 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001057 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001058endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001059conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001060
1061want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001062if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001063 libxz = dependency('liblzma',
1064 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001065 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001066else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001067 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001068 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001069endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001070conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001071
1072want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001073if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001074 liblz4 = dependency('liblz4',
1075 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001076 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001077else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001078 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001079 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001080endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001081conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001082
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001083want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001084if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001085 libxkbcommon = dependency('xkbcommon',
1086 version : '>= 0.3.0',
1087 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001088 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001089else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001090 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001091 libxkbcommon = []
1092endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001093conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001094
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001095want_pcre2 = get_option('pcre2')
1096if want_pcre2 != 'false'
1097 libpcre2 = dependency('libpcre2-8',
1098 required : want_pcre2 == 'true')
1099 have = libpcre2.found()
1100else
1101 have = false
1102 libpcre2 = []
1103endif
1104conf.set10('HAVE_PCRE2', have)
1105
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001106want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001107if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001108 libglib = dependency('glib-2.0',
1109 version : '>= 2.22.0',
1110 required : want_glib == 'true')
1111 libgobject = dependency('gobject-2.0',
1112 version : '>= 2.22.0',
1113 required : want_glib == 'true')
1114 libgio = dependency('gio-2.0',
1115 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001116 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001117else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001118 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001119 libglib = []
1120 libgobject = []
1121 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001122endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001123conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001124
1125want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001126if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001127 libdbus = dependency('dbus-1',
1128 version : '>= 1.3.2',
1129 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001130 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001131else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001132 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001133 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001134endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001135conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001136
Yu Watanabe42303dc2017-06-18 05:22:32 +09001137default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001138if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001139 default_dnssec = 'no'
1140endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001141if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001142 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1143 default_dnssec = 'no'
1144endif
1145conf.set('DEFAULT_DNSSEC_MODE',
1146 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1147substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1148
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001149dns_over_tls = get_option('dns-over-tls')
1150if dns_over_tls != 'false'
Yu Watanabe48f5da12018-06-28 16:09:04 +09001151 have = (conf.get('HAVE_GNUTLS') == 1 and
1152 libgnutls.version().version_compare('>=3.5.3'))
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001153 if dns_over_tls == 'true' and not have
1154 error('DNS-over-TLS support was requested, but dependencies are not available')
1155 endif
1156else
1157 have = false
1158endif
1159conf.set10('ENABLE_DNS_OVER_TLS', have)
1160
Iwan Timmerc9299be2018-06-13 20:26:24 +02001161default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001162if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001163 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001164endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001165if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1166 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 +02001167 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001168endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001169conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1170 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1171substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001172
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001173want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001174if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001175 have = (conf.get('HAVE_LIBCURL') == 1 and
1176 conf.get('HAVE_ZLIB') == 1 and
1177 conf.get('HAVE_BZIP2') == 1 and
1178 conf.get('HAVE_XZ') == 1 and
1179 conf.get('HAVE_GCRYPT') == 1)
1180 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001181 error('importd support was requested, but dependencies are not available')
1182 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001183else
1184 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001185endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001186conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001187
1188want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001189if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001190 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1191 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001192 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1193 # it's possible to build one without the other. Complain only if
1194 # support was explictly requested. The auxiliary files like sysusers
1195 # config should be installed when any of the programs are built.
1196 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1197 error('remote support was requested, but dependencies are not available')
1198 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001199 have = have_deps[0] or have_deps[1]
1200else
1201 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001202endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001203conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001204
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001205foreach term : ['utmp',
1206 'hibernate',
1207 'environment-d',
1208 'binfmt',
1209 'coredump',
1210 'resolve',
1211 'logind',
1212 'hostnamed',
1213 'localed',
1214 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001215 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001216 'networkd',
1217 'timedated',
1218 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001219 'firstboot',
1220 'randomseed',
1221 'backlight',
1222 'vconsole',
1223 'quotacheck',
1224 'sysusers',
1225 'tmpfiles',
1226 'hwdb',
1227 'rfkill',
1228 'ldconfig',
1229 'efi',
1230 'tpm',
1231 'ima',
1232 'smack',
1233 'gshadow',
1234 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001235 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001236 'nss-systemd']
1237 have = get_option(term)
1238 name = 'ENABLE_' + term.underscorify().to_upper()
1239 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001240endforeach
1241
Yu Watanabe08540a92018-07-18 09:25:57 +09001242foreach tuple : [['nss-mymachines', 'machined'],
1243 ['nss-resolve', 'resolve']]
1244 want = get_option(tuple[0])
1245 if want != 'false'
1246 have = get_option(tuple[1])
1247 if want == 'true' and not have
1248 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1249 endif
1250 else
1251 have = false
1252 endif
1253 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1254 conf.set10(name, have)
1255endforeach
1256
1257enable_nss = false
1258foreach term : ['ENABLE_NSS_MYHOSTNAME',
1259 'ENABLE_NSS_MYMACHINES',
1260 'ENABLE_NSS_RESOLVE',
1261 'ENABLE_NSS_SYSTEMD']
1262 if conf.get(term) == 1
1263 enable_nss = true
1264 endif
1265endforeach
1266conf.set10('ENABLE_NSS', enable_nss)
1267
Yu Watanabe348b4432018-05-07 18:17:35 +09001268conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001269
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001270want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001271install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001272slow_tests = get_option('slow-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001273tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001274fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001275
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001276conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001277
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001278#####################################################################
1279
1280if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001281 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001282
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001283 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001284 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001285 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001286 elif efi_arch == 'x86_64'
1287 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001288 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001289 elif efi_arch == 'arm'
1290 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001291 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001292 elif efi_arch == 'aarch64'
1293 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001294 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001295 else
1296 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001297 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001298 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001299
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001300 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001301 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001302
1303 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001304else
1305 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001306endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001307conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001308
1309#####################################################################
1310
1311config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001312 output : 'config.h',
1313 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001314
Yu Watanabe348b4432018-05-07 18:17:35 +09001315meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1316
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001317includes = include_directories('src/basic',
1318 'src/shared',
1319 'src/systemd',
1320 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001321 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001322 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001323 'src/resolve',
1324 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001325 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001326 'src/login',
1327 'src/udev',
1328 'src/libudev',
1329 'src/core',
1330 'src/libsystemd/sd-bus',
1331 'src/libsystemd/sd-device',
1332 'src/libsystemd/sd-hwdb',
1333 'src/libsystemd/sd-id128',
1334 'src/libsystemd/sd-netlink',
1335 'src/libsystemd/sd-network',
1336 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001337 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001338
1339add_project_arguments('-include', 'config.h', language : 'c')
1340
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001341subdir('po')
1342subdir('catalog')
1343subdir('src/systemd')
1344subdir('src/basic')
1345subdir('src/libsystemd')
1346subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001347subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001348subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001349
1350libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001351 'journal-core',
1352 libjournal_core_sources,
1353 journald_gperf_c,
1354 include_directories : includes,
1355 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001356
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001357libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001358libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001359 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001360 '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 +02001361 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001362 include_directories : includes,
1363 link_args : ['-shared',
1364 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001365 link_with : [libbasic,
1366 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001367 link_whole : [libsystemd_static,
1368 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001369 dependencies : [threads,
1370 librt,
1371 libxz,
1372 liblz4],
1373 link_depends : libsystemd_sym,
1374 install : true,
1375 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001376
Davide Cavalca70848ec2018-04-09 02:43:35 -07001377static_libsystemd = get_option('static-libsystemd')
1378static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1379
1380install_libsystemd_static = static_library(
1381 'systemd',
1382 libsystemd_sources,
1383 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001384 basic_sources,
1385 basic_gcrypt_sources,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001386 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001387 build_by_default : static_libsystemd != 'false',
1388 install : static_libsystemd != 'false',
1389 install_dir : rootlibdir,
1390 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1391 dependencies : [threads,
1392 librt,
1393 libxz,
1394 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001395 libcap,
1396 libblkid,
1397 libmount,
1398 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001399 libgcrypt],
1400 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1401
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001402############################################################
1403
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001404# binaries that have --help and are intended for use by humans,
1405# usually, but not always, installed in /bin.
1406public_programs = []
1407
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001408subdir('src/libudev')
1409subdir('src/shared')
1410subdir('src/core')
1411subdir('src/udev')
1412subdir('src/network')
1413
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001414subdir('src/analyze')
1415subdir('src/journal-remote')
1416subdir('src/coredump')
1417subdir('src/hostname')
1418subdir('src/import')
1419subdir('src/kernel-install')
1420subdir('src/locale')
1421subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001422subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001423subdir('src/nspawn')
1424subdir('src/resolve')
1425subdir('src/timedate')
1426subdir('src/timesync')
1427subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001428subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001429
1430subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001431subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001432subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001433subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001434
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001435############################################################
1436
1437# only static linking apart from libdl, to make sure that the
1438# module is linked to all libraries that it uses.
1439test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001440 'test-dlopen',
1441 test_dlopen_c,
1442 include_directories : includes,
1443 link_with : [libbasic],
1444 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001445
Yu Watanabe08540a92018-07-18 09:25:57 +09001446foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001447 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001448 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1449 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001450
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001451 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001452 if condition
1453 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001454
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001455 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1456 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001457
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001458 nss = shared_library(
1459 'nss_' + module,
1460 'src/nss-@0@/nss-@0@.c'.format(module),
1461 version : '2',
1462 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001463 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1464 link_args : ['-Wl,-z,nodelete',
1465 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001466 '-Wl,--version-script=' + version_script_arg,
1467 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001468 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001469 libbasic],
1470 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001471 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001472 link_depends : sym,
1473 install : true,
1474 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001475
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001476 # We cannot use shared_module because it does not support version suffix.
1477 # Unfortunately shared_library insists on creating the symlink…
1478 meson.add_install_script('sh', '-c',
1479 'rm $DESTDIR@0@/libnss_@1@.so'
1480 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001481
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001482 test('dlopen-nss_' + module,
1483 test_dlopen,
1484 args : [nss.full_path()]) # path to dlopen must include a slash
1485 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001486endforeach
1487
1488############################################################
1489
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001490executable('systemd',
1491 systemd_sources,
1492 include_directories : includes,
1493 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001494 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001495 dependencies : [threads,
1496 librt,
1497 libseccomp,
1498 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001499 libmount,
1500 libblkid],
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-Szmekba7f4ae2018-02-28 10:20:48 +01001505meson.add_install_script(meson_make_symlink,
1506 join_paths(rootlibexecdir, 'systemd'),
1507 join_paths(rootsbindir, 'init'))
1508
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001509exe = executable('systemd-analyze',
1510 systemd_analyze_sources,
1511 include_directories : includes,
1512 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001513 libshared],
1514 dependencies : [threads,
1515 librt,
1516 libseccomp,
1517 libselinux,
1518 libmount,
1519 libblkid],
1520 install_rpath : rootlibexecdir,
1521 install : true)
1522public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001523
1524executable('systemd-journald',
1525 systemd_journald_sources,
1526 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001527 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001528 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001529 dependencies : [threads,
1530 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001531 liblz4,
1532 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001533 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001534 install : true,
1535 install_dir : rootlibexecdir)
1536
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001537exe = executable('systemd-cat',
1538 systemd_cat_sources,
1539 include_directories : includes,
1540 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001541 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001542 dependencies : [threads],
1543 install_rpath : rootlibexecdir,
1544 install : true)
1545public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001546
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001547exe = executable('journalctl',
1548 journalctl_sources,
1549 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001550 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001551 dependencies : [threads,
1552 libqrencode,
1553 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001554 liblz4,
1555 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001556 install_rpath : rootlibexecdir,
1557 install : true,
1558 install_dir : rootbindir)
1559public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001560
1561executable('systemd-getty-generator',
1562 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001563 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001564 link_with : [libshared],
1565 install_rpath : rootlibexecdir,
1566 install : true,
1567 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001568
1569executable('systemd-debug-generator',
1570 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001571 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001572 link_with : [libshared],
1573 install_rpath : rootlibexecdir,
1574 install : true,
1575 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001576
1577executable('systemd-fstab-generator',
1578 'src/fstab-generator/fstab-generator.c',
1579 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001580 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001581 link_with : [libshared],
1582 install_rpath : rootlibexecdir,
1583 install : true,
1584 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001585
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001586if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001587 executable('30-systemd-environment-d-generator',
1588 'src/environment-d-generator/environment-d-generator.c',
1589 include_directories : includes,
1590 link_with : [libshared],
1591 install_rpath : rootlibexecdir,
1592 install : true,
1593 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001594
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001595 meson.add_install_script(meson_make_symlink,
1596 join_paths(sysconfdir, 'environment'),
1597 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001598endif
1599
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001600if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001601 executable('systemd-hibernate-resume-generator',
1602 'src/hibernate-resume/hibernate-resume-generator.c',
1603 include_directories : includes,
1604 link_with : [libshared],
1605 install_rpath : rootlibexecdir,
1606 install : true,
1607 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001608
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001609 executable('systemd-hibernate-resume',
1610 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001611 include_directories : includes,
1612 link_with : [libshared],
1613 install_rpath : rootlibexecdir,
1614 install : true,
1615 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001616endif
1617
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001618if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001619 executable('systemd-gpt-auto-generator',
1620 'src/gpt-auto-generator/gpt-auto-generator.c',
1621 'src/basic/blkid-util.h',
1622 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001623 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001624 dependencies : libblkid,
1625 install_rpath : rootlibexecdir,
1626 install : true,
1627 install_dir : systemgeneratordir)
1628
1629 exe = executable('systemd-dissect',
1630 'src/dissect/dissect.c',
1631 include_directories : includes,
1632 link_with : [libshared],
1633 install_rpath : rootlibexecdir,
1634 install : true,
1635 install_dir : rootlibexecdir)
1636 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001637endif
1638
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001639if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001640 executable('systemd-resolved',
1641 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001642 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001643 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001644 libbasic_gcrypt,
1645 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001646 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001647 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001648 install : true,
1649 install_dir : rootlibexecdir)
1650
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001651 exe = executable('resolvectl',
1652 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001653 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001654 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001655 libbasic_gcrypt,
1656 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001657 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001658 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001659 libm,
1660 libidn],
1661 install_rpath : rootlibexecdir,
1662 install : true)
1663 public_programs += [exe]
Lennart Poettering088c1362018-02-27 17:48:54 +01001664
1665 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001666 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001667 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001668
1669 meson.add_install_script(meson_make_symlink,
1670 join_paths(bindir, 'resolvectl'),
1671 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001672endif
1673
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001674if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001675 executable('systemd-logind',
1676 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001677 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001678 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001679 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001680 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001681 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001682 install_rpath : rootlibexecdir,
1683 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001684 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001685
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001686 exe = executable('loginctl',
1687 loginctl_sources,
1688 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001689 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001690 dependencies : [threads,
1691 liblz4,
1692 libxz],
1693 install_rpath : rootlibexecdir,
1694 install : true,
1695 install_dir : rootbindir)
1696 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001697
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001698 exe = executable('systemd-inhibit',
1699 'src/login/inhibit.c',
1700 include_directories : includes,
1701 link_with : [libshared],
1702 install_rpath : rootlibexecdir,
1703 install : true,
1704 install_dir : rootbindir)
1705 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001706
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001707 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001708 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1709 pam_systemd = shared_library(
1710 'pam_systemd',
1711 pam_systemd_c,
1712 name_prefix : '',
1713 include_directories : includes,
1714 link_args : ['-shared',
1715 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001716 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001717 libshared_static],
1718 dependencies : [threads,
1719 libpam,
1720 libpam_misc],
1721 link_depends : pam_systemd_sym,
1722 install : true,
1723 install_dir : pamlibdir)
1724
1725 test('dlopen-pam_systemd',
1726 test_dlopen,
1727 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1728 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001729endif
1730
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001731executable('systemd-user-runtime-dir',
1732 user_runtime_dir_sources,
1733 include_directories : includes,
1734 link_with : [libshared, liblogind_core],
1735 install_rpath : rootlibexecdir,
1736 install : true,
1737 install_dir : rootlibexecdir)
1738
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001739if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001740 executable('systemd-user-sessions',
1741 'src/user-sessions/user-sessions.c',
1742 include_directories : includes,
1743 link_with : [libshared],
1744 install_rpath : rootlibexecdir,
1745 install : true,
1746 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001747endif
1748
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001749if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001750 exe = executable('bootctl',
1751 'src/boot/bootctl.c',
1752 include_directories : includes,
1753 link_with : [libshared],
1754 dependencies : [libblkid],
1755 install_rpath : rootlibexecdir,
1756 install : true)
1757 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001758endif
1759
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001760exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1761 include_directories : includes,
1762 link_with : [libshared],
1763 dependencies : [threads],
1764 install_rpath : rootlibexecdir,
1765 install : true)
1766public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001767
Felipe Satelerf3794362018-05-22 15:08:57 -04001768
1769if get_option('link-systemctl-shared')
1770 systemctl_link_with = [libshared]
1771else
1772 systemctl_link_with = [libsystemd_static,
1773 libshared_static,
1774 libjournal_client,
1775 libbasic_gcrypt]
1776endif
1777
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001778exe = executable('systemctl', 'src/systemctl/systemctl.c',
1779 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001780 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001781 dependencies : [threads,
1782 libcap,
1783 libselinux,
1784 libxz,
1785 liblz4],
1786 install_rpath : rootlibexecdir,
1787 install : true,
1788 install_dir : rootbindir)
1789public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001790
Lennart Poettering61d05782018-04-16 21:41:40 +02001791if conf.get('ENABLE_PORTABLED') == 1
1792 executable('systemd-portabled',
1793 systemd_portabled_sources,
1794 include_directories : includes,
1795 link_with : [libshared],
1796 dependencies : [threads],
1797 install_rpath : rootlibexecdir,
1798 install : true,
1799 install_dir : rootlibexecdir)
1800
1801 exe = executable('portablectl', 'src/portable/portablectl.c',
1802 include_directories : includes,
1803 link_with : [libshared],
1804 dependencies : [threads],
1805 install_rpath : rootlibexecdir,
1806 install : true,
1807 install_dir : rootlibexecdir)
1808 public_programs += [exe]
1809endif
1810
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001811foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1812 meson.add_install_script(meson_make_symlink,
1813 join_paths(rootbindir, 'systemctl'),
1814 join_paths(rootsbindir, alias))
1815endforeach
1816
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001817if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001818 executable('systemd-backlight',
1819 'src/backlight/backlight.c',
1820 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001821 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001822 install_rpath : rootlibexecdir,
1823 install : true,
1824 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001825endif
1826
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001827if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001828 executable('systemd-rfkill',
1829 'src/rfkill/rfkill.c',
1830 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001831 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001832 install_rpath : rootlibexecdir,
1833 install : true,
1834 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001835endif
1836
1837executable('systemd-system-update-generator',
1838 'src/system-update-generator/system-update-generator.c',
1839 include_directories : includes,
1840 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001841 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001842 install : true,
1843 install_dir : systemgeneratordir)
1844
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001845if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001846 executable('systemd-cryptsetup',
1847 'src/cryptsetup/cryptsetup.c',
1848 include_directories : includes,
1849 link_with : [libshared],
1850 dependencies : [libcryptsetup],
1851 install_rpath : rootlibexecdir,
1852 install : true,
1853 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001854
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001855 executable('systemd-cryptsetup-generator',
1856 'src/cryptsetup/cryptsetup-generator.c',
1857 include_directories : includes,
1858 link_with : [libshared],
1859 dependencies : [libcryptsetup],
1860 install_rpath : rootlibexecdir,
1861 install : true,
1862 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001863
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001864 executable('systemd-veritysetup',
1865 'src/veritysetup/veritysetup.c',
1866 include_directories : includes,
1867 link_with : [libshared],
1868 dependencies : [libcryptsetup],
1869 install_rpath : rootlibexecdir,
1870 install : true,
1871 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001872
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001873 executable('systemd-veritysetup-generator',
1874 'src/veritysetup/veritysetup-generator.c',
1875 include_directories : includes,
1876 link_with : [libshared],
1877 dependencies : [libcryptsetup],
1878 install_rpath : rootlibexecdir,
1879 install : true,
1880 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001881endif
1882
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001883if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001884 executable('systemd-sysv-generator',
1885 'src/sysv-generator/sysv-generator.c',
1886 include_directories : includes,
1887 link_with : [libshared],
1888 install_rpath : rootlibexecdir,
1889 install : true,
1890 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001891
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001892 executable('systemd-rc-local-generator',
1893 'src/rc-local-generator/rc-local-generator.c',
1894 include_directories : includes,
1895 link_with : [libshared],
1896 install_rpath : rootlibexecdir,
1897 install : true,
1898 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001899endif
1900
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001901if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001902 executable('systemd-hostnamed',
1903 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001904 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001905 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001906 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001907 install : true,
1908 install_dir : rootlibexecdir)
1909
1910 exe = executable('hostnamectl',
1911 'src/hostname/hostnamectl.c',
1912 include_directories : includes,
1913 link_with : [libshared],
1914 install_rpath : rootlibexecdir,
1915 install : true)
1916 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001917endif
1918
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001919if conf.get('ENABLE_LOCALED') == 1
1920 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001921 # logind will load libxkbcommon.so dynamically on its own
1922 deps = [libdl]
1923 else
1924 deps = []
1925 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001926
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001927 executable('systemd-localed',
1928 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001929 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001930 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001931 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001932 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001933 install : true,
1934 install_dir : rootlibexecdir)
1935
1936 exe = executable('localectl',
1937 localectl_sources,
1938 include_directories : includes,
1939 link_with : [libshared],
1940 install_rpath : rootlibexecdir,
1941 install : true)
1942 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001943endif
1944
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001945if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001946 executable('systemd-timedated',
1947 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001948 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001949 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001950 install_rpath : rootlibexecdir,
1951 install : true,
1952 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09001953endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001954
Yu Watanabe6129ec82018-05-03 18:07:43 +09001955if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001956 exe = executable('timedatectl',
1957 'src/timedate/timedatectl.c',
1958 include_directories : includes,
1959 install_rpath : rootlibexecdir,
1960 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09001961 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001962 install : true)
1963 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001964endif
1965
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001966if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001967 executable('systemd-timesyncd',
1968 systemd_timesyncd_sources,
1969 include_directories : includes,
1970 link_with : [libshared],
1971 dependencies : [threads,
1972 libm],
1973 install_rpath : rootlibexecdir,
1974 install : true,
1975 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001976
1977 executable('systemd-time-wait-sync',
1978 'src/time-wait-sync/time-wait-sync.c',
1979 include_directories : includes,
1980 link_with : [libshared],
1981 install_rpath : rootlibexecdir,
1982 install : true,
1983 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001984endif
1985
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001986if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001987 executable('systemd-machined',
1988 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001989 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001990 link_with : [libmachine_core,
1991 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001992 install_rpath : rootlibexecdir,
1993 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001994 install_dir : rootlibexecdir)
1995
1996 exe = executable('machinectl',
1997 'src/machine/machinectl.c',
1998 include_directories : includes,
1999 link_with : [libshared],
2000 dependencies : [threads,
2001 libxz,
2002 liblz4],
2003 install_rpath : rootlibexecdir,
2004 install : true,
2005 install_dir : rootbindir)
2006 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002007endif
2008
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002009if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002010 executable('systemd-importd',
2011 systemd_importd_sources,
2012 include_directories : includes,
2013 link_with : [libshared],
2014 dependencies : [threads],
2015 install_rpath : rootlibexecdir,
2016 install : true,
2017 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002018
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002019 systemd_pull = executable('systemd-pull',
2020 systemd_pull_sources,
2021 include_directories : includes,
2022 link_with : [libshared],
2023 dependencies : [libcurl,
2024 libz,
2025 libbzip2,
2026 libxz,
2027 libgcrypt],
2028 install_rpath : rootlibexecdir,
2029 install : true,
2030 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002031
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002032 systemd_import = executable('systemd-import',
2033 systemd_import_sources,
2034 include_directories : includes,
2035 link_with : [libshared],
2036 dependencies : [libcurl,
2037 libz,
2038 libbzip2,
2039 libxz],
2040 install_rpath : rootlibexecdir,
2041 install : true,
2042 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002043
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002044 systemd_export = executable('systemd-export',
2045 systemd_export_sources,
2046 include_directories : includes,
2047 link_with : [libshared],
2048 dependencies : [libcurl,
2049 libz,
2050 libbzip2,
2051 libxz],
2052 install_rpath : rootlibexecdir,
2053 install : true,
2054 install_dir : rootlibexecdir)
2055 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002056endif
2057
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002058if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002059 exe = executable('systemd-journal-upload',
2060 systemd_journal_upload_sources,
2061 include_directories : includes,
2062 link_with : [libshared],
2063 dependencies : [threads,
2064 libcurl,
2065 libgnutls,
2066 libxz,
2067 liblz4],
2068 install_rpath : rootlibexecdir,
2069 install : true,
2070 install_dir : rootlibexecdir)
2071 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002072endif
2073
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002074if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002075 s_j_remote = executable('systemd-journal-remote',
2076 systemd_journal_remote_sources,
2077 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002078 link_with : [libshared,
2079 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002080 dependencies : [threads,
2081 libmicrohttpd,
2082 libgnutls,
2083 libxz,
2084 liblz4],
2085 install_rpath : rootlibexecdir,
2086 install : true,
2087 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002088
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002089 s_j_gatewayd = executable('systemd-journal-gatewayd',
2090 systemd_journal_gatewayd_sources,
2091 include_directories : includes,
2092 link_with : [libshared],
2093 dependencies : [threads,
2094 libmicrohttpd,
2095 libgnutls,
2096 libxz,
2097 liblz4],
2098 install_rpath : rootlibexecdir,
2099 install : true,
2100 install_dir : rootlibexecdir)
2101 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002102endif
2103
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002104if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002105 executable('systemd-coredump',
2106 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002107 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002108 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002109 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002110 libacl,
2111 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002112 libxz,
2113 liblz4],
2114 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002115 install : true,
2116 install_dir : rootlibexecdir)
2117
2118 exe = executable('coredumpctl',
2119 coredumpctl_sources,
2120 include_directories : includes,
2121 link_with : [libshared],
2122 dependencies : [threads,
2123 libxz,
2124 liblz4],
2125 install_rpath : rootlibexecdir,
2126 install : true)
2127 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002128endif
2129
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002130if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002131 exe = executable('systemd-binfmt',
2132 'src/binfmt/binfmt.c',
2133 include_directories : includes,
2134 link_with : [libshared],
2135 install_rpath : rootlibexecdir,
2136 install : true,
2137 install_dir : rootlibexecdir)
2138 public_programs += [exe]
2139
2140 meson.add_install_script('sh', '-c',
2141 mkdir_p.format(binfmtdir))
2142 meson.add_install_script('sh', '-c',
2143 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2144endif
2145
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002146if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002147 executable('systemd-vconsole-setup',
2148 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002149 include_directories : includes,
2150 link_with : [libshared],
2151 install_rpath : rootlibexecdir,
2152 install : true,
2153 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002154endif
2155
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002156if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002157 executable('systemd-random-seed',
2158 'src/random-seed/random-seed.c',
2159 include_directories : includes,
2160 link_with : [libshared],
2161 install_rpath : rootlibexecdir,
2162 install : true,
2163 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002164endif
2165
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002166if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002167 executable('systemd-firstboot',
2168 'src/firstboot/firstboot.c',
2169 include_directories : includes,
2170 link_with : [libshared],
2171 dependencies : [libcrypt],
2172 install_rpath : rootlibexecdir,
2173 install : true,
2174 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002175endif
2176
2177executable('systemd-remount-fs',
2178 'src/remount-fs/remount-fs.c',
2179 'src/core/mount-setup.c',
2180 'src/core/mount-setup.h',
2181 include_directories : includes,
2182 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002183 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002184 install : true,
2185 install_dir : rootlibexecdir)
2186
2187executable('systemd-machine-id-setup',
2188 'src/machine-id-setup/machine-id-setup-main.c',
2189 'src/core/machine-id-setup.c',
2190 'src/core/machine-id-setup.h',
2191 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002192 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002193 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002194 install : true,
2195 install_dir : rootbindir)
2196
2197executable('systemd-fsck',
2198 'src/fsck/fsck.c',
2199 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002200 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002201 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002202 install : true,
2203 install_dir : rootlibexecdir)
2204
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002205executable('systemd-growfs',
2206 'src/partition/growfs.c',
2207 include_directories : includes,
2208 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002209 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002210 install_rpath : rootlibexecdir,
2211 install : true,
2212 install_dir : rootlibexecdir)
2213
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002214executable('systemd-makefs',
2215 'src/partition/makefs.c',
2216 include_directories : includes,
2217 link_with : [libshared],
2218 install_rpath : rootlibexecdir,
2219 install : true,
2220 install_dir : rootlibexecdir)
2221
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002222executable('systemd-sleep',
2223 'src/sleep/sleep.c',
2224 include_directories : includes,
2225 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002226 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002227 install : true,
2228 install_dir : rootlibexecdir)
2229
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002230exe = executable('systemd-sysctl',
2231 'src/sysctl/sysctl.c',
2232 include_directories : includes,
2233 link_with : [libshared],
2234 install_rpath : rootlibexecdir,
2235 install : true,
2236 install_dir : rootlibexecdir)
2237public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002238
2239executable('systemd-ac-power',
2240 'src/ac-power/ac-power.c',
2241 include_directories : includes,
2242 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002243 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002244 install : true,
2245 install_dir : rootlibexecdir)
2246
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002247exe = executable('systemd-detect-virt',
2248 'src/detect-virt/detect-virt.c',
2249 include_directories : includes,
2250 link_with : [libshared],
2251 install_rpath : rootlibexecdir,
2252 install : true)
2253public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002254
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002255exe = executable('systemd-delta',
2256 'src/delta/delta.c',
2257 include_directories : includes,
2258 link_with : [libshared],
2259 install_rpath : rootlibexecdir,
2260 install : true)
2261public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002262
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002263exe = executable('systemd-escape',
2264 'src/escape/escape.c',
2265 include_directories : includes,
2266 link_with : [libshared],
2267 install_rpath : rootlibexecdir,
2268 install : true,
2269 install_dir : rootbindir)
2270public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002271
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002272exe = executable('systemd-notify',
2273 'src/notify/notify.c',
2274 include_directories : includes,
2275 link_with : [libshared],
2276 install_rpath : rootlibexecdir,
2277 install : true,
2278 install_dir : rootbindir)
2279public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002280
2281executable('systemd-volatile-root',
2282 'src/volatile-root/volatile-root.c',
2283 include_directories : includes,
2284 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002285 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002286 install : true,
2287 install_dir : rootlibexecdir)
2288
2289executable('systemd-cgroups-agent',
2290 'src/cgroups-agent/cgroups-agent.c',
2291 include_directories : includes,
2292 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002293 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002294 install : true,
2295 install_dir : rootlibexecdir)
2296
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002297exe = executable('systemd-path',
2298 'src/path/path.c',
2299 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002300 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002301 install_rpath : rootlibexecdir,
2302 install : true)
2303public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002304
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002305exe = executable('systemd-ask-password',
2306 'src/ask-password/ask-password.c',
2307 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002308 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002309 install_rpath : rootlibexecdir,
2310 install : true,
2311 install_dir : rootbindir)
2312public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002313
2314executable('systemd-reply-password',
2315 'src/reply-password/reply-password.c',
2316 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002317 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002318 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002319 install : true,
2320 install_dir : rootlibexecdir)
2321
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002322exe = executable('systemd-tty-ask-password-agent',
2323 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2324 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002325 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002326 install_rpath : rootlibexecdir,
2327 install : true,
2328 install_dir : rootbindir)
2329public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002330
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002331exe = executable('systemd-cgls',
2332 'src/cgls/cgls.c',
2333 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002334 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002335 install_rpath : rootlibexecdir,
2336 install : true)
2337public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002338
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002339exe = executable('systemd-cgtop',
2340 'src/cgtop/cgtop.c',
2341 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002342 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002343 install_rpath : rootlibexecdir,
2344 install : true)
2345public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002346
2347executable('systemd-initctl',
2348 'src/initctl/initctl.c',
2349 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002350 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002351 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002352 install : true,
2353 install_dir : rootlibexecdir)
2354
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002355exe = executable('systemd-mount',
2356 'src/mount/mount-tool.c',
2357 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002358 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002359 install_rpath : rootlibexecdir,
2360 install : true)
2361public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002362
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002363meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002364 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002365
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002366exe = executable('systemd-run',
2367 'src/run/run.c',
2368 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002369 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002370 install_rpath : rootlibexecdir,
2371 install : true)
2372public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002373
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002374exe = executable('systemd-stdio-bridge',
2375 'src/stdio-bridge/stdio-bridge.c',
2376 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002377 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002378 install_rpath : rootlibexecdir,
2379 install : true)
2380public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002381
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002382exe = executable('busctl',
2383 'src/busctl/busctl.c',
2384 'src/busctl/busctl-introspect.c',
2385 'src/busctl/busctl-introspect.h',
2386 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002387 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002388 install_rpath : rootlibexecdir,
2389 install : true)
2390public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002391
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002392if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002393 exe = executable('systemd-sysusers',
2394 'src/sysusers/sysusers.c',
2395 include_directories : includes,
2396 link_with : [libshared],
2397 install_rpath : rootlibexecdir,
2398 install : true,
2399 install_dir : rootbindir)
2400 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002401endif
2402
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002403if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002404 exe = executable('systemd-tmpfiles',
2405 'src/tmpfiles/tmpfiles.c',
2406 include_directories : includes,
2407 link_with : [libshared],
2408 dependencies : [libacl],
2409 install_rpath : rootlibexecdir,
2410 install : true,
2411 install_dir : rootbindir)
2412 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002413
2414 test('test-systemd-tmpfiles',
2415 test_systemd_tmpfiles_py,
2416 args : exe.full_path())
2417 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002418endif
2419
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002420if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002421 exe = executable('systemd-hwdb',
2422 'src/hwdb/hwdb.c',
2423 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2424 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002425 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002426 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002427 install : true,
2428 install_dir : rootbindir)
2429 public_programs += [exe]
2430endif
2431
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002432if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002433 executable('systemd-quotacheck',
2434 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002435 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002436 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002437 install_rpath : rootlibexecdir,
2438 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002439 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002440endif
2441
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002442exe = executable('systemd-socket-proxyd',
2443 'src/socket-proxy/socket-proxyd.c',
2444 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002445 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002446 dependencies : [threads],
2447 install_rpath : rootlibexecdir,
2448 install : true,
2449 install_dir : rootlibexecdir)
2450public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002451
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002452exe = executable('systemd-udevd',
2453 systemd_udevd_sources,
2454 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002455 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002456 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002457 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002458 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002459 dependencies : [threads,
2460 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002461 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002462 libacl,
2463 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002464 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002465 install : true,
2466 install_dir : rootlibexecdir)
2467public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002468
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002469exe = executable('udevadm',
2470 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002471 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002472 include_directories : includes,
2473 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002474 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002475 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002476 dependencies : [threads,
2477 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002478 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002479 libacl,
2480 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002481 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002482 install : true,
2483 install_dir : rootbindir)
2484public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002485
2486executable('systemd-shutdown',
2487 systemd_shutdown_sources,
2488 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002489 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002490 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002491 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002492 install : true,
2493 install_dir : rootlibexecdir)
2494
2495executable('systemd-update-done',
2496 'src/update-done/update-done.c',
2497 include_directories : includes,
2498 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002499 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002500 install : true,
2501 install_dir : rootlibexecdir)
2502
2503executable('systemd-update-utmp',
2504 'src/update-utmp/update-utmp.c',
2505 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002506 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002507 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002508 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002509 install : true,
2510 install_dir : rootlibexecdir)
2511
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002512if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002513 executable('systemd-modules-load',
2514 'src/modules-load/modules-load.c',
2515 include_directories : includes,
2516 link_with : [libshared],
2517 dependencies : [libkmod],
2518 install_rpath : rootlibexecdir,
2519 install : true,
2520 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002521
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002522 meson.add_install_script('sh', '-c',
2523 mkdir_p.format(modulesloaddir))
2524 meson.add_install_script('sh', '-c',
2525 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002526endif
2527
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002528exe = executable('systemd-nspawn',
2529 systemd_nspawn_sources,
2530 'src/core/mount-setup.c', # FIXME: use a variable?
2531 'src/core/mount-setup.h',
2532 'src/core/loopback-setup.c',
2533 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002534 include_directories : includes,
2535 link_with : [libnspawn_core,
2536 libshared],
2537 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002538 install_rpath : rootlibexecdir,
2539 install : true)
2540public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002541
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002542if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002543 executable('systemd-networkd',
2544 systemd_networkd_sources,
2545 include_directories : includes,
2546 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002547 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002548 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002549 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002550 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002551 install_rpath : rootlibexecdir,
2552 install : true,
2553 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002554
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002555 executable('systemd-networkd-wait-online',
2556 systemd_networkd_wait_online_sources,
2557 include_directories : includes,
2558 link_with : [libnetworkd_core,
2559 libshared],
2560 install_rpath : rootlibexecdir,
2561 install : true,
2562 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002563
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002564 exe = executable('networkctl',
2565 networkctl_sources,
2566 include_directories : includes,
2567 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002568 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002569 install_rpath : rootlibexecdir,
2570 install : true,
2571 install_dir : rootbindir)
2572 public_programs += [exe]
2573endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002574
2575executable('systemd-sulogin-shell',
2576 ['src/sulogin-shell/sulogin-shell.c'],
2577 include_directories : includes,
2578 link_with : [libshared],
2579 install_rpath : rootlibexecdir,
2580 install : true,
2581 install_dir : rootlibexecdir)
2582
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002583############################################################
2584
2585foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002586 sources = tuple[0]
2587 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2588 dependencies = tuple[2]
2589 condition = tuple.length() >= 4 ? tuple[3] : ''
2590 type = tuple.length() >= 5 ? tuple[4] : ''
2591 defs = tuple.length() >= 6 ? tuple[5] : []
2592 incs = tuple.length() >= 7 ? tuple[6] : includes
2593 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002594
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002595 name = sources[0].split('/')[-1].split('.')[0]
2596 if type.startswith('timeout=')
2597 timeout = type.split('=')[1].to_int()
2598 type = ''
2599 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002600 if want_tests == 'false'
2601 message('Not compiling @0@ because tests is set to false'.format(name))
2602 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002603 exe = executable(
2604 name,
2605 sources,
2606 include_directories : incs,
2607 link_with : link_with,
2608 dependencies : dependencies,
2609 c_args : defs,
2610 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002611 install : install_tests,
2612 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002613
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002614 if type == 'manual'
2615 message('@0@ is a manual test'.format(name))
2616 elif type == 'unsafe' and want_tests != 'unsafe'
2617 message('@0@ is an unsafe test'.format(name))
2618 else
2619 test(name, exe,
2620 env : test_env,
2621 timeout : timeout)
2622 endif
2623 else
2624 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2625 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002626endforeach
2627
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002628exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002629 'test-libsystemd-sym',
2630 test_libsystemd_sym_c,
2631 include_directories : includes,
2632 link_with : [libsystemd],
2633 install : install_tests,
2634 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002635test('test-libsystemd-sym', exe)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002636
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002637exe = executable(
2638 'test-libsystemd-static-sym',
2639 test_libsystemd_sym_c,
2640 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002641 link_with : [install_libsystemd_static],
2642 dependencies : [threads], # threads is already included in dependencies on the library,
2643 # but does not seem to get propagated. Add here as a work-around.
Davide Cavalca20f3d322018-04-24 13:34:48 -07002644 build_by_default : static_libsystemd_pic,
2645 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002646 install_dir : testsdir)
Davide Cavalca20f3d322018-04-24 13:34:48 -07002647if static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002648 test('test-libsystemd-static-sym', exe)
2649endif
2650
2651exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002652 'test-libudev-sym',
2653 test_libudev_sym_c,
2654 include_directories : includes,
2655 c_args : ['-Wno-deprecated-declarations'],
2656 link_with : [libudev],
2657 install : install_tests,
2658 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002659test('test-libudev-sym', exe)
2660
2661exe = executable(
2662 'test-libudev-static-sym',
2663 test_libudev_sym_c,
2664 include_directories : includes,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002665 c_args : ['-Wno-deprecated-declarations'],
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002666 link_with : [install_libudev_static],
Davide Cavalca20f3d322018-04-24 13:34:48 -07002667 build_by_default : static_libudev_pic,
2668 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002669 install_dir : testsdir)
Davide Cavalca20f3d322018-04-24 13:34:48 -07002670if static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002671 test('test-libudev-static-sym', exe)
2672endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002673
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002674############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002675
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002676fuzzer_exes = []
2677
2678foreach tuple : fuzzers
2679 sources = tuple[0]
2680 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2681 dependencies = tuple[2]
2682 defs = tuple.length() >= 4 ? tuple[3] : []
2683 incs = tuple.length() >= 5 ? tuple[4] : includes
2684
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002685 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002686 dependencies += fuzzing_engine
2687 else
2688 sources += 'src/fuzz/fuzz-main.c'
2689 endif
2690
2691 name = sources[0].split('/')[-1].split('.')[0]
2692
2693 fuzzer_exes += executable(
2694 name,
2695 sources,
2696 include_directories : [incs, include_directories('src/fuzz')],
2697 link_with : link_with,
2698 dependencies : dependencies,
2699 c_args : defs,
2700 install : false)
2701endforeach
2702
2703run_target('fuzzers',
2704 depends : fuzzer_exes,
2705 command : ['true'])
2706
2707############################################################
2708
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002709make_directive_index_py = find_program('tools/make-directive-index.py')
2710make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002711xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002712hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002713
2714subdir('units')
2715subdir('sysctl.d')
2716subdir('sysusers.d')
2717subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002718subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002719subdir('hwdb')
2720subdir('network')
2721subdir('man')
2722subdir('shell-completion/bash')
2723subdir('shell-completion/zsh')
Lennart Poettering2d684e62018-03-28 16:58:37 +02002724subdir('doc/sysvinit')
2725subdir('doc/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002726
2727# FIXME: figure out if the warning is true:
2728# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2729install_subdir('factory/etc',
2730 install_dir : factorydir)
2731
2732
2733install_data('xorg/50-systemd-user.sh',
2734 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002735install_data('modprobe.d/systemd.conf',
2736 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002737install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002738 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002739 'NEWS',
2740 'README',
2741 'doc/CODING_STYLE',
2742 'doc/DISTRO_PORTING',
2743 'doc/ENVIRONMENT.md',
2744 'doc/HACKING',
2745 'doc/TRANSIENT-SETTINGS.md',
2746 'doc/TRANSLATORS',
2747 'doc/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002748 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2749 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002750
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002751meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2752meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2753
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002754############################################################
2755
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002756meson_check_help = find_program('tools/meson-check-help.sh')
2757
2758foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002759 name = exec.full_path().split('/')[-1]
2760 test('check-help-' + name,
2761 meson_check_help,
2762 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002763endforeach
2764
2765############################################################
2766
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002767# Enable tests for all supported sanitizers
2768foreach tuple : sanitizers
2769 sanitizer = tuple[0]
2770 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002771
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002772 have = run_command(check_compilation_sh,
2773 cc.cmd_array(), '-x', 'c',
2774 '-fsanitize=@0@'.format(sanitizer),
2775 '-include', link_test_c).returncode() == 0
2776 message('@0@ sanitizer supported: @1@'.format(sanitizer, have ? 'yes' : 'no'))
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002777
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002778 if have
2779 prev = ''
2780 foreach p : fuzz_regression_tests
2781 b = p.split('/')[-2]
2782 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002783
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002784 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002785
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002786 if name != prev
2787 if want_tests == 'false'
2788 message('Not compiling @0@ because tests is set to false'.format(name))
2789 elif slow_tests
2790 exe = custom_target(
2791 name,
2792 output : name,
2793 depends : build,
2794 command : [env, 'ln', '-fs',
2795 join_paths(build.full_path(), b),
2796 '@OUTPUT@'],
2797 build_by_default : true)
2798 else
2799 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2800 endif
2801 endif
2802 prev = name
2803
2804 if want_tests != 'false' and slow_tests
2805 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2806 env,
2807 args : [exe.full_path(),
2808 join_paths(meson.source_root(),
2809 'test/fuzz-regressions',
2810 p)])
2811 endif
2812 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002813 endif
2814endforeach
2815
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002816
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002817############################################################
2818
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002819if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002820 all_files = run_command(
2821 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002822 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002823 'ls-files',
2824 ':/*.[ch]'])
2825 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002826
userwithuide85a6902017-08-09 13:41:44 +00002827 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002828 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002829 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002830 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00002831 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002832 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002833 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002834endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002835
2836if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002837 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002838 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002839 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002840 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002841endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002842
2843if git.found()
2844 git_head = run_command(
2845 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002846 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002847 'rev-parse', 'HEAD']).stdout().strip()
2848 git_head_short = run_command(
2849 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002850 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002851 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2852
2853 run_target(
2854 'git-snapshot',
2855 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002856 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002857 git_head_short),
2858 '--prefix', 'systemd-@0@/'.format(git_head),
2859 'HEAD'])
2860endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002861
2862############################################################
2863
Lennart Poettering51b13862017-12-20 12:51:14 +01002864meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2865run_target(
2866 'check-api-docs',
2867 depends : [man, libsystemd, libudev],
2868 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2869
2870############################################################
2871
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002872status = [
2873 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2874
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002875 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002876 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002877 'prefix directory: @0@'.format(prefixdir),
2878 'rootprefix directory: @0@'.format(rootprefixdir),
2879 'sysconf directory: @0@'.format(sysconfdir),
2880 'include directory: @0@'.format(includedir),
2881 'lib directory: @0@'.format(libdir),
2882 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002883 'SysV init scripts: @0@'.format(sysvinit_path),
2884 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002885 'PAM modules directory: @0@'.format(pamlibdir),
2886 'PAM configuration directory: @0@'.format(pamconfdir),
2887 'RPM macros directory: @0@'.format(rpmmacrosdir),
2888 'modprobe.d directory: @0@'.format(modprobedir),
2889 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2890 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2891 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2892 'bash completions directory: @0@'.format(bashcompletiondir),
2893 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002894 'extra start script: @0@'.format(get_option('rc-local')),
2895 'extra stop script: @0@'.format(get_option('halt-local')),
2896 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2897 get_option('debug-tty')),
2898 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002899 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002900 'maximum system UID: @0@'.format(system_uid_max),
2901 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002902 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2903 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2904 'minimum container UID base: @0@'.format(container_uid_base_min),
2905 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002906 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002907 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002908 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002909 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002910 'nobody user name: @0@'.format(nobody_user),
2911 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002912 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002913 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002914
2915 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02002916 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002917 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2918 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2919
2920alt_dns_servers = '\n '.join(dns_servers.split(' '))
2921alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2922status += [
2923 'default DNS servers: @0@'.format(alt_dns_servers),
2924 'default NTP servers: @0@'.format(alt_ntp_servers)]
2925
2926alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2927 '@@0@'.format(time_epoch)).stdout().strip()
2928status += [
2929 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2930
2931# TODO:
2932# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2933# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2934# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2935
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002936if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002937 status += [
2938 'efi arch: @0@'.format(efi_arch)]
2939
2940 if have_gnu_efi
2941 status += [
2942 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2943 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002944 'EFI lib directory: @0@'.format(efi_libdir),
2945 'EFI lds directory: @0@'.format(efi_ldsdir),
2946 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002947 endif
2948endif
2949
2950found = []
2951missing = []
2952
2953foreach tuple : [
2954 ['libcryptsetup'],
2955 ['PAM'],
2956 ['AUDIT'],
2957 ['IMA'],
2958 ['AppArmor'],
2959 ['SELinux'],
2960 ['SECCOMP'],
2961 ['SMACK'],
2962 ['zlib'],
2963 ['xz'],
2964 ['lz4'],
2965 ['bzip2'],
2966 ['ACL'],
2967 ['gcrypt'],
2968 ['qrencode'],
2969 ['microhttpd'],
2970 ['gnutls'],
2971 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002972 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002973 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002974 ['libidn'],
2975 ['libiptc'],
2976 ['elfutils'],
2977 ['binfmt'],
2978 ['vconsole'],
2979 ['quotacheck'],
2980 ['tmpfiles'],
2981 ['environment.d'],
2982 ['sysusers'],
2983 ['firstboot'],
2984 ['randomseed'],
2985 ['backlight'],
2986 ['rfkill'],
2987 ['logind'],
2988 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02002989 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002990 ['importd'],
2991 ['hostnamed'],
2992 ['timedated'],
2993 ['timesyncd'],
2994 ['localed'],
2995 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002996 ['resolve'],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09002997 ['DNS-over-TLS'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002998 ['coredump'],
2999 ['polkit'],
3000 ['legacy pkla', install_polkit_pkla],
3001 ['efi'],
3002 ['gnu-efi', have_gnu_efi],
3003 ['kmod'],
3004 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003005 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003006 ['blkid'],
3007 ['dbus'],
3008 ['glib'],
Yu Watanabe08540a92018-07-18 09:25:57 +09003009 ['nss-myhostname', conf.get('ENABLE_NSS_MYHOSTNAME') == 1],
3010 ['nss-mymachines', conf.get('ENABLE_NSS_MYMACHINES') == 1],
3011 ['nss-resolve', conf.get('ENABLE_NSS_RESOLVE') == 1],
3012 ['nss-systemd', conf.get('ENABLE_NSS_SYSTEMD') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003013 ['hwdb'],
3014 ['tpm'],
3015 ['man pages', want_man],
3016 ['html pages', want_html],
3017 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003018 ['SysV compat'],
3019 ['utmp'],
3020 ['ldconfig'],
3021 ['hibernate'],
3022 ['adm group', get_option('adm-group')],
3023 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003024 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003025 ['debug hashmap'],
3026 ['debug mmap cache'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003027 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003028]
3029
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003030 if tuple.length() >= 2
3031 cond = tuple[1]
3032 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003033 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3034 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003035 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003036 endif
3037 if cond
3038 found += [tuple[0]]
3039 else
3040 missing += [tuple[0]]
3041 endif
3042endforeach
3043
3044status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003045 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003046 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003047 '',
3048 'disabled features: @0@'.format(', '.join(missing)),
3049 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003050message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003051
3052if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003053 warning('\n' +
3054 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3055 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3056 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003057endif