blob: 437c71a3b2c7529dc9df0e89b72c07651d447666 [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 Watanabe7a6397d2018-05-15 20:18:24 +090012 meson_version : '>= 0.46',
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')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900365add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900366
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400367# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
Zbigniew Jędrzejewski-Szmekd40f5cc2018-06-07 15:08:02 +0200368# arguments, just emits a warning. So test for the "positive" version instead.
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400369foreach arg : ['unused-parameter',
370 'missing-field-initializers',
371 'unused-result',
Zbigniew Jędrzejewski-Szmekfb1b5882017-09-04 19:49:12 +0300372 'format-signedness',
373 'error=nonnull', # work-around for gcc 7.1 turning this on on its own
374 ]
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400375 if cc.has_argument('-W' + arg)
376 add_project_arguments('-Wno-' + arg, language : 'c')
377 endif
378endforeach
379
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800380if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400381 #include <time.h>
382 #include <inttypes.h>
383 typedef uint64_t usec_t;
384 usec_t now(clockid_t clock);
385 int main(void) {
386 struct timespec now;
387 return 0;
388 }
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800389''', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400390 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400391endif
392
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400393cpp = ' '.join(cc.cmd_array()) + ' -E'
394
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400395#####################################################################
396# compilation result tests
397
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400398conf.set('_GNU_SOURCE', true)
399conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400400
401conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
402conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
403conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
404conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
405conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
406conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
407conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
408
409decl_headers = '''
410#include <uchar.h>
411#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000412#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100413#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400414'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400415
416foreach decl : ['char16_t',
417 'char32_t',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400418 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000419 'struct fib_rule_uid_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100420 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400421 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400422
423 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200424 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
425
426 if decl == 'struct statx'
427 if have
428 want_linux_stat_h = false
429 else
430 have = cc.sizeof(decl,
431 prefix : decl_headers + '#include <linux/stat.h>',
432 args : '-D_GNU_SOURCE') > 0
433 want_linux_stat_h = have
434 endif
435 endif
436
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200437 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400438endforeach
439
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200440conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700441
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400442foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
443 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
444 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
445 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530446 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400447 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
448 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
449 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
450 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
451 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530452 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400453 # if_tunnel.h is buggy and cannot be included on its own
454 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
455 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
456 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
457 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
458 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
459 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
460 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530461 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400462 ['NDA_IFINDEX', 'linux/neighbour.h'],
463 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000464 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400465 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530466 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400467 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400468 prefix = decl.length() > 2 ? decl[2] : ''
469 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200470 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400471endforeach
472
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400473foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200474 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400475endforeach
476
477foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100478 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100479 ['gettid', '''#include <sys/types.h>
480 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100481 ['pivot_root', '''#include <stdlib.h>
482 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100483 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400484 #include <sys/stat.h>
485 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100486 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100487 ['renameat2', '''#include <stdio.h>
488 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400489 ['kcmp', '''#include <linux/kcmp.h>'''],
490 ['keyctl', '''#include <sys/types.h>
491 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100492 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400493 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200494 ['bpf', '''#include <sys/syscall.h>
495 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100496 ['statx', '''#include <sys/types.h>
497 #include <sys/stat.h>
498 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100499 ['explicit_bzero' , '''#include <string.h>'''],
500 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400501]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400502
Lennart Poettering85db59b2017-12-25 12:01:14 +0100503 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200504 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400505endforeach
506
Lennart Poettering85db59b2017-12-25 12:01:14 +0100507if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200508 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200509 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400510else
511 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200512 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200513 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400514endif
515
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400516#####################################################################
517
518sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400519awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400520m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400521stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400522git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100523env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100524perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400525
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400526meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400527mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400528test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
529splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400530
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400531# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
532# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500533progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400534 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400535 ['kmod', '/usr/bin/kmod' ],
536 ['kexec', '/usr/sbin/kexec' ],
537 ['sulogin', '/usr/sbin/sulogin' ],
538 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
539 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
540 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
541 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
542 ]
543foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400544 path = get_option(prog[0] + '-path')
545 if path != ''
546 message('Using @1@ for @0@'.format(prog[0], path))
547 else
548 exe = find_program(prog[0],
549 '/usr/sbin/' + prog[0],
550 '/sbin/' + prog[0],
551 required: false)
552 path = exe.found() ? exe.path() : prog[1]
553 endif
554 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
555 conf.set_quoted(name, path)
556 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400557endforeach
558
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500559conf.set_quoted('TELINIT', get_option('telinit-path'))
560
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400561if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100562 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400563endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400564
565############################################################
566
567gperf = find_program('gperf')
568
569gperf_test_format = '''
570#include <string.h>
571const char * in_word_set(const char *, @0@);
572@1@
573'''
574gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
575gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
576gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
577if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400578 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400579else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400580 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
581 if cc.compiles(gperf_test)
582 gperf_len_type = 'unsigned'
583 else
584 error('unable to determine gperf len type')
585 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400586endif
587message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400588conf.set('GPERF_LEN_TYPE', gperf_len_type,
589 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400590
591############################################################
592
593if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400594 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400595endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100596foreach header : ['crypt.h',
597 'linux/btrfs.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400598 'linux/memfd.h',
599 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200600 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400601 'valgrind/memcheck.h',
602 'valgrind/valgrind.h',
603 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400604
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200605 conf.set10('HAVE_' + header.underscorify().to_upper(),
606 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400607endforeach
608
609############################################################
610
611conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400612conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
613gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400614
615default_hierarchy = get_option('default-hierarchy')
616conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
617 description : 'default cgroup hierarchy as string')
618if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400619 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400620elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400621 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400622else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400623 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400624endif
625
626time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900627if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400628 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900629 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400630endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400631conf.set('TIME_EPOCH', time_epoch)
632
633system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900634if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400635 system_uid_max = run_command(
636 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800637 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
638 '/etc/login.defs').stdout().strip()
639 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900640 system_uid_max = 999
641 else
642 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800643 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400644endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400645conf.set('SYSTEM_UID_MAX', system_uid_max)
646substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400647
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400648system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900649if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400650 system_gid_max = run_command(
651 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800652 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
653 '/etc/login.defs').stdout().strip()
654 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900655 system_gid_max = 999
656 else
657 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800658 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400659endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400660conf.set('SYSTEM_GID_MAX', system_gid_max)
661substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400662
Yu Watanabeac093402018-05-10 16:04:16 +0900663dynamic_uid_min = get_option('dynamic-uid-min')
664dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100665conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
666conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
667substs.set('dynamicuidmin', dynamic_uid_min)
668substs.set('dynamicuidmax', dynamic_uid_max)
669
Yu Watanabeac093402018-05-10 16:04:16 +0900670container_uid_base_min = get_option('container-uid-base-min')
671container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100672conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
673conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
674substs.set('containeruidbasemin', container_uid_base_min)
675substs.set('containeruidbasemax', container_uid_base_max)
676
Lennart Poetteringafde4572017-12-05 11:00:24 +0100677nobody_user = get_option('nobody-user')
678nobody_group = get_option('nobody-group')
679
Chen Qi2484bff2018-07-23 14:53:09 +0800680if not meson.is_cross_build()
681 getent_result = run_command('getent', 'passwd', '65534')
682 if getent_result.returncode() == 0
683 name = getent_result.stdout().split(':')[0]
684 if name != nobody_user
685 warning('\n' +
686 '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) +
687 'Your build will result in an user table setup that is incompatible with the local system.')
688 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100689 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800690 id_result = run_command('id', '-u', nobody_user)
691 if id_result.returncode() == 0
692 id = id_result.stdout().to_int()
693 if id != 65534
694 warning('\n' +
695 '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) +
696 'Your build will result in an user table setup that is incompatible with the local system.')
697 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100698 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100699
Chen Qi2484bff2018-07-23 14:53:09 +0800700 getent_result = run_command('getent', 'group', '65534')
701 if getent_result.returncode() == 0
702 name = getent_result.stdout().split(':')[0]
703 if name != nobody_group
704 warning('\n' +
705 '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) +
706 'Your build will result in an group table setup that is incompatible with the local system.')
707 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100708 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800709 id_result = run_command('id', '-g', nobody_group)
710 if id_result.returncode() == 0
711 id = id_result.stdout().to_int()
712 if id != 65534
713 warning('\n' +
714 '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) +
715 'Your build will result in an group table setup that is incompatible with the local system.')
716 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100717 endif
718endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900719if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900720 warning('\n' +
721 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
722 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900723endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100724
725conf.set_quoted('NOBODY_USER_NAME', nobody_user)
726conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900727substs.set('NOBODY_USER_NAME', nobody_user)
728substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100729
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400730tty_gid = get_option('tty-gid')
731conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400732substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400733
Ikey Doherty84786b82017-12-03 12:28:23 +0000734# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900735users_gid = get_option('users-gid')
736substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000737
Yu Watanabe348b4432018-05-07 18:17:35 +0900738conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
739conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400740
741substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700742substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400743
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400744kill_user_processes = get_option('default-kill-user-processes')
745conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100746conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400747substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400748
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400749dns_servers = get_option('dns-servers')
750conf.set_quoted('DNS_SERVERS', dns_servers)
751substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400752
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400753ntp_servers = get_option('ntp-servers')
754conf.set_quoted('NTP_SERVERS', ntp_servers)
755substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400756
757conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
758
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400759substs.set('SUSHELL', get_option('debug-shell'))
760substs.set('DEBUGTTY', get_option('debug-tty'))
761
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200762enable_debug_hashmap = false
763enable_debug_mmap_cache = false
Yu Watanabead7aa762018-05-02 13:56:28 +0900764foreach name : get_option('debug')
765 if name == 'hashmap'
766 enable_debug_hashmap = true
767 elif name == 'mmap-cache'
768 enable_debug_mmap_cache = true
769 else
770 message('unknown debug option "@0@", ignoring'.format(name))
771 endif
772endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200773conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
774conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400775
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200776conf.set10('VALGRIND', get_option('valgrind'))
777
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400778#####################################################################
779
780threads = dependency('threads')
781librt = cc.find_library('rt')
782libm = cc.find_library('m')
783libdl = cc.find_library('dl')
784libcrypt = cc.find_library('crypt')
785
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400786libcap = dependency('libcap', required : false)
787if not libcap.found()
788 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
789 libcap = cc.find_library('cap')
790endif
791
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400792libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100793 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400794
795want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500796if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400797 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400798 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400799 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200800 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400801else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200802 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400803 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400804endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200805conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400806
807want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500808if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400809 libselinux = dependency('libselinux',
810 version : '>= 2.1.9',
811 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200812 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400813else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200814 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400815 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400816endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200817conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400818
819want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500820if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400821 libapparmor = dependency('libapparmor',
822 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200823 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400824else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200825 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400826 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400827endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200828conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400829
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400830smack_run_label = get_option('smack-run-label')
831if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400832 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400833endif
834
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400835want_polkit = get_option('polkit')
836install_polkit = false
837install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500838if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400839 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400840
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400841 libpolkit = dependency('polkit-gobject-1',
842 required : false)
843 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
844 message('Old polkit detected, will install pkla files')
845 install_polkit_pkla = true
846 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400847endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200848conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400849
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400850want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500851if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400852 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200853 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400854else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200855 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400856 libacl = []
857endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200858conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400859
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400860want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500861if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400862 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200863 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400864else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200865 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400866 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400867endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200868conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400869
870want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500871if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400872 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200873 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400874else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200875 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400876 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400877endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200878conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400879
880want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500881if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400882 libkmod = dependency('libkmod',
883 version : '>= 15',
884 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200885 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400886else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200887 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400888 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400889endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200890conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400891
892want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500893if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400894 libpam = cc.find_library('pam', required : want_pam == 'true')
895 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200896 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400897else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200898 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400899 libpam = []
900 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400901endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200902conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400903
904want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500905if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400906 libmicrohttpd = dependency('libmicrohttpd',
907 version : '>= 0.9.33',
908 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200909 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400910else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200911 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400912 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400913endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200914conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400915
916want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500917if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400918 libcryptsetup = dependency('libcryptsetup',
919 version : '>= 1.6.0',
920 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200921 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400922else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200923 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400924 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400925endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200926conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400927
928want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500929if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400930 libcurl = dependency('libcurl',
931 version : '>= 7.32.0',
932 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200933 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400934else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200935 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400936 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400937endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200938conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400939
940want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400941want_libidn2 = get_option('libidn2')
942if want_libidn == 'true' and want_libidn2 == 'true'
943 error('libidn and libidn2 cannot be requested simultaneously')
944endif
945
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500946if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400947 libidn = dependency('libidn',
948 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200949 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400950else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200951 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400952 libidn = []
953endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200954conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500955if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400956 # libidn is used for both libidn and libidn2 objects
957 libidn = dependency('libidn2',
958 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200959 have = libidn.found()
960else
961 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400962endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200963conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400964
965want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500966if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400967 libiptc = dependency('libiptc',
968 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200969 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400970else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200971 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400972 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400973endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200974conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400975
976want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500977if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400978 libqrencode = dependency('libqrencode',
979 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200980 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400981else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200982 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400983 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400984endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200985conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400986
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400987want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500988if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400989 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
990 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200991 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400992else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200993 have = false
994endif
995if not have
996 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400997 libgcrypt = []
998 libgpg_error = []
999endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001000conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001001
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001002want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001003if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001004 libgnutls = dependency('gnutls',
1005 version : '>= 3.1.4',
1006 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001007 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001008else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001009 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001010 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001011endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001012conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001013
1014want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001015if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001016 libdw = dependency('libdw',
1017 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001018 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001019else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001020 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001021 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001022endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001023conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001024
1025want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001026if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001027 libz = dependency('zlib',
1028 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001029 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001030else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001031 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001032 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001033endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001034conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001035
1036want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001037if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001038 libbzip2 = cc.find_library('bz2',
1039 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001040 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001041else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001042 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001043 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001044endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001045conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001046
1047want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001048if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001049 libxz = dependency('liblzma',
1050 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001051 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001052else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001053 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001054 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001055endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001056conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001057
1058want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001059if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001060 liblz4 = dependency('liblz4',
1061 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001062 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001063else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001064 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001065 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001066endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001067conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001068
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001069want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001070if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001071 libxkbcommon = dependency('xkbcommon',
1072 version : '>= 0.3.0',
1073 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001074 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001075else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001076 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001077 libxkbcommon = []
1078endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001079conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001080
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001081want_pcre2 = get_option('pcre2')
1082if want_pcre2 != 'false'
1083 libpcre2 = dependency('libpcre2-8',
1084 required : want_pcre2 == 'true')
1085 have = libpcre2.found()
1086else
1087 have = false
1088 libpcre2 = []
1089endif
1090conf.set10('HAVE_PCRE2', have)
1091
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001092want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001093if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001094 libglib = dependency('glib-2.0',
1095 version : '>= 2.22.0',
1096 required : want_glib == 'true')
1097 libgobject = dependency('gobject-2.0',
1098 version : '>= 2.22.0',
1099 required : want_glib == 'true')
1100 libgio = dependency('gio-2.0',
1101 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001102 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001103else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001104 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001105 libglib = []
1106 libgobject = []
1107 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001108endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001109conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001110
1111want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001112if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001113 libdbus = dependency('dbus-1',
1114 version : '>= 1.3.2',
1115 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001116 have = libdbus.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 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001120endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001121conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001122
Yu Watanabe42303dc2017-06-18 05:22:32 +09001123default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001124if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001125 default_dnssec = 'no'
1126endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001127if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001128 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1129 default_dnssec = 'no'
1130endif
1131conf.set('DEFAULT_DNSSEC_MODE',
1132 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1133substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1134
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001135dns_over_tls = get_option('dns-over-tls')
1136if dns_over_tls != 'false'
Yu Watanabe48f5da12018-06-28 16:09:04 +09001137 have = (conf.get('HAVE_GNUTLS') == 1 and
1138 libgnutls.version().version_compare('>=3.5.3'))
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001139 if dns_over_tls == 'true' and not have
1140 error('DNS-over-TLS support was requested, but dependencies are not available')
1141 endif
1142else
1143 have = false
1144endif
1145conf.set10('ENABLE_DNS_OVER_TLS', have)
1146
Iwan Timmerc9299be2018-06-13 20:26:24 +02001147default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001148if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001149 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001150endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001151if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1152 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 +02001153 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001154endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001155conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1156 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1157substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001158
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001159want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001160if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001161 have = (conf.get('HAVE_LIBCURL') == 1 and
1162 conf.get('HAVE_ZLIB') == 1 and
1163 conf.get('HAVE_BZIP2') == 1 and
1164 conf.get('HAVE_XZ') == 1 and
1165 conf.get('HAVE_GCRYPT') == 1)
1166 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001167 error('importd support was requested, but dependencies are not available')
1168 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001169else
1170 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001171endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001172conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001173
1174want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001175if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001176 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1177 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001178 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1179 # it's possible to build one without the other. Complain only if
1180 # support was explictly requested. The auxiliary files like sysusers
1181 # config should be installed when any of the programs are built.
1182 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1183 error('remote support was requested, but dependencies are not available')
1184 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001185 have = have_deps[0] or have_deps[1]
1186else
1187 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001188endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001189conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001190
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001191foreach term : ['utmp',
1192 'hibernate',
1193 'environment-d',
1194 'binfmt',
1195 'coredump',
1196 'resolve',
1197 'logind',
1198 'hostnamed',
1199 'localed',
1200 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001201 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001202 'networkd',
1203 'timedated',
1204 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001205 'firstboot',
1206 'randomseed',
1207 'backlight',
1208 'vconsole',
1209 'quotacheck',
1210 'sysusers',
1211 'tmpfiles',
1212 'hwdb',
1213 'rfkill',
1214 'ldconfig',
1215 'efi',
1216 'tpm',
1217 'ima',
1218 'smack',
1219 'gshadow',
1220 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001221 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001222 'nss-systemd']
1223 have = get_option(term)
1224 name = 'ENABLE_' + term.underscorify().to_upper()
1225 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001226endforeach
1227
Yu Watanabe08540a92018-07-18 09:25:57 +09001228foreach tuple : [['nss-mymachines', 'machined'],
1229 ['nss-resolve', 'resolve']]
1230 want = get_option(tuple[0])
1231 if want != 'false'
1232 have = get_option(tuple[1])
1233 if want == 'true' and not have
1234 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1235 endif
1236 else
1237 have = false
1238 endif
1239 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1240 conf.set10(name, have)
1241endforeach
1242
1243enable_nss = false
1244foreach term : ['ENABLE_NSS_MYHOSTNAME',
1245 'ENABLE_NSS_MYMACHINES',
1246 'ENABLE_NSS_RESOLVE',
1247 'ENABLE_NSS_SYSTEMD']
1248 if conf.get(term) == 1
1249 enable_nss = true
1250 endif
1251endforeach
1252conf.set10('ENABLE_NSS', enable_nss)
1253
Yu Watanabe348b4432018-05-07 18:17:35 +09001254conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001255
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001256want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001257install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001258slow_tests = get_option('slow-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001259tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001260fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001261
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001262conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001263
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001264#####################################################################
1265
1266if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001267 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001268
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001269 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001270 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001271 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001272 elif efi_arch == 'x86_64'
1273 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001274 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001275 elif efi_arch == 'arm'
1276 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001277 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001278 elif efi_arch == 'aarch64'
1279 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001280 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001281 else
1282 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001283 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001284 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001285
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001286 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001287 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001288
Yu Watanabeac093402018-05-10 16:04:16 +09001289 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001290else
1291 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001292endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001293conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001294
1295#####################################################################
1296
1297config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001298 output : 'config.h',
1299 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001300
Yu Watanabe348b4432018-05-07 18:17:35 +09001301meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1302
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001303includes = include_directories('src/basic',
1304 'src/shared',
1305 'src/systemd',
1306 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001307 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001308 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001309 'src/resolve',
1310 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001311 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001312 'src/login',
1313 'src/udev',
1314 'src/libudev',
1315 'src/core',
1316 'src/libsystemd/sd-bus',
1317 'src/libsystemd/sd-device',
1318 'src/libsystemd/sd-hwdb',
1319 'src/libsystemd/sd-id128',
1320 'src/libsystemd/sd-netlink',
1321 'src/libsystemd/sd-network',
1322 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001323 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001324
1325add_project_arguments('-include', 'config.h', language : 'c')
1326
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001327subdir('po')
1328subdir('catalog')
1329subdir('src/systemd')
1330subdir('src/basic')
1331subdir('src/libsystemd')
1332subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001333subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001334subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001335
1336libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001337 'journal-core',
1338 libjournal_core_sources,
1339 journald_gperf_c,
1340 include_directories : includes,
1341 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001342
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001343libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001344libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001345 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001346 '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 +02001347 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001348 include_directories : includes,
1349 link_args : ['-shared',
1350 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001351 link_with : [libbasic,
1352 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001353 link_whole : [libsystemd_static,
1354 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001355 dependencies : [threads,
1356 librt,
1357 libxz,
1358 liblz4],
1359 link_depends : libsystemd_sym,
1360 install : true,
1361 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001362
Davide Cavalca70848ec2018-04-09 02:43:35 -07001363static_libsystemd = get_option('static-libsystemd')
1364static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1365
1366install_libsystemd_static = static_library(
1367 'systemd',
1368 libsystemd_sources,
1369 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001370 basic_sources,
1371 basic_gcrypt_sources,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001372 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001373 build_by_default : static_libsystemd != 'false',
1374 install : static_libsystemd != 'false',
1375 install_dir : rootlibdir,
1376 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1377 dependencies : [threads,
1378 librt,
1379 libxz,
1380 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001381 libcap,
1382 libblkid,
1383 libmount,
1384 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001385 libgcrypt],
1386 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1387
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001388############################################################
1389
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001390# binaries that have --help and are intended for use by humans,
1391# usually, but not always, installed in /bin.
1392public_programs = []
1393
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001394subdir('src/libudev')
1395subdir('src/shared')
1396subdir('src/core')
1397subdir('src/udev')
1398subdir('src/network')
1399
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001400subdir('src/analyze')
1401subdir('src/journal-remote')
1402subdir('src/coredump')
1403subdir('src/hostname')
1404subdir('src/import')
1405subdir('src/kernel-install')
1406subdir('src/locale')
1407subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001408subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001409subdir('src/nspawn')
1410subdir('src/resolve')
1411subdir('src/timedate')
1412subdir('src/timesync')
1413subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001414subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001415
1416subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001417subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001418subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001419subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001420
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001421############################################################
1422
1423# only static linking apart from libdl, to make sure that the
1424# module is linked to all libraries that it uses.
1425test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001426 'test-dlopen',
1427 test_dlopen_c,
1428 include_directories : includes,
1429 link_with : [libbasic],
1430 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001431
Yu Watanabe08540a92018-07-18 09:25:57 +09001432foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001433 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001434 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1435 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001436
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001437 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001438 if condition
1439 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001440
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001441 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1442 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001443
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001444 nss = shared_library(
1445 'nss_' + module,
1446 'src/nss-@0@/nss-@0@.c'.format(module),
1447 version : '2',
1448 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001449 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1450 link_args : ['-Wl,-z,nodelete',
1451 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001452 '-Wl,--version-script=' + version_script_arg,
1453 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001454 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001455 libbasic],
1456 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001457 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001458 link_depends : sym,
1459 install : true,
1460 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001461
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001462 # We cannot use shared_module because it does not support version suffix.
1463 # Unfortunately shared_library insists on creating the symlink…
1464 meson.add_install_script('sh', '-c',
1465 'rm $DESTDIR@0@/libnss_@1@.so'
1466 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001467
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001468 test('dlopen-nss_' + module,
1469 test_dlopen,
1470 args : [nss.full_path()]) # path to dlopen must include a slash
1471 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001472endforeach
1473
1474############################################################
1475
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001476executable('systemd',
1477 systemd_sources,
1478 include_directories : includes,
1479 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001480 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001481 dependencies : [threads,
1482 librt,
1483 libseccomp,
1484 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001485 libmount,
1486 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001487 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001488 install : true,
1489 install_dir : rootlibexecdir)
1490
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001491meson.add_install_script(meson_make_symlink,
1492 join_paths(rootlibexecdir, 'systemd'),
1493 join_paths(rootsbindir, 'init'))
1494
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001495exe = executable('systemd-analyze',
1496 systemd_analyze_sources,
1497 include_directories : includes,
1498 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001499 libshared],
1500 dependencies : [threads,
1501 librt,
1502 libseccomp,
1503 libselinux,
1504 libmount,
1505 libblkid],
1506 install_rpath : rootlibexecdir,
1507 install : true)
1508public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001509
1510executable('systemd-journald',
1511 systemd_journald_sources,
1512 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001513 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001514 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001515 dependencies : [threads,
1516 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001517 liblz4,
1518 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001519 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001520 install : true,
1521 install_dir : rootlibexecdir)
1522
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001523exe = executable('systemd-cat',
1524 systemd_cat_sources,
1525 include_directories : includes,
1526 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001527 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001528 dependencies : [threads],
1529 install_rpath : rootlibexecdir,
1530 install : true)
1531public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001532
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001533exe = executable('journalctl',
1534 journalctl_sources,
1535 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001536 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001537 dependencies : [threads,
1538 libqrencode,
1539 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001540 liblz4,
1541 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001542 install_rpath : rootlibexecdir,
1543 install : true,
1544 install_dir : rootbindir)
1545public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001546
1547executable('systemd-getty-generator',
1548 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001549 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001550 link_with : [libshared],
1551 install_rpath : rootlibexecdir,
1552 install : true,
1553 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001554
1555executable('systemd-debug-generator',
1556 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001557 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001558 link_with : [libshared],
1559 install_rpath : rootlibexecdir,
1560 install : true,
1561 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001562
1563executable('systemd-fstab-generator',
1564 'src/fstab-generator/fstab-generator.c',
1565 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001566 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001567 link_with : [libshared],
1568 install_rpath : rootlibexecdir,
1569 install : true,
1570 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001571
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001572if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001573 executable('30-systemd-environment-d-generator',
1574 'src/environment-d-generator/environment-d-generator.c',
1575 include_directories : includes,
1576 link_with : [libshared],
1577 install_rpath : rootlibexecdir,
1578 install : true,
1579 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001580
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001581 meson.add_install_script(meson_make_symlink,
1582 join_paths(sysconfdir, 'environment'),
1583 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001584endif
1585
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001586if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001587 executable('systemd-hibernate-resume-generator',
1588 'src/hibernate-resume/hibernate-resume-generator.c',
1589 include_directories : includes,
1590 link_with : [libshared],
1591 install_rpath : rootlibexecdir,
1592 install : true,
1593 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001594
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001595 executable('systemd-hibernate-resume',
1596 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001597 include_directories : includes,
1598 link_with : [libshared],
1599 install_rpath : rootlibexecdir,
1600 install : true,
1601 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001602endif
1603
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001604if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001605 executable('systemd-gpt-auto-generator',
1606 'src/gpt-auto-generator/gpt-auto-generator.c',
1607 'src/basic/blkid-util.h',
1608 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001609 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001610 dependencies : libblkid,
1611 install_rpath : rootlibexecdir,
1612 install : true,
1613 install_dir : systemgeneratordir)
1614
1615 exe = executable('systemd-dissect',
1616 'src/dissect/dissect.c',
1617 include_directories : includes,
1618 link_with : [libshared],
1619 install_rpath : rootlibexecdir,
1620 install : true,
1621 install_dir : rootlibexecdir)
1622 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001623endif
1624
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001625if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001626 executable('systemd-resolved',
1627 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001628 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001629 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001630 libbasic_gcrypt,
1631 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001632 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001633 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001634 install : true,
1635 install_dir : rootlibexecdir)
1636
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001637 exe = executable('resolvectl',
1638 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001639 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001640 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001641 libbasic_gcrypt,
1642 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001643 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001644 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001645 libm,
1646 libidn],
1647 install_rpath : rootlibexecdir,
1648 install : true)
1649 public_programs += [exe]
Lennart Poettering088c1362018-02-27 17:48:54 +01001650
1651 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001652 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001653 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001654
1655 meson.add_install_script(meson_make_symlink,
1656 join_paths(bindir, 'resolvectl'),
1657 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001658endif
1659
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001660if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001661 executable('systemd-logind',
1662 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001663 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001664 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001665 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001666 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001667 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001668 install_rpath : rootlibexecdir,
1669 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001670 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001671
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001672 exe = executable('loginctl',
1673 loginctl_sources,
1674 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001675 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001676 dependencies : [threads,
1677 liblz4,
1678 libxz],
1679 install_rpath : rootlibexecdir,
1680 install : true,
1681 install_dir : rootbindir)
1682 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001683
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001684 exe = executable('systemd-inhibit',
1685 'src/login/inhibit.c',
1686 include_directories : includes,
1687 link_with : [libshared],
1688 install_rpath : rootlibexecdir,
1689 install : true,
1690 install_dir : rootbindir)
1691 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001692
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001693 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001694 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1695 pam_systemd = shared_library(
1696 'pam_systemd',
1697 pam_systemd_c,
1698 name_prefix : '',
1699 include_directories : includes,
1700 link_args : ['-shared',
1701 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001702 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001703 libshared_static],
1704 dependencies : [threads,
1705 libpam,
1706 libpam_misc],
1707 link_depends : pam_systemd_sym,
1708 install : true,
1709 install_dir : pamlibdir)
1710
1711 test('dlopen-pam_systemd',
1712 test_dlopen,
1713 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1714 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001715endif
1716
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001717executable('systemd-user-runtime-dir',
1718 user_runtime_dir_sources,
1719 include_directories : includes,
1720 link_with : [libshared, liblogind_core],
1721 install_rpath : rootlibexecdir,
1722 install : true,
1723 install_dir : rootlibexecdir)
1724
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001725if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001726 executable('systemd-user-sessions',
1727 'src/user-sessions/user-sessions.c',
1728 include_directories : includes,
1729 link_with : [libshared],
1730 install_rpath : rootlibexecdir,
1731 install : true,
1732 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001733endif
1734
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001735if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001736 exe = executable('bootctl',
1737 'src/boot/bootctl.c',
1738 include_directories : includes,
1739 link_with : [libshared],
1740 dependencies : [libblkid],
1741 install_rpath : rootlibexecdir,
1742 install : true)
1743 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001744endif
1745
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001746exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1747 include_directories : includes,
1748 link_with : [libshared],
1749 dependencies : [threads],
1750 install_rpath : rootlibexecdir,
1751 install : true)
1752public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001753
Felipe Satelerf3794362018-05-22 15:08:57 -04001754
1755if get_option('link-systemctl-shared')
1756 systemctl_link_with = [libshared]
1757else
1758 systemctl_link_with = [libsystemd_static,
1759 libshared_static,
1760 libjournal_client,
1761 libbasic_gcrypt]
1762endif
1763
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001764exe = executable('systemctl', 'src/systemctl/systemctl.c',
1765 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001766 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001767 dependencies : [threads,
1768 libcap,
1769 libselinux,
1770 libxz,
1771 liblz4],
1772 install_rpath : rootlibexecdir,
1773 install : true,
1774 install_dir : rootbindir)
1775public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001776
Lennart Poettering61d05782018-04-16 21:41:40 +02001777if conf.get('ENABLE_PORTABLED') == 1
1778 executable('systemd-portabled',
1779 systemd_portabled_sources,
1780 include_directories : includes,
1781 link_with : [libshared],
1782 dependencies : [threads],
1783 install_rpath : rootlibexecdir,
1784 install : true,
1785 install_dir : rootlibexecdir)
1786
1787 exe = executable('portablectl', 'src/portable/portablectl.c',
1788 include_directories : includes,
1789 link_with : [libshared],
1790 dependencies : [threads],
1791 install_rpath : rootlibexecdir,
1792 install : true,
1793 install_dir : rootlibexecdir)
1794 public_programs += [exe]
1795endif
1796
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001797foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1798 meson.add_install_script(meson_make_symlink,
1799 join_paths(rootbindir, 'systemctl'),
1800 join_paths(rootsbindir, alias))
1801endforeach
1802
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001803if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001804 executable('systemd-backlight',
1805 'src/backlight/backlight.c',
1806 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001807 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001808 install_rpath : rootlibexecdir,
1809 install : true,
1810 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001811endif
1812
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001813if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001814 executable('systemd-rfkill',
1815 'src/rfkill/rfkill.c',
1816 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001817 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001818 install_rpath : rootlibexecdir,
1819 install : true,
1820 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001821endif
1822
1823executable('systemd-system-update-generator',
1824 'src/system-update-generator/system-update-generator.c',
1825 include_directories : includes,
1826 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001827 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001828 install : true,
1829 install_dir : systemgeneratordir)
1830
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001831if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001832 executable('systemd-cryptsetup',
1833 'src/cryptsetup/cryptsetup.c',
1834 include_directories : includes,
1835 link_with : [libshared],
1836 dependencies : [libcryptsetup],
1837 install_rpath : rootlibexecdir,
1838 install : true,
1839 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001840
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001841 executable('systemd-cryptsetup-generator',
1842 'src/cryptsetup/cryptsetup-generator.c',
1843 include_directories : includes,
1844 link_with : [libshared],
1845 dependencies : [libcryptsetup],
1846 install_rpath : rootlibexecdir,
1847 install : true,
1848 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001849
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001850 executable('systemd-veritysetup',
1851 'src/veritysetup/veritysetup.c',
1852 include_directories : includes,
1853 link_with : [libshared],
1854 dependencies : [libcryptsetup],
1855 install_rpath : rootlibexecdir,
1856 install : true,
1857 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001858
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001859 executable('systemd-veritysetup-generator',
1860 'src/veritysetup/veritysetup-generator.c',
1861 include_directories : includes,
1862 link_with : [libshared],
1863 dependencies : [libcryptsetup],
1864 install_rpath : rootlibexecdir,
1865 install : true,
1866 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001867endif
1868
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001869if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001870 executable('systemd-sysv-generator',
1871 'src/sysv-generator/sysv-generator.c',
1872 include_directories : includes,
1873 link_with : [libshared],
1874 install_rpath : rootlibexecdir,
1875 install : true,
1876 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001877
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001878 executable('systemd-rc-local-generator',
1879 'src/rc-local-generator/rc-local-generator.c',
1880 include_directories : includes,
1881 link_with : [libshared],
1882 install_rpath : rootlibexecdir,
1883 install : true,
1884 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001885endif
1886
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001887if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001888 executable('systemd-hostnamed',
1889 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001890 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001891 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001892 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001893 install : true,
1894 install_dir : rootlibexecdir)
1895
1896 exe = executable('hostnamectl',
1897 'src/hostname/hostnamectl.c',
1898 include_directories : includes,
1899 link_with : [libshared],
1900 install_rpath : rootlibexecdir,
1901 install : true)
1902 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001903endif
1904
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001905if conf.get('ENABLE_LOCALED') == 1
1906 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001907 # logind will load libxkbcommon.so dynamically on its own
1908 deps = [libdl]
1909 else
1910 deps = []
1911 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001912
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001913 executable('systemd-localed',
1914 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001915 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001916 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001917 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001918 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001919 install : true,
1920 install_dir : rootlibexecdir)
1921
1922 exe = executable('localectl',
1923 localectl_sources,
1924 include_directories : includes,
1925 link_with : [libshared],
1926 install_rpath : rootlibexecdir,
1927 install : true)
1928 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001929endif
1930
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001931if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001932 executable('systemd-timedated',
1933 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001934 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001935 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001936 install_rpath : rootlibexecdir,
1937 install : true,
1938 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09001939endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001940
Yu Watanabe6129ec82018-05-03 18:07:43 +09001941if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001942 exe = executable('timedatectl',
1943 'src/timedate/timedatectl.c',
1944 include_directories : includes,
1945 install_rpath : rootlibexecdir,
1946 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09001947 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001948 install : true)
1949 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001950endif
1951
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001952if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001953 executable('systemd-timesyncd',
1954 systemd_timesyncd_sources,
1955 include_directories : includes,
1956 link_with : [libshared],
1957 dependencies : [threads,
1958 libm],
1959 install_rpath : rootlibexecdir,
1960 install : true,
1961 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001962
1963 executable('systemd-time-wait-sync',
1964 'src/time-wait-sync/time-wait-sync.c',
1965 include_directories : includes,
1966 link_with : [libshared],
1967 install_rpath : rootlibexecdir,
1968 install : true,
1969 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001970endif
1971
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001972if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001973 executable('systemd-machined',
1974 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001975 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001976 link_with : [libmachine_core,
1977 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001978 install_rpath : rootlibexecdir,
1979 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001980 install_dir : rootlibexecdir)
1981
1982 exe = executable('machinectl',
1983 'src/machine/machinectl.c',
1984 include_directories : includes,
1985 link_with : [libshared],
1986 dependencies : [threads,
1987 libxz,
1988 liblz4],
1989 install_rpath : rootlibexecdir,
1990 install : true,
1991 install_dir : rootbindir)
1992 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001993endif
1994
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001995if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001996 executable('systemd-importd',
1997 systemd_importd_sources,
1998 include_directories : includes,
1999 link_with : [libshared],
2000 dependencies : [threads],
2001 install_rpath : rootlibexecdir,
2002 install : true,
2003 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002004
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002005 systemd_pull = executable('systemd-pull',
2006 systemd_pull_sources,
2007 include_directories : includes,
2008 link_with : [libshared],
2009 dependencies : [libcurl,
2010 libz,
2011 libbzip2,
2012 libxz,
2013 libgcrypt],
2014 install_rpath : rootlibexecdir,
2015 install : true,
2016 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002017
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002018 systemd_import = executable('systemd-import',
2019 systemd_import_sources,
2020 include_directories : includes,
2021 link_with : [libshared],
2022 dependencies : [libcurl,
2023 libz,
2024 libbzip2,
2025 libxz],
2026 install_rpath : rootlibexecdir,
2027 install : true,
2028 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002029
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002030 systemd_export = executable('systemd-export',
2031 systemd_export_sources,
2032 include_directories : includes,
2033 link_with : [libshared],
2034 dependencies : [libcurl,
2035 libz,
2036 libbzip2,
2037 libxz],
2038 install_rpath : rootlibexecdir,
2039 install : true,
2040 install_dir : rootlibexecdir)
2041 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002042endif
2043
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002044if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002045 exe = executable('systemd-journal-upload',
2046 systemd_journal_upload_sources,
2047 include_directories : includes,
2048 link_with : [libshared],
2049 dependencies : [threads,
2050 libcurl,
2051 libgnutls,
2052 libxz,
2053 liblz4],
2054 install_rpath : rootlibexecdir,
2055 install : true,
2056 install_dir : rootlibexecdir)
2057 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002058endif
2059
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002060if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002061 s_j_remote = executable('systemd-journal-remote',
2062 systemd_journal_remote_sources,
2063 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002064 link_with : [libshared,
2065 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002066 dependencies : [threads,
2067 libmicrohttpd,
2068 libgnutls,
2069 libxz,
2070 liblz4],
2071 install_rpath : rootlibexecdir,
2072 install : true,
2073 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002074
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002075 s_j_gatewayd = executable('systemd-journal-gatewayd',
2076 systemd_journal_gatewayd_sources,
2077 include_directories : includes,
2078 link_with : [libshared],
2079 dependencies : [threads,
2080 libmicrohttpd,
2081 libgnutls,
2082 libxz,
2083 liblz4],
2084 install_rpath : rootlibexecdir,
2085 install : true,
2086 install_dir : rootlibexecdir)
2087 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002088endif
2089
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002090if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002091 executable('systemd-coredump',
2092 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002093 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002094 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002095 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002096 libacl,
2097 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002098 libxz,
2099 liblz4],
2100 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002101 install : true,
2102 install_dir : rootlibexecdir)
2103
2104 exe = executable('coredumpctl',
2105 coredumpctl_sources,
2106 include_directories : includes,
2107 link_with : [libshared],
2108 dependencies : [threads,
2109 libxz,
2110 liblz4],
2111 install_rpath : rootlibexecdir,
2112 install : true)
2113 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002114endif
2115
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002116if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002117 exe = executable('systemd-binfmt',
2118 'src/binfmt/binfmt.c',
2119 include_directories : includes,
2120 link_with : [libshared],
2121 install_rpath : rootlibexecdir,
2122 install : true,
2123 install_dir : rootlibexecdir)
2124 public_programs += [exe]
2125
2126 meson.add_install_script('sh', '-c',
2127 mkdir_p.format(binfmtdir))
2128 meson.add_install_script('sh', '-c',
2129 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2130endif
2131
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002132if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002133 executable('systemd-vconsole-setup',
2134 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002135 include_directories : includes,
2136 link_with : [libshared],
2137 install_rpath : rootlibexecdir,
2138 install : true,
2139 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002140endif
2141
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002142if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002143 executable('systemd-random-seed',
2144 'src/random-seed/random-seed.c',
2145 include_directories : includes,
2146 link_with : [libshared],
2147 install_rpath : rootlibexecdir,
2148 install : true,
2149 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002150endif
2151
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002152if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002153 executable('systemd-firstboot',
2154 'src/firstboot/firstboot.c',
2155 include_directories : includes,
2156 link_with : [libshared],
2157 dependencies : [libcrypt],
2158 install_rpath : rootlibexecdir,
2159 install : true,
2160 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002161endif
2162
2163executable('systemd-remount-fs',
2164 'src/remount-fs/remount-fs.c',
2165 'src/core/mount-setup.c',
2166 'src/core/mount-setup.h',
2167 include_directories : includes,
2168 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002169 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002170 install : true,
2171 install_dir : rootlibexecdir)
2172
2173executable('systemd-machine-id-setup',
2174 'src/machine-id-setup/machine-id-setup-main.c',
2175 'src/core/machine-id-setup.c',
2176 'src/core/machine-id-setup.h',
2177 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002178 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002179 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002180 install : true,
2181 install_dir : rootbindir)
2182
2183executable('systemd-fsck',
2184 'src/fsck/fsck.c',
2185 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002186 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002187 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002188 install : true,
2189 install_dir : rootlibexecdir)
2190
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002191executable('systemd-growfs',
2192 'src/partition/growfs.c',
2193 include_directories : includes,
2194 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002195 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002196 install_rpath : rootlibexecdir,
2197 install : true,
2198 install_dir : rootlibexecdir)
2199
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002200executable('systemd-makefs',
2201 'src/partition/makefs.c',
2202 include_directories : includes,
2203 link_with : [libshared],
2204 install_rpath : rootlibexecdir,
2205 install : true,
2206 install_dir : rootlibexecdir)
2207
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002208executable('systemd-sleep',
2209 'src/sleep/sleep.c',
2210 include_directories : includes,
2211 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002212 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002213 install : true,
2214 install_dir : rootlibexecdir)
2215
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002216exe = executable('systemd-sysctl',
2217 'src/sysctl/sysctl.c',
2218 include_directories : includes,
2219 link_with : [libshared],
2220 install_rpath : rootlibexecdir,
2221 install : true,
2222 install_dir : rootlibexecdir)
2223public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002224
2225executable('systemd-ac-power',
2226 'src/ac-power/ac-power.c',
2227 include_directories : includes,
2228 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002229 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002230 install : true,
2231 install_dir : rootlibexecdir)
2232
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002233exe = executable('systemd-detect-virt',
2234 'src/detect-virt/detect-virt.c',
2235 include_directories : includes,
2236 link_with : [libshared],
2237 install_rpath : rootlibexecdir,
2238 install : true)
2239public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002240
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002241exe = executable('systemd-delta',
2242 'src/delta/delta.c',
2243 include_directories : includes,
2244 link_with : [libshared],
2245 install_rpath : rootlibexecdir,
2246 install : true)
2247public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002248
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002249exe = executable('systemd-escape',
2250 'src/escape/escape.c',
2251 include_directories : includes,
2252 link_with : [libshared],
2253 install_rpath : rootlibexecdir,
2254 install : true,
2255 install_dir : rootbindir)
2256public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002257
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002258exe = executable('systemd-notify',
2259 'src/notify/notify.c',
2260 include_directories : includes,
2261 link_with : [libshared],
2262 install_rpath : rootlibexecdir,
2263 install : true,
2264 install_dir : rootbindir)
2265public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002266
2267executable('systemd-volatile-root',
2268 'src/volatile-root/volatile-root.c',
2269 include_directories : includes,
2270 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002271 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002272 install : true,
2273 install_dir : rootlibexecdir)
2274
2275executable('systemd-cgroups-agent',
2276 'src/cgroups-agent/cgroups-agent.c',
2277 include_directories : includes,
2278 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002279 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002280 install : true,
2281 install_dir : rootlibexecdir)
2282
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002283exe = executable('systemd-path',
2284 'src/path/path.c',
2285 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002286 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002287 install_rpath : rootlibexecdir,
2288 install : true)
2289public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002290
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002291exe = executable('systemd-ask-password',
2292 'src/ask-password/ask-password.c',
2293 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002294 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002295 install_rpath : rootlibexecdir,
2296 install : true,
2297 install_dir : rootbindir)
2298public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002299
2300executable('systemd-reply-password',
2301 'src/reply-password/reply-password.c',
2302 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002303 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002304 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002305 install : true,
2306 install_dir : rootlibexecdir)
2307
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002308exe = executable('systemd-tty-ask-password-agent',
2309 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2310 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002311 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002312 install_rpath : rootlibexecdir,
2313 install : true,
2314 install_dir : rootbindir)
2315public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002316
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002317exe = executable('systemd-cgls',
2318 'src/cgls/cgls.c',
2319 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002320 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002321 install_rpath : rootlibexecdir,
2322 install : true)
2323public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002324
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002325exe = executable('systemd-cgtop',
2326 'src/cgtop/cgtop.c',
2327 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002328 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002329 install_rpath : rootlibexecdir,
2330 install : true)
2331public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002332
2333executable('systemd-initctl',
2334 'src/initctl/initctl.c',
2335 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002336 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002337 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002338 install : true,
2339 install_dir : rootlibexecdir)
2340
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002341exe = executable('systemd-mount',
2342 'src/mount/mount-tool.c',
2343 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002344 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002345 install_rpath : rootlibexecdir,
2346 install : true)
2347public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002348
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002349meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002350 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002351
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002352exe = executable('systemd-run',
2353 'src/run/run.c',
2354 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002355 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002356 install_rpath : rootlibexecdir,
2357 install : true)
2358public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002359
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002360exe = executable('systemd-stdio-bridge',
2361 'src/stdio-bridge/stdio-bridge.c',
2362 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002363 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002364 install_rpath : rootlibexecdir,
2365 install : true)
2366public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002367
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002368exe = executable('busctl',
2369 'src/busctl/busctl.c',
2370 'src/busctl/busctl-introspect.c',
2371 'src/busctl/busctl-introspect.h',
2372 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002373 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002374 install_rpath : rootlibexecdir,
2375 install : true)
2376public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002377
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002378if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002379 exe = executable('systemd-sysusers',
2380 'src/sysusers/sysusers.c',
2381 include_directories : includes,
2382 link_with : [libshared],
2383 install_rpath : rootlibexecdir,
2384 install : true,
2385 install_dir : rootbindir)
2386 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002387endif
2388
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002389if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002390 exe = executable('systemd-tmpfiles',
2391 'src/tmpfiles/tmpfiles.c',
2392 include_directories : includes,
2393 link_with : [libshared],
2394 dependencies : [libacl],
2395 install_rpath : rootlibexecdir,
2396 install : true,
2397 install_dir : rootbindir)
2398 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002399
2400 test('test-systemd-tmpfiles',
2401 test_systemd_tmpfiles_py,
2402 args : exe.full_path())
2403 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002404endif
2405
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002406if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002407 exe = executable('systemd-hwdb',
2408 'src/hwdb/hwdb.c',
2409 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2410 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002411 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002412 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002413 install : true,
2414 install_dir : rootbindir)
2415 public_programs += [exe]
2416endif
2417
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002418if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002419 executable('systemd-quotacheck',
2420 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002421 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002422 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002423 install_rpath : rootlibexecdir,
2424 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002425 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002426endif
2427
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002428exe = executable('systemd-socket-proxyd',
2429 'src/socket-proxy/socket-proxyd.c',
2430 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002431 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002432 dependencies : [threads],
2433 install_rpath : rootlibexecdir,
2434 install : true,
2435 install_dir : rootlibexecdir)
2436public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002437
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002438exe = executable('systemd-udevd',
2439 systemd_udevd_sources,
2440 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002441 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002442 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002443 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002444 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002445 dependencies : [threads,
2446 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002447 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002448 libacl,
2449 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002450 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002451 install : true,
2452 install_dir : rootlibexecdir)
2453public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002454
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002455exe = executable('udevadm',
2456 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002457 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002458 include_directories : includes,
2459 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002460 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002461 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002462 dependencies : [threads,
2463 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002464 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002465 libacl,
2466 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002467 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002468 install : true,
2469 install_dir : rootbindir)
2470public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002471
2472executable('systemd-shutdown',
2473 systemd_shutdown_sources,
2474 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002475 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002476 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002477 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002478 install : true,
2479 install_dir : rootlibexecdir)
2480
2481executable('systemd-update-done',
2482 'src/update-done/update-done.c',
2483 include_directories : includes,
2484 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002485 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002486 install : true,
2487 install_dir : rootlibexecdir)
2488
2489executable('systemd-update-utmp',
2490 'src/update-utmp/update-utmp.c',
2491 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002492 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002493 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002494 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002495 install : true,
2496 install_dir : rootlibexecdir)
2497
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002498if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002499 executable('systemd-modules-load',
2500 'src/modules-load/modules-load.c',
2501 include_directories : includes,
2502 link_with : [libshared],
2503 dependencies : [libkmod],
2504 install_rpath : rootlibexecdir,
2505 install : true,
2506 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002507
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002508 meson.add_install_script('sh', '-c',
2509 mkdir_p.format(modulesloaddir))
2510 meson.add_install_script('sh', '-c',
2511 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002512endif
2513
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002514exe = executable('systemd-nspawn',
2515 systemd_nspawn_sources,
2516 'src/core/mount-setup.c', # FIXME: use a variable?
2517 'src/core/mount-setup.h',
2518 'src/core/loopback-setup.c',
2519 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002520 include_directories : includes,
2521 link_with : [libnspawn_core,
2522 libshared],
2523 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002524 install_rpath : rootlibexecdir,
2525 install : true)
2526public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002527
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002528if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002529 executable('systemd-networkd',
2530 systemd_networkd_sources,
2531 include_directories : includes,
2532 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002533 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002534 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002535 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002536 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002537 install_rpath : rootlibexecdir,
2538 install : true,
2539 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002540
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002541 executable('systemd-networkd-wait-online',
2542 systemd_networkd_wait_online_sources,
2543 include_directories : includes,
2544 link_with : [libnetworkd_core,
2545 libshared],
2546 install_rpath : rootlibexecdir,
2547 install : true,
2548 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002549
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002550 exe = executable('networkctl',
2551 networkctl_sources,
2552 include_directories : includes,
2553 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002554 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002555 install_rpath : rootlibexecdir,
2556 install : true,
2557 install_dir : rootbindir)
2558 public_programs += [exe]
2559endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002560
2561executable('systemd-sulogin-shell',
2562 ['src/sulogin-shell/sulogin-shell.c'],
2563 include_directories : includes,
2564 link_with : [libshared],
2565 install_rpath : rootlibexecdir,
2566 install : true,
2567 install_dir : rootlibexecdir)
2568
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002569############################################################
2570
2571foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002572 sources = tuple[0]
2573 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2574 dependencies = tuple[2]
2575 condition = tuple.length() >= 4 ? tuple[3] : ''
2576 type = tuple.length() >= 5 ? tuple[4] : ''
2577 defs = tuple.length() >= 6 ? tuple[5] : []
2578 incs = tuple.length() >= 7 ? tuple[6] : includes
2579 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002580
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002581 name = sources[0].split('/')[-1].split('.')[0]
2582 if type.startswith('timeout=')
2583 timeout = type.split('=')[1].to_int()
2584 type = ''
2585 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002586 if want_tests == 'false'
2587 message('Not compiling @0@ because tests is set to false'.format(name))
2588 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002589 exe = executable(
2590 name,
2591 sources,
2592 include_directories : incs,
2593 link_with : link_with,
2594 dependencies : dependencies,
2595 c_args : defs,
2596 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002597 install : install_tests,
2598 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002599
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002600 if type == 'manual'
2601 message('@0@ is a manual test'.format(name))
2602 elif type == 'unsafe' and want_tests != 'unsafe'
2603 message('@0@ is an unsafe test'.format(name))
2604 else
2605 test(name, exe,
2606 env : test_env,
2607 timeout : timeout)
2608 endif
2609 else
2610 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2611 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002612endforeach
2613
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002614exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002615 'test-libsystemd-sym',
2616 test_libsystemd_sym_c,
2617 include_directories : includes,
2618 link_with : [libsystemd],
2619 install : install_tests,
2620 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002621test('test-libsystemd-sym', exe)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002622
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002623exe = executable(
2624 'test-libsystemd-static-sym',
2625 test_libsystemd_sym_c,
2626 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002627 link_with : [install_libsystemd_static],
2628 dependencies : [threads], # threads is already included in dependencies on the library,
2629 # but does not seem to get propagated. Add here as a work-around.
Davide Cavalca20f3d322018-04-24 13:34:48 -07002630 build_by_default : static_libsystemd_pic,
2631 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002632 install_dir : testsdir)
Davide Cavalca20f3d322018-04-24 13:34:48 -07002633if static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002634 test('test-libsystemd-static-sym', exe)
2635endif
2636
2637exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002638 'test-libudev-sym',
2639 test_libudev_sym_c,
2640 include_directories : includes,
2641 c_args : ['-Wno-deprecated-declarations'],
2642 link_with : [libudev],
2643 install : install_tests,
2644 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002645test('test-libudev-sym', exe)
2646
2647exe = executable(
2648 'test-libudev-static-sym',
2649 test_libudev_sym_c,
2650 include_directories : includes,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002651 c_args : ['-Wno-deprecated-declarations'],
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002652 link_with : [install_libudev_static],
Davide Cavalca20f3d322018-04-24 13:34:48 -07002653 build_by_default : static_libudev_pic,
2654 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002655 install_dir : testsdir)
Davide Cavalca20f3d322018-04-24 13:34:48 -07002656if static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002657 test('test-libudev-static-sym', exe)
2658endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002659
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002660############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002661
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002662fuzzer_exes = []
2663
2664foreach tuple : fuzzers
2665 sources = tuple[0]
2666 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2667 dependencies = tuple[2]
2668 defs = tuple.length() >= 4 ? tuple[3] : []
2669 incs = tuple.length() >= 5 ? tuple[4] : includes
2670
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002671 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002672 dependencies += fuzzing_engine
2673 else
2674 sources += 'src/fuzz/fuzz-main.c'
2675 endif
2676
2677 name = sources[0].split('/')[-1].split('.')[0]
2678
2679 fuzzer_exes += executable(
2680 name,
2681 sources,
2682 include_directories : [incs, include_directories('src/fuzz')],
2683 link_with : link_with,
2684 dependencies : dependencies,
2685 c_args : defs,
2686 install : false)
2687endforeach
2688
2689run_target('fuzzers',
2690 depends : fuzzer_exes,
2691 command : ['true'])
2692
2693############################################################
2694
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002695make_directive_index_py = find_program('tools/make-directive-index.py')
2696make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002697xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002698hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002699
2700subdir('units')
2701subdir('sysctl.d')
2702subdir('sysusers.d')
2703subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002704subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002705subdir('hwdb')
2706subdir('network')
2707subdir('man')
2708subdir('shell-completion/bash')
2709subdir('shell-completion/zsh')
Lennart Poettering2d684e62018-03-28 16:58:37 +02002710subdir('doc/sysvinit')
2711subdir('doc/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002712
2713# FIXME: figure out if the warning is true:
2714# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2715install_subdir('factory/etc',
2716 install_dir : factorydir)
2717
2718
2719install_data('xorg/50-systemd-user.sh',
2720 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002721install_data('modprobe.d/systemd.conf',
2722 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002723install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002724 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002725 'NEWS',
2726 'README',
2727 'doc/CODING_STYLE',
2728 'doc/DISTRO_PORTING',
2729 'doc/ENVIRONMENT.md',
2730 'doc/HACKING',
2731 'doc/TRANSIENT-SETTINGS.md',
2732 'doc/TRANSLATORS',
2733 'doc/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002734 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2735 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002736
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002737meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2738meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2739
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002740############################################################
2741
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002742meson_check_help = find_program('tools/meson-check-help.sh')
2743
2744foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002745 name = exec.full_path().split('/')[-1]
2746 test('check-help-' + name,
2747 meson_check_help,
2748 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002749endforeach
2750
2751############################################################
2752
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002753# Enable tests for all supported sanitizers
2754foreach tuple : sanitizers
2755 sanitizer = tuple[0]
2756 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002757
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002758 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002759 prev = ''
2760 foreach p : fuzz_regression_tests
2761 b = p.split('/')[-2]
2762 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002763
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002764 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002765
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002766 if name != prev
2767 if want_tests == 'false'
2768 message('Not compiling @0@ because tests is set to false'.format(name))
2769 elif slow_tests
2770 exe = custom_target(
2771 name,
2772 output : name,
2773 depends : build,
2774 command : [env, 'ln', '-fs',
2775 join_paths(build.full_path(), b),
2776 '@OUTPUT@'],
2777 build_by_default : true)
2778 else
2779 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2780 endif
2781 endif
2782 prev = name
2783
2784 if want_tests != 'false' and slow_tests
2785 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2786 env,
2787 args : [exe.full_path(),
2788 join_paths(meson.source_root(),
2789 'test/fuzz-regressions',
2790 p)])
2791 endif
2792 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002793 endif
2794endforeach
2795
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002796
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002797############################################################
2798
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002799if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002800 all_files = run_command(
2801 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002802 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002803 'ls-files',
2804 ':/*.[ch]'])
2805 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002806
userwithuide85a6902017-08-09 13:41:44 +00002807 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002808 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002809 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002810 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00002811 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002812 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002813 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002814endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002815
2816if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002817 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002818 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002819 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002820 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002821endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002822
2823if git.found()
2824 git_head = run_command(
2825 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002826 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002827 'rev-parse', 'HEAD']).stdout().strip()
2828 git_head_short = run_command(
2829 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002830 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002831 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2832
2833 run_target(
2834 'git-snapshot',
2835 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002836 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002837 git_head_short),
2838 '--prefix', 'systemd-@0@/'.format(git_head),
2839 'HEAD'])
2840endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002841
2842############################################################
2843
Lennart Poettering51b13862017-12-20 12:51:14 +01002844meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2845run_target(
2846 'check-api-docs',
2847 depends : [man, libsystemd, libudev],
2848 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2849
2850############################################################
2851
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002852status = [
2853 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2854
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002855 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002856 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002857 'prefix directory: @0@'.format(prefixdir),
2858 'rootprefix directory: @0@'.format(rootprefixdir),
2859 'sysconf directory: @0@'.format(sysconfdir),
2860 'include directory: @0@'.format(includedir),
2861 'lib directory: @0@'.format(libdir),
2862 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002863 'SysV init scripts: @0@'.format(sysvinit_path),
2864 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002865 'PAM modules directory: @0@'.format(pamlibdir),
2866 'PAM configuration directory: @0@'.format(pamconfdir),
2867 'RPM macros directory: @0@'.format(rpmmacrosdir),
2868 'modprobe.d directory: @0@'.format(modprobedir),
2869 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2870 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2871 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2872 'bash completions directory: @0@'.format(bashcompletiondir),
2873 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002874 'extra start script: @0@'.format(get_option('rc-local')),
2875 'extra stop script: @0@'.format(get_option('halt-local')),
2876 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2877 get_option('debug-tty')),
2878 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09002879 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002880 'maximum system UID: @0@'.format(system_uid_max),
2881 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002882 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2883 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2884 'minimum container UID base: @0@'.format(container_uid_base_min),
2885 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002886 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002887 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002888 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002889 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002890 'nobody user name: @0@'.format(nobody_user),
2891 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002892 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002893 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002894
2895 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02002896 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002897 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2898 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2899
2900alt_dns_servers = '\n '.join(dns_servers.split(' '))
2901alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2902status += [
2903 'default DNS servers: @0@'.format(alt_dns_servers),
2904 'default NTP servers: @0@'.format(alt_ntp_servers)]
2905
2906alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2907 '@@0@'.format(time_epoch)).stdout().strip()
2908status += [
2909 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2910
2911# TODO:
2912# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2913# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2914# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2915
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002916if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002917 status += [
2918 'efi arch: @0@'.format(efi_arch)]
2919
2920 if have_gnu_efi
2921 status += [
2922 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2923 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002924 'EFI lib directory: @0@'.format(efi_libdir),
2925 'EFI lds directory: @0@'.format(efi_ldsdir),
2926 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002927 endif
2928endif
2929
2930found = []
2931missing = []
2932
2933foreach tuple : [
2934 ['libcryptsetup'],
2935 ['PAM'],
2936 ['AUDIT'],
2937 ['IMA'],
2938 ['AppArmor'],
2939 ['SELinux'],
2940 ['SECCOMP'],
2941 ['SMACK'],
2942 ['zlib'],
2943 ['xz'],
2944 ['lz4'],
2945 ['bzip2'],
2946 ['ACL'],
2947 ['gcrypt'],
2948 ['qrencode'],
2949 ['microhttpd'],
2950 ['gnutls'],
2951 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002952 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002953 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002954 ['libidn'],
2955 ['libiptc'],
2956 ['elfutils'],
2957 ['binfmt'],
2958 ['vconsole'],
2959 ['quotacheck'],
2960 ['tmpfiles'],
2961 ['environment.d'],
2962 ['sysusers'],
2963 ['firstboot'],
2964 ['randomseed'],
2965 ['backlight'],
2966 ['rfkill'],
2967 ['logind'],
2968 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02002969 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002970 ['importd'],
2971 ['hostnamed'],
2972 ['timedated'],
2973 ['timesyncd'],
2974 ['localed'],
2975 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002976 ['resolve'],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09002977 ['DNS-over-TLS'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002978 ['coredump'],
2979 ['polkit'],
2980 ['legacy pkla', install_polkit_pkla],
2981 ['efi'],
2982 ['gnu-efi', have_gnu_efi],
2983 ['kmod'],
2984 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01002985 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002986 ['blkid'],
2987 ['dbus'],
2988 ['glib'],
Yu Watanabe08540a92018-07-18 09:25:57 +09002989 ['nss-myhostname', conf.get('ENABLE_NSS_MYHOSTNAME') == 1],
2990 ['nss-mymachines', conf.get('ENABLE_NSS_MYMACHINES') == 1],
2991 ['nss-resolve', conf.get('ENABLE_NSS_RESOLVE') == 1],
2992 ['nss-systemd', conf.get('ENABLE_NSS_SYSTEMD') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002993 ['hwdb'],
2994 ['tpm'],
2995 ['man pages', want_man],
2996 ['html pages', want_html],
2997 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002998 ['SysV compat'],
2999 ['utmp'],
3000 ['ldconfig'],
3001 ['hibernate'],
3002 ['adm group', get_option('adm-group')],
3003 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003004 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003005 ['debug hashmap'],
3006 ['debug mmap cache'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003007 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003008]
3009
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003010 if tuple.length() >= 2
3011 cond = tuple[1]
3012 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003013 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3014 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003015 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003016 endif
3017 if cond
3018 found += [tuple[0]]
3019 else
3020 missing += [tuple[0]]
3021 endif
3022endforeach
3023
3024status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003025 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003026 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003027 '',
3028 'disabled features: @0@'.format(', '.join(missing)),
3029 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003030message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003031
3032if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003033 warning('\n' +
3034 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3035 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3036 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003037endif