blob: dd904c7148714523e52bf631aee6eb4f10eccf99 [file] [log] [blame]
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01001# SPDX-License-Identifier: LGPL-2.1+
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01002
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003project('systemd', 'c',
Lennart Poetteringde7436b2018-06-22 13:03:47 +02004 version : '239',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04005 license : 'LGPLv2+',
6 default_options: [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04007 'c_std=gnu99',
8 'prefix=/usr',
9 'sysconfdir=/etc',
10 'localstatedir=/var',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040011 ],
Yu Watanabe8ea9fad2018-05-10 14:50:52 +090012 meson_version : '>= 0.44',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040013 )
14
Lennart Poetteringde7436b2018-06-22 13:03:47 +020015libsystemd_version = '0.23.0'
16libudev_version = '1.6.11'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020017
Yu Watanabe348b4432018-05-07 18:17:35 +090018# We need the same data in two different formats, ugh!
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040019# Also, for hysterical reasons, we use different variable
20# names, sometimes. Not all variables are included in every
21# set. Ugh, ugh, ugh!
22conf = configuration_data()
23conf.set_quoted('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version())
24conf.set_quoted('PACKAGE_VERSION', meson.project_version())
25
26substs = configuration_data()
27substs.set('PACKAGE_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
28substs.set('PACKAGE_VERSION', meson.project_version())
29
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040030#####################################################################
31
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040032# Try to install the git pre-commit hook
33git_hook = run_command(join_paths(meson.source_root(), 'tools/add-git-hook.sh'))
34if git_hook.returncode() == 0
35 message(git_hook.stdout().strip())
36endif
37
38#####################################################################
39
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010040if get_option('split-usr') == 'auto'
41 split_usr = run_command('test', '-L', '/bin').returncode() != 0
42else
43 split_usr = get_option('split-usr') == 'true'
44endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010045conf.set10('HAVE_SPLIT_USR', split_usr,
46 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010047
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010048if get_option('split-bin') == 'auto'
49 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
50else
51 split_bin = get_option('split-bin') == 'true'
52endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010053conf.set10('HAVE_SPLIT_BIN', split_bin,
54 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010055
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010056rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010057# Unusual rootprefixdir values are used by some distros
58# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010059rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010060if rootprefixdir == ''
61 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010062endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040063
64sysvinit_path = get_option('sysvinit-path')
65sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090066conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020067 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040068
69# join_paths ignore the preceding arguments if an absolute component is
70# encountered, so this should canonicalize various paths when they are
71# absolute or relative.
72prefixdir = get_option('prefix')
73if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040074 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040075endif
76bindir = join_paths(prefixdir, get_option('bindir'))
77libdir = join_paths(prefixdir, get_option('libdir'))
78sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
79includedir = join_paths(prefixdir, get_option('includedir'))
80datadir = join_paths(prefixdir, get_option('datadir'))
81localstatedir = join_paths('/', get_option('localstatedir'))
82
83rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010084rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040085rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
86
87rootlibdir = get_option('rootlibdir')
88if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040089 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040090endif
91
92# Dirs of external packages
Michael Bieble17e5ba2017-04-13 10:30:56 -040093pkgconfigdatadir = join_paths(datadir, 'pkgconfig')
94pkgconfiglibdir = join_paths(libdir, 'pkgconfig')
95polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
96polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
97polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
98varlogdir = join_paths(localstatedir, 'log')
99xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900100rpmmacrosdir = get_option('rpmmacrosdir')
101if rpmmacrosdir != 'no'
102 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
103endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200104modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400105
106# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400107pkgdatadir = join_paths(datadir, 'systemd')
108environmentdir = join_paths(prefixdir, 'lib/environment.d')
109pkgsysconfdir = join_paths(sysconfdir, 'systemd')
110userunitdir = join_paths(prefixdir, 'lib/systemd/user')
111userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
112tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
113sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
114sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
115binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
116modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
117networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
118pkgincludedir = join_paths(includedir, 'systemd')
119systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
120usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
121systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
122userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
123systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
124systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
125systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
126systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
127udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
128udevhomedir = udevlibexecdir
129udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
130udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
131catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
132kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
133factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400134bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
135testsdir = join_paths(prefixdir, 'lib/systemd/tests')
136systemdstatedir = join_paths(localstatedir, 'lib/systemd')
137catalogstatedir = join_paths(systemdstatedir, 'catalog')
138randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200139profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400140
tblume75aaade2018-02-01 22:46:15 +0100141docdir = get_option('docdir')
142if docdir == ''
143 docdir = join_paths(datadir, 'doc/systemd')
144endif
145
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400146dbuspolicydir = get_option('dbuspolicydir')
147if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400148 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400149endif
150
151dbussessionservicedir = get_option('dbussessionservicedir')
152if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400153 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400154endif
155
156dbussystemservicedir = get_option('dbussystemservicedir')
157if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400158 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400159endif
160
161pamlibdir = get_option('pamlibdir')
162if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400163 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400164endif
165
166pamconfdir = get_option('pamconfdir')
167if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400168 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400169endif
170
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100171memory_accounting_default = get_option('memory-accounting-default')
172
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400173conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400174conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400175conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
176conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
177conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400178conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
179conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100180
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100181conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100182
Michael Bieble17e5ba2017-04-13 10:30:56 -0400183conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400184conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
185conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400186conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
187conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
188conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
189conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100190conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100191conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400192conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
193conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
194conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
195conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
196conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100197conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400198conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400199conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
200conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400201conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
202conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
203conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
204conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
205conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
206conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400207conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
208conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400209conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400210conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400211conf.set_quoted('LIBDIR', libdir)
212conf.set_quoted('ROOTLIBDIR', rootlibdir)
213conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
214conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400215conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
216conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
217conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
218conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
219conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
220conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100221conf.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'true' : 'false')
Michal Koutný7f672e82018-03-09 18:27:13 +0100222conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400223
224conf.set_quoted('ABS_BUILD_DIR', meson.build_root())
225conf.set_quoted('ABS_SRC_DIR', meson.source_root())
226
227substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400228substs.set('exec_prefix', prefixdir)
229substs.set('libdir', libdir)
230substs.set('rootlibdir', rootlibdir)
231substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400232substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400233substs.set('bindir', bindir)
234substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400235substs.set('rootlibexecdir', rootlibexecdir)
236substs.set('systemunitdir', systemunitdir)
237substs.set('userunitdir', userunitdir)
238substs.set('systempresetdir', systempresetdir)
239substs.set('userpresetdir', userpresetdir)
240substs.set('udevhwdbdir', udevhwdbdir)
241substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400242substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200243substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400244substs.set('catalogdir', catalogdir)
245substs.set('tmpfilesdir', tmpfilesdir)
246substs.set('sysusersdir', sysusersdir)
247substs.set('sysctldir', sysctldir)
248substs.set('binfmtdir', binfmtdir)
249substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200250substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400251substs.set('systemgeneratordir', systemgeneratordir)
252substs.set('usergeneratordir', usergeneratordir)
253substs.set('systemenvgeneratordir', systemenvgeneratordir)
254substs.set('userenvgeneratordir', userenvgeneratordir)
255substs.set('systemshutdowndir', systemshutdowndir)
256substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400257substs.set('VARLOGDIR', varlogdir)
258substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400259substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
260substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400261substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
262substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
263substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
264substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100265substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400266
267#####################################################################
268
269cc = meson.get_compiler('c')
270pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400271check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100272meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400273
Adam Duskett08318a22018-01-15 06:25:46 -0500274if get_option('tests') != 'false'
275 cxx = find_program('c++', required : false)
276 if cxx.found()
277 # Used only for tests
278 add_languages('cpp')
279 endif
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400280endif
281
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500282want_ossfuzz = get_option('oss-fuzz')
283want_libfuzzer = get_option('llvm-fuzz')
284fuzzer_build = want_ossfuzz or want_libfuzzer
285if want_ossfuzz and want_libfuzzer
286 error('only one of oss-fuzz and llvm-fuzz can be specified')
287endif
288if want_libfuzzer
289 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
290endif
291if want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500292 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
293endif
294
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900295possible_cc_flags = [
296 '-Wextra',
297 '-Werror=undef',
298 '-Wlogical-op',
299 '-Wmissing-include-dirs',
300 '-Wold-style-definition',
301 '-Wpointer-arith',
302 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900303 '-Wfloat-equal',
304 '-Wsuggest-attribute=noreturn',
305 '-Werror=missing-prototypes',
306 '-Werror=implicit-function-declaration',
307 '-Werror=missing-declarations',
308 '-Werror=return-type',
309 '-Werror=incompatible-pointer-types',
310 '-Werror=format=2',
311 '-Wstrict-prototypes',
312 '-Wredundant-decls',
313 '-Wmissing-noreturn',
314 '-Wimplicit-fallthrough=5',
315 '-Wshadow',
316 '-Wendif-labels',
317 '-Wstrict-aliasing=2',
318 '-Wwrite-strings',
319 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200320 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200321 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900322 '-Wdate-time',
323 '-Wnested-externs',
324 '-ffast-math',
325 '-fno-common',
326 '-fdiagnostics-show-option',
327 '-fno-strict-aliasing',
328 '-fvisibility=hidden',
329 '-fstack-protector',
330 '-fstack-protector-strong',
331 '--param=ssp-buffer-size=4',
332]
333
334# --as-needed and --no-undefined are provided by meson by default,
335# run mesonconf to see what is enabled
336possible_link_flags = [
337 '-Wl,-z,relro',
338 '-Wl,-z,now',
339]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400340
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500341# the oss-fuzz fuzzers are not built with -fPIE, so don't
342# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500343if not fuzzer_build
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900344 possible_cc_flags += '-fPIE'
345 possible_link_flags += '-pie'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500346endif
347
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900348if cc.get_id() == 'clang'
349 possible_cc_flags += [
350 '-Wno-typedef-redefinition',
351 '-Wno-gnu-variable-sized-type-not-at-end',
352 ]
353endif
354
355if get_option('buildtype') != 'debug'
356 possible_cc_flags += [
357 '-ffunction-sections',
358 '-fdata-sections',
359 ]
360
361 possible_link_flags += '-Wl,--gc-sections'
362endif
363
364add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
365
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400366# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
Zbigniew Jędrzejewski-Szmekd40f5cc2018-06-07 15:08:02 +0200367# arguments, just emits a warning. So test for the "positive" version instead.
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400368foreach arg : ['unused-parameter',
369 'missing-field-initializers',
370 'unused-result',
Zbigniew Jędrzejewski-Szmekfb1b5882017-09-04 19:49:12 +0300371 'format-signedness',
372 'error=nonnull', # work-around for gcc 7.1 turning this on on its own
373 ]
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400374 if cc.has_argument('-W' + arg)
375 add_project_arguments('-Wno-' + arg, language : 'c')
376 endif
377endforeach
378
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800379if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400380 #include <time.h>
381 #include <inttypes.h>
382 typedef uint64_t usec_t;
383 usec_t now(clockid_t clock);
384 int main(void) {
385 struct timespec now;
386 return 0;
387 }
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800388''', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400389 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400390endif
391
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400392link_test_c = files('tools/meson-link-test.c')
393
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900394foreach arg : possible_link_flags
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400395 have = run_command(check_compilation_sh,
396 cc.cmd_array(), '-x', 'c', arg,
397 '-include', link_test_c).returncode() == 0
398 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900399 if have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400400 add_project_link_arguments(arg, language : 'c')
401 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400402endforeach
403
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400404cpp = ' '.join(cc.cmd_array()) + ' -E'
405
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400406#####################################################################
407# compilation result tests
408
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400409conf.set('_GNU_SOURCE', true)
410conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400411
412conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
413conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
414conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
415conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
416conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
417conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
418conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
419
420decl_headers = '''
421#include <uchar.h>
422#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000423#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100424#include <linux/stat.h>
425#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400426'''
427# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
428
429foreach decl : ['char16_t',
430 'char32_t',
431 'key_serial_t',
432 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000433 'struct fib_rule_uid_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100434 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400435 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400436
437 # We get -1 if the size cannot be determined
438 have = cc.sizeof(decl, prefix : decl_headers) > 0
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200439 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400440endforeach
441
442foreach 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')
627if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400628 NEWS = files('NEWS')
629 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400630endif
631time_epoch = time_epoch.to_int()
632conf.set('TIME_EPOCH', time_epoch)
633
634system_uid_max = get_option('system-uid-max')
635if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400636 system_uid_max = run_command(
637 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800638 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
639 '/etc/login.defs').stdout().strip()
640 if system_uid_max == ''
641 system_uid_max = '999'
642 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400643endif
644system_uid_max = system_uid_max.to_int()
645conf.set('SYSTEM_UID_MAX', system_uid_max)
646substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400647message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400648
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400649system_gid_max = get_option('system-gid-max')
650if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400651 system_gid_max = run_command(
652 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800653 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
654 '/etc/login.defs').stdout().strip()
655 if system_gid_max == ''
656 system_gid_max = '999'
657 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400658endif
659system_gid_max = system_gid_max.to_int()
660conf.set('SYSTEM_GID_MAX', system_gid_max)
661substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400662message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400663
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100664dynamic_uid_min = get_option('dynamic-uid-min').to_int()
665dynamic_uid_max = get_option('dynamic-uid-max').to_int()
666conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
667conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
668substs.set('dynamicuidmin', dynamic_uid_min)
669substs.set('dynamicuidmax', dynamic_uid_max)
670
671container_uid_base_min = get_option('container-uid-base-min').to_int()
672container_uid_base_max = get_option('container-uid-base-max').to_int()
673conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
674conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
675substs.set('containeruidbasemin', container_uid_base_min)
676substs.set('containeruidbasemax', container_uid_base_max)
677
Lennart Poetteringafde4572017-12-05 11:00:24 +0100678nobody_user = get_option('nobody-user')
679nobody_group = get_option('nobody-group')
680
681getent_result = run_command('getent', 'passwd', '65534')
682if getent_result.returncode() == 0
683 name = getent_result.stdout().split(':')[0]
684 if name != nobody_user
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900685 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.')
Lennart Poetteringafde4572017-12-05 11:00:24 +0100688 endif
689endif
690id_result = run_command('id', '-u', nobody_user)
691if id_result.returncode() == 0
692 id = id_result.stdout().to_int()
693 if id != 65534
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900694 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.')
Lennart Poetteringafde4572017-12-05 11:00:24 +0100697 endif
698endif
699
700getent_result = run_command('getent', 'group', '65534')
701if getent_result.returncode() == 0
702 name = getent_result.stdout().split(':')[0]
703 if name != nobody_group
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900704 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.')
Lennart Poetteringafde4572017-12-05 11:00:24 +0100707 endif
708endif
709id_result = run_command('id', '-g', nobody_group)
710if id_result.returncode() == 0
711 id = id_result.stdout().to_int()
712 if id != 65534
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900713 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.')
Lennart Poetteringafde4572017-12-05 11:00:24 +0100716 endif
717endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900718if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900719 warning('\n' +
720 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
721 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900722endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100723
724conf.set_quoted('NOBODY_USER_NAME', nobody_user)
725conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900726substs.set('NOBODY_USER_NAME', nobody_user)
727substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100728
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400729tty_gid = get_option('tty-gid')
730conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400731substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400732
Ikey Doherty84786b82017-12-03 12:28:23 +0000733# Ensure provided GID argument is numeric, otherwise fallback to default assignment
734if get_option('users-gid') != ''
Yu Watanabed6806872017-12-05 14:01:39 +0900735 users_gid = get_option('users-gid').to_int()
Ikey Doherty84786b82017-12-03 12:28:23 +0000736else
Yu Watanabed6806872017-12-05 14:01:39 +0900737 users_gid = '-'
Ikey Doherty84786b82017-12-03 12:28:23 +0000738endif
739substs.set('USERS_GID', users_gid)
740
Yu Watanabe348b4432018-05-07 18:17:35 +0900741conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
742conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400743
744substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700745substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400746
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400747kill_user_processes = get_option('default-kill-user-processes')
748conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100749conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400750substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400751
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400752dns_servers = get_option('dns-servers')
753conf.set_quoted('DNS_SERVERS', dns_servers)
754substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400755
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400756ntp_servers = get_option('ntp-servers')
757conf.set_quoted('NTP_SERVERS', ntp_servers)
758substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400759
760conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
761
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400762substs.set('SUSHELL', get_option('debug-shell'))
763substs.set('DEBUGTTY', get_option('debug-tty'))
764
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200765enable_debug_hashmap = false
766enable_debug_mmap_cache = false
Yu Watanabead7aa762018-05-02 13:56:28 +0900767foreach name : get_option('debug')
768 if name == 'hashmap'
769 enable_debug_hashmap = true
770 elif name == 'mmap-cache'
771 enable_debug_mmap_cache = true
772 else
773 message('unknown debug option "@0@", ignoring'.format(name))
774 endif
775endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200776conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
777conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400778
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200779conf.set10('VALGRIND', get_option('valgrind'))
780
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400781#####################################################################
782
783threads = dependency('threads')
784librt = cc.find_library('rt')
785libm = cc.find_library('m')
786libdl = cc.find_library('dl')
787libcrypt = cc.find_library('crypt')
788
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400789libcap = dependency('libcap', required : false)
790if not libcap.found()
791 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
792 libcap = cc.find_library('cap')
793endif
794
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400795libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100796 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400797
798want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500799if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400800 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400801 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400802 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200803 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400804else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200805 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400806 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400807endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200808conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400809
810want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500811if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400812 libselinux = dependency('libselinux',
813 version : '>= 2.1.9',
814 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200815 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400816else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200817 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400818 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400819endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200820conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400821
822want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500823if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400824 libapparmor = dependency('libapparmor',
825 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200826 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400827else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200828 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400829 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400830endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200831conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400832
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400833smack_run_label = get_option('smack-run-label')
834if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400835 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400836endif
837
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400838want_polkit = get_option('polkit')
839install_polkit = false
840install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500841if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400842 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400843
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400844 libpolkit = dependency('polkit-gobject-1',
845 required : false)
846 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
847 message('Old polkit detected, will install pkla files')
848 install_polkit_pkla = true
849 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400850endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200851conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400852
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400853want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500854if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400855 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200856 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400857else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200858 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400859 libacl = []
860endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200861conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400862
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400863want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500864if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400865 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200866 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400867else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200868 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400869 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400870endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200871conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400872
873want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500874if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400875 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200876 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400877else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200878 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400879 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400880endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200881conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400882
883want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500884if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400885 libkmod = dependency('libkmod',
886 version : '>= 15',
887 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200888 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400889else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200890 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400891 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400892endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200893conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400894
895want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500896if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400897 libpam = cc.find_library('pam', required : want_pam == 'true')
898 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200899 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400900else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200901 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400902 libpam = []
903 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400904endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200905conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400906
907want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500908if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400909 libmicrohttpd = dependency('libmicrohttpd',
910 version : '>= 0.9.33',
911 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200912 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400913else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200914 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400915 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400916endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200917conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400918
919want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500920if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400921 libcryptsetup = dependency('libcryptsetup',
922 version : '>= 1.6.0',
923 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200924 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400925else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200926 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400927 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400928endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200929conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400930
931want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500932if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400933 libcurl = dependency('libcurl',
934 version : '>= 7.32.0',
935 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200936 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400937else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200938 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400939 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400940endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200941conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400942
943want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400944want_libidn2 = get_option('libidn2')
945if want_libidn == 'true' and want_libidn2 == 'true'
946 error('libidn and libidn2 cannot be requested simultaneously')
947endif
948
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500949if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400950 libidn = dependency('libidn',
951 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200952 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400953else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200954 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400955 libidn = []
956endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200957conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500958if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400959 # libidn is used for both libidn and libidn2 objects
960 libidn = dependency('libidn2',
961 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200962 have = libidn.found()
963else
964 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400965endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200966conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400967
968want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500969if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400970 libiptc = dependency('libiptc',
971 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200972 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400973else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200974 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400975 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400976endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200977conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400978
979want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500980if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400981 libqrencode = dependency('libqrencode',
982 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200983 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400984else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200985 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400986 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400987endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200988conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400989
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400990want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500991if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400992 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
993 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200994 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400995else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200996 have = false
997endif
998if not have
999 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001000 libgcrypt = []
1001 libgpg_error = []
1002endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001003conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001004
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001005want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001006if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001007 libgnutls = dependency('gnutls',
1008 version : '>= 3.1.4',
1009 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001010 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001011else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001012 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001013 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001014endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001015conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001016
1017want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001018if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001019 libdw = dependency('libdw',
1020 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001021 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001022else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001023 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001024 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001025endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001026conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001027
1028want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001029if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001030 libz = dependency('zlib',
1031 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001032 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001033else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001034 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001035 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001036endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001037conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001038
1039want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001040if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001041 libbzip2 = cc.find_library('bz2',
1042 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001043 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001044else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001045 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001046 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001047endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001048conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001049
1050want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001051if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001052 libxz = dependency('liblzma',
1053 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001054 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001055else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001056 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001057 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001058endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001059conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001060
1061want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001062if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001063 liblz4 = dependency('liblz4',
1064 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001065 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001066else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001067 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001068 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001069endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001070conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001071
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001072want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001073if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001074 libxkbcommon = dependency('xkbcommon',
1075 version : '>= 0.3.0',
1076 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001077 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001078else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001079 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001080 libxkbcommon = []
1081endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001082conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001083
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001084want_pcre2 = get_option('pcre2')
1085if want_pcre2 != 'false'
1086 libpcre2 = dependency('libpcre2-8',
1087 required : want_pcre2 == 'true')
1088 have = libpcre2.found()
1089else
1090 have = false
1091 libpcre2 = []
1092endif
1093conf.set10('HAVE_PCRE2', have)
1094
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001095want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001096if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001097 libglib = dependency('glib-2.0',
1098 version : '>= 2.22.0',
1099 required : want_glib == 'true')
1100 libgobject = dependency('gobject-2.0',
1101 version : '>= 2.22.0',
1102 required : want_glib == 'true')
1103 libgio = dependency('gio-2.0',
1104 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001105 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001106else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001107 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001108 libglib = []
1109 libgobject = []
1110 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001111endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001112conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001113
1114want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001115if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001116 libdbus = dependency('dbus-1',
1117 version : '>= 1.3.2',
1118 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001119 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001120else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001121 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001122 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001123endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001124conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001125
Yu Watanabe42303dc2017-06-18 05:22:32 +09001126default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001127if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001128 default_dnssec = 'no'
1129endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001130if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001131 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1132 default_dnssec = 'no'
1133endif
1134conf.set('DEFAULT_DNSSEC_MODE',
1135 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1136substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1137
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001138dns_over_tls = get_option('dns-over-tls')
1139if dns_over_tls != 'false'
Yu Watanabe48f5da12018-06-28 16:09:04 +09001140 have = (conf.get('HAVE_GNUTLS') == 1 and
1141 libgnutls.version().version_compare('>=3.5.3'))
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001142 if dns_over_tls == 'true' and not have
1143 error('DNS-over-TLS support was requested, but dependencies are not available')
1144 endif
1145else
1146 have = false
1147endif
1148conf.set10('ENABLE_DNS_OVER_TLS', have)
1149
Iwan Timmerc9299be2018-06-13 20:26:24 +02001150default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001151if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001152 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001153endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001154if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1155 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 +02001156 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001157endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001158conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1159 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1160substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001161
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001162want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001163if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001164 have = (conf.get('HAVE_LIBCURL') == 1 and
1165 conf.get('HAVE_ZLIB') == 1 and
1166 conf.get('HAVE_BZIP2') == 1 and
1167 conf.get('HAVE_XZ') == 1 and
1168 conf.get('HAVE_GCRYPT') == 1)
1169 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001170 error('importd support was requested, but dependencies are not available')
1171 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001172else
1173 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001174endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001175conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001176
1177want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001178if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001179 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1180 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001181 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1182 # it's possible to build one without the other. Complain only if
1183 # support was explictly requested. The auxiliary files like sysusers
1184 # config should be installed when any of the programs are built.
1185 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1186 error('remote support was requested, but dependencies are not available')
1187 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001188 have = have_deps[0] or have_deps[1]
1189else
1190 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001191endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001192conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001193
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001194foreach term : ['utmp',
1195 'hibernate',
1196 'environment-d',
1197 'binfmt',
1198 'coredump',
1199 'resolve',
1200 'logind',
1201 'hostnamed',
1202 'localed',
1203 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001204 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001205 'networkd',
1206 'timedated',
1207 'timesyncd',
1208 'myhostname',
1209 'firstboot',
1210 'randomseed',
1211 'backlight',
1212 'vconsole',
1213 'quotacheck',
1214 'sysusers',
1215 'tmpfiles',
1216 'hwdb',
1217 'rfkill',
1218 'ldconfig',
1219 'efi',
1220 'tpm',
1221 'ima',
1222 'smack',
1223 'gshadow',
1224 'idn',
1225 'nss-systemd']
1226 have = get_option(term)
1227 name = 'ENABLE_' + term.underscorify().to_upper()
1228 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001229endforeach
1230
Yu Watanabe348b4432018-05-07 18:17:35 +09001231conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001232
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001233want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001234install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001235slow_tests = get_option('slow-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001236tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001237fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001238
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001239conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001240
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001241#####################################################################
1242
1243if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001244 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001245
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001246 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001247 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001248 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001249 elif efi_arch == 'x86_64'
1250 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001251 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001252 elif efi_arch == 'arm'
1253 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001254 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001255 elif efi_arch == 'aarch64'
1256 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001257 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001258 else
1259 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001260 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001261 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001262
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001263 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001264 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001265
1266 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001267else
1268 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001269endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001270conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001271
1272#####################################################################
1273
1274config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001275 output : 'config.h',
1276 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001277
Yu Watanabe348b4432018-05-07 18:17:35 +09001278meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1279
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001280includes = include_directories('src/basic',
1281 'src/shared',
1282 'src/systemd',
1283 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001284 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001285 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001286 'src/resolve',
1287 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001288 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001289 'src/login',
1290 'src/udev',
1291 'src/libudev',
1292 'src/core',
1293 'src/libsystemd/sd-bus',
1294 'src/libsystemd/sd-device',
1295 'src/libsystemd/sd-hwdb',
1296 'src/libsystemd/sd-id128',
1297 'src/libsystemd/sd-netlink',
1298 'src/libsystemd/sd-network',
1299 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001300 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001301
1302add_project_arguments('-include', 'config.h', language : 'c')
1303
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001304subdir('po')
1305subdir('catalog')
1306subdir('src/systemd')
1307subdir('src/basic')
1308subdir('src/libsystemd')
1309subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001310subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001311subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001312
1313libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001314 'journal-core',
1315 libjournal_core_sources,
1316 journald_gperf_c,
1317 include_directories : includes,
1318 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001319
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001320libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001321libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001322 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001323 '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 +02001324 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001325 include_directories : includes,
1326 link_args : ['-shared',
1327 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001328 link_with : [libbasic,
1329 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001330 link_whole : [libsystemd_static,
1331 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001332 dependencies : [threads,
1333 librt,
1334 libxz,
1335 liblz4],
1336 link_depends : libsystemd_sym,
1337 install : true,
1338 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001339
Davide Cavalca70848ec2018-04-09 02:43:35 -07001340static_libsystemd = get_option('static-libsystemd')
1341static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1342
1343install_libsystemd_static = static_library(
1344 'systemd',
1345 libsystemd_sources,
1346 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001347 basic_sources,
1348 basic_gcrypt_sources,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001349 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001350 build_by_default : static_libsystemd != 'false',
1351 install : static_libsystemd != 'false',
1352 install_dir : rootlibdir,
1353 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1354 dependencies : [threads,
1355 librt,
1356 libxz,
1357 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001358 libcap,
1359 libblkid,
1360 libmount,
1361 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001362 libgcrypt],
1363 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1364
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001365############################################################
1366
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001367# binaries that have --help and are intended for use by humans,
1368# usually, but not always, installed in /bin.
1369public_programs = []
1370
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001371subdir('src/libudev')
1372subdir('src/shared')
1373subdir('src/core')
1374subdir('src/udev')
1375subdir('src/network')
1376
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001377subdir('src/analyze')
1378subdir('src/journal-remote')
1379subdir('src/coredump')
1380subdir('src/hostname')
1381subdir('src/import')
1382subdir('src/kernel-install')
1383subdir('src/locale')
1384subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001385subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001386subdir('src/nspawn')
1387subdir('src/resolve')
1388subdir('src/timedate')
1389subdir('src/timesync')
1390subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001391subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001392
1393subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001394subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001395subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001396subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001397
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001398############################################################
1399
1400# only static linking apart from libdl, to make sure that the
1401# module is linked to all libraries that it uses.
1402test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001403 'test-dlopen',
1404 test_dlopen_c,
1405 include_directories : includes,
1406 link_with : [libbasic],
1407 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001408
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001409foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001410 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001411 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001412 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001413
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001414 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001415 if condition
1416 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001417
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001418 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1419 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001420
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001421 nss = shared_library(
1422 'nss_' + module,
1423 'src/nss-@0@/nss-@0@.c'.format(module),
1424 version : '2',
1425 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001426 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1427 link_args : ['-Wl,-z,nodelete',
1428 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001429 '-Wl,--version-script=' + version_script_arg,
1430 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001431 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001432 libbasic],
1433 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001434 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001435 link_depends : sym,
1436 install : true,
1437 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001438
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001439 # We cannot use shared_module because it does not support version suffix.
1440 # Unfortunately shared_library insists on creating the symlink…
1441 meson.add_install_script('sh', '-c',
1442 'rm $DESTDIR@0@/libnss_@1@.so'
1443 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001444
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001445 test('dlopen-nss_' + module,
1446 test_dlopen,
1447 args : [nss.full_path()]) # path to dlopen must include a slash
1448 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001449endforeach
1450
1451############################################################
1452
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001453executable('systemd',
1454 systemd_sources,
1455 include_directories : includes,
1456 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001457 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001458 dependencies : [threads,
1459 librt,
1460 libseccomp,
1461 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001462 libmount,
1463 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001464 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001465 install : true,
1466 install_dir : rootlibexecdir)
1467
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001468meson.add_install_script(meson_make_symlink,
1469 join_paths(rootlibexecdir, 'systemd'),
1470 join_paths(rootsbindir, 'init'))
1471
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001472exe = executable('systemd-analyze',
1473 systemd_analyze_sources,
1474 include_directories : includes,
1475 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001476 libshared],
1477 dependencies : [threads,
1478 librt,
1479 libseccomp,
1480 libselinux,
1481 libmount,
1482 libblkid],
1483 install_rpath : rootlibexecdir,
1484 install : true)
1485public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001486
1487executable('systemd-journald',
1488 systemd_journald_sources,
1489 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001490 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001491 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001492 dependencies : [threads,
1493 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001494 liblz4,
1495 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001496 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001497 install : true,
1498 install_dir : rootlibexecdir)
1499
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001500exe = executable('systemd-cat',
1501 systemd_cat_sources,
1502 include_directories : includes,
1503 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001504 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001505 dependencies : [threads],
1506 install_rpath : rootlibexecdir,
1507 install : true)
1508public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001509
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001510exe = executable('journalctl',
1511 journalctl_sources,
1512 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001513 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001514 dependencies : [threads,
1515 libqrencode,
1516 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001517 liblz4,
1518 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001519 install_rpath : rootlibexecdir,
1520 install : true,
1521 install_dir : rootbindir)
1522public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001523
1524executable('systemd-getty-generator',
1525 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001526 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001527 link_with : [libshared],
1528 install_rpath : rootlibexecdir,
1529 install : true,
1530 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001531
1532executable('systemd-debug-generator',
1533 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001534 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001535 link_with : [libshared],
1536 install_rpath : rootlibexecdir,
1537 install : true,
1538 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001539
1540executable('systemd-fstab-generator',
1541 'src/fstab-generator/fstab-generator.c',
1542 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001543 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001544 link_with : [libshared],
1545 install_rpath : rootlibexecdir,
1546 install : true,
1547 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001548
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001549if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001550 executable('30-systemd-environment-d-generator',
1551 'src/environment-d-generator/environment-d-generator.c',
1552 include_directories : includes,
1553 link_with : [libshared],
1554 install_rpath : rootlibexecdir,
1555 install : true,
1556 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001557
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001558 meson.add_install_script(meson_make_symlink,
1559 join_paths(sysconfdir, 'environment'),
1560 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001561endif
1562
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001563if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001564 executable('systemd-hibernate-resume-generator',
1565 'src/hibernate-resume/hibernate-resume-generator.c',
1566 include_directories : includes,
1567 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-Szmek37efbbd2017-04-17 19:25:00 -04001572 executable('systemd-hibernate-resume',
1573 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001574 include_directories : includes,
1575 link_with : [libshared],
1576 install_rpath : rootlibexecdir,
1577 install : true,
1578 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001579endif
1580
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001581if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001582 executable('systemd-gpt-auto-generator',
1583 'src/gpt-auto-generator/gpt-auto-generator.c',
1584 'src/basic/blkid-util.h',
1585 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001586 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001587 dependencies : libblkid,
1588 install_rpath : rootlibexecdir,
1589 install : true,
1590 install_dir : systemgeneratordir)
1591
1592 exe = executable('systemd-dissect',
1593 'src/dissect/dissect.c',
1594 include_directories : includes,
1595 link_with : [libshared],
1596 install_rpath : rootlibexecdir,
1597 install : true,
1598 install_dir : rootlibexecdir)
1599 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001600endif
1601
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001602if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001603 executable('systemd-resolved',
1604 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001605 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001606 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001607 libbasic_gcrypt,
1608 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001609 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001610 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001611 install : true,
1612 install_dir : rootlibexecdir)
1613
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001614 exe = executable('resolvectl',
1615 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001616 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001617 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001618 libbasic_gcrypt,
1619 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001620 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001621 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001622 libm,
1623 libidn],
1624 install_rpath : rootlibexecdir,
1625 install : true)
1626 public_programs += [exe]
Lennart Poettering088c1362018-02-27 17:48:54 +01001627
1628 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001629 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001630 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001631
1632 meson.add_install_script(meson_make_symlink,
1633 join_paths(bindir, 'resolvectl'),
1634 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001635endif
1636
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001637if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001638 executable('systemd-logind',
1639 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001640 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001641 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001642 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001643 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001644 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001645 install_rpath : rootlibexecdir,
1646 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001647 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001648
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001649 exe = executable('loginctl',
1650 loginctl_sources,
1651 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001652 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001653 dependencies : [threads,
1654 liblz4,
1655 libxz],
1656 install_rpath : rootlibexecdir,
1657 install : true,
1658 install_dir : rootbindir)
1659 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001660
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001661 exe = executable('systemd-inhibit',
1662 'src/login/inhibit.c',
1663 include_directories : includes,
1664 link_with : [libshared],
1665 install_rpath : rootlibexecdir,
1666 install : true,
1667 install_dir : rootbindir)
1668 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001669
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001670 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001671 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1672 pam_systemd = shared_library(
1673 'pam_systemd',
1674 pam_systemd_c,
1675 name_prefix : '',
1676 include_directories : includes,
1677 link_args : ['-shared',
1678 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001679 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001680 libshared_static],
1681 dependencies : [threads,
1682 libpam,
1683 libpam_misc],
1684 link_depends : pam_systemd_sym,
1685 install : true,
1686 install_dir : pamlibdir)
1687
1688 test('dlopen-pam_systemd',
1689 test_dlopen,
1690 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1691 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001692endif
1693
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001694executable('systemd-user-runtime-dir',
1695 user_runtime_dir_sources,
1696 include_directories : includes,
1697 link_with : [libshared, liblogind_core],
1698 install_rpath : rootlibexecdir,
1699 install : true,
1700 install_dir : rootlibexecdir)
1701
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001702if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001703 executable('systemd-user-sessions',
1704 'src/user-sessions/user-sessions.c',
1705 include_directories : includes,
1706 link_with : [libshared],
1707 install_rpath : rootlibexecdir,
1708 install : true,
1709 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001710endif
1711
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001712if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001713 exe = executable('bootctl',
1714 'src/boot/bootctl.c',
1715 include_directories : includes,
1716 link_with : [libshared],
1717 dependencies : [libblkid],
1718 install_rpath : rootlibexecdir,
1719 install : true)
1720 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001721endif
1722
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001723exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1724 include_directories : includes,
1725 link_with : [libshared],
1726 dependencies : [threads],
1727 install_rpath : rootlibexecdir,
1728 install : true)
1729public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001730
Felipe Satelerf3794362018-05-22 15:08:57 -04001731
1732if get_option('link-systemctl-shared')
1733 systemctl_link_with = [libshared]
1734else
1735 systemctl_link_with = [libsystemd_static,
1736 libshared_static,
1737 libjournal_client,
1738 libbasic_gcrypt]
1739endif
1740
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001741exe = executable('systemctl', 'src/systemctl/systemctl.c',
1742 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001743 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001744 dependencies : [threads,
1745 libcap,
1746 libselinux,
1747 libxz,
1748 liblz4],
1749 install_rpath : rootlibexecdir,
1750 install : true,
1751 install_dir : rootbindir)
1752public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001753
Lennart Poettering61d05782018-04-16 21:41:40 +02001754if conf.get('ENABLE_PORTABLED') == 1
1755 executable('systemd-portabled',
1756 systemd_portabled_sources,
1757 include_directories : includes,
1758 link_with : [libshared],
1759 dependencies : [threads],
1760 install_rpath : rootlibexecdir,
1761 install : true,
1762 install_dir : rootlibexecdir)
1763
1764 exe = executable('portablectl', 'src/portable/portablectl.c',
1765 include_directories : includes,
1766 link_with : [libshared],
1767 dependencies : [threads],
1768 install_rpath : rootlibexecdir,
1769 install : true,
1770 install_dir : rootlibexecdir)
1771 public_programs += [exe]
1772endif
1773
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001774foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1775 meson.add_install_script(meson_make_symlink,
1776 join_paths(rootbindir, 'systemctl'),
1777 join_paths(rootsbindir, alias))
1778endforeach
1779
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001780if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001781 executable('systemd-backlight',
1782 'src/backlight/backlight.c',
1783 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001784 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001785 install_rpath : rootlibexecdir,
1786 install : true,
1787 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001788endif
1789
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001790if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001791 executable('systemd-rfkill',
1792 'src/rfkill/rfkill.c',
1793 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001794 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001795 install_rpath : rootlibexecdir,
1796 install : true,
1797 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001798endif
1799
1800executable('systemd-system-update-generator',
1801 'src/system-update-generator/system-update-generator.c',
1802 include_directories : includes,
1803 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001804 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001805 install : true,
1806 install_dir : systemgeneratordir)
1807
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001808if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001809 executable('systemd-cryptsetup',
1810 'src/cryptsetup/cryptsetup.c',
1811 include_directories : includes,
1812 link_with : [libshared],
1813 dependencies : [libcryptsetup],
1814 install_rpath : rootlibexecdir,
1815 install : true,
1816 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001817
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001818 executable('systemd-cryptsetup-generator',
1819 'src/cryptsetup/cryptsetup-generator.c',
1820 include_directories : includes,
1821 link_with : [libshared],
1822 dependencies : [libcryptsetup],
1823 install_rpath : rootlibexecdir,
1824 install : true,
1825 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001826
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001827 executable('systemd-veritysetup',
1828 'src/veritysetup/veritysetup.c',
1829 include_directories : includes,
1830 link_with : [libshared],
1831 dependencies : [libcryptsetup],
1832 install_rpath : rootlibexecdir,
1833 install : true,
1834 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001835
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001836 executable('systemd-veritysetup-generator',
1837 'src/veritysetup/veritysetup-generator.c',
1838 include_directories : includes,
1839 link_with : [libshared],
1840 dependencies : [libcryptsetup],
1841 install_rpath : rootlibexecdir,
1842 install : true,
1843 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001844endif
1845
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001846if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001847 executable('systemd-sysv-generator',
1848 'src/sysv-generator/sysv-generator.c',
1849 include_directories : includes,
1850 link_with : [libshared],
1851 install_rpath : rootlibexecdir,
1852 install : true,
1853 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001854
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001855 executable('systemd-rc-local-generator',
1856 'src/rc-local-generator/rc-local-generator.c',
1857 include_directories : includes,
1858 link_with : [libshared],
1859 install_rpath : rootlibexecdir,
1860 install : true,
1861 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001862endif
1863
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001864if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001865 executable('systemd-hostnamed',
1866 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001867 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001868 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001869 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001870 install : true,
1871 install_dir : rootlibexecdir)
1872
1873 exe = executable('hostnamectl',
1874 'src/hostname/hostnamectl.c',
1875 include_directories : includes,
1876 link_with : [libshared],
1877 install_rpath : rootlibexecdir,
1878 install : true)
1879 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001880endif
1881
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001882if conf.get('ENABLE_LOCALED') == 1
1883 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001884 # logind will load libxkbcommon.so dynamically on its own
1885 deps = [libdl]
1886 else
1887 deps = []
1888 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001889
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001890 executable('systemd-localed',
1891 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001892 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001893 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001894 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001895 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001896 install : true,
1897 install_dir : rootlibexecdir)
1898
1899 exe = executable('localectl',
1900 localectl_sources,
1901 include_directories : includes,
1902 link_with : [libshared],
1903 install_rpath : rootlibexecdir,
1904 install : true)
1905 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001906endif
1907
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001908if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001909 executable('systemd-timedated',
1910 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001911 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001912 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001913 install_rpath : rootlibexecdir,
1914 install : true,
1915 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09001916endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001917
Yu Watanabe6129ec82018-05-03 18:07:43 +09001918if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001919 exe = executable('timedatectl',
1920 'src/timedate/timedatectl.c',
1921 include_directories : includes,
1922 install_rpath : rootlibexecdir,
1923 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09001924 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001925 install : true)
1926 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001927endif
1928
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001929if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001930 executable('systemd-timesyncd',
1931 systemd_timesyncd_sources,
1932 include_directories : includes,
1933 link_with : [libshared],
1934 dependencies : [threads,
1935 libm],
1936 install_rpath : rootlibexecdir,
1937 install : true,
1938 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001939
1940 executable('systemd-time-wait-sync',
1941 'src/time-wait-sync/time-wait-sync.c',
1942 include_directories : includes,
1943 link_with : [libshared],
1944 install_rpath : rootlibexecdir,
1945 install : true,
1946 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001947endif
1948
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001949if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001950 executable('systemd-machined',
1951 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001952 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001953 link_with : [libmachine_core,
1954 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001955 install_rpath : rootlibexecdir,
1956 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001957 install_dir : rootlibexecdir)
1958
1959 exe = executable('machinectl',
1960 'src/machine/machinectl.c',
1961 include_directories : includes,
1962 link_with : [libshared],
1963 dependencies : [threads,
1964 libxz,
1965 liblz4],
1966 install_rpath : rootlibexecdir,
1967 install : true,
1968 install_dir : rootbindir)
1969 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001970endif
1971
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001972if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001973 executable('systemd-importd',
1974 systemd_importd_sources,
1975 include_directories : includes,
1976 link_with : [libshared],
1977 dependencies : [threads],
1978 install_rpath : rootlibexecdir,
1979 install : true,
1980 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001981
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001982 systemd_pull = executable('systemd-pull',
1983 systemd_pull_sources,
1984 include_directories : includes,
1985 link_with : [libshared],
1986 dependencies : [libcurl,
1987 libz,
1988 libbzip2,
1989 libxz,
1990 libgcrypt],
1991 install_rpath : rootlibexecdir,
1992 install : true,
1993 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001994
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001995 systemd_import = executable('systemd-import',
1996 systemd_import_sources,
1997 include_directories : includes,
1998 link_with : [libshared],
1999 dependencies : [libcurl,
2000 libz,
2001 libbzip2,
2002 libxz],
2003 install_rpath : rootlibexecdir,
2004 install : true,
2005 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002006
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002007 systemd_export = executable('systemd-export',
2008 systemd_export_sources,
2009 include_directories : includes,
2010 link_with : [libshared],
2011 dependencies : [libcurl,
2012 libz,
2013 libbzip2,
2014 libxz],
2015 install_rpath : rootlibexecdir,
2016 install : true,
2017 install_dir : rootlibexecdir)
2018 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002019endif
2020
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002021if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002022 exe = executable('systemd-journal-upload',
2023 systemd_journal_upload_sources,
2024 include_directories : includes,
2025 link_with : [libshared],
2026 dependencies : [threads,
2027 libcurl,
2028 libgnutls,
2029 libxz,
2030 liblz4],
2031 install_rpath : rootlibexecdir,
2032 install : true,
2033 install_dir : rootlibexecdir)
2034 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002035endif
2036
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002037if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002038 s_j_remote = executable('systemd-journal-remote',
2039 systemd_journal_remote_sources,
2040 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002041 link_with : [libshared,
2042 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002043 dependencies : [threads,
2044 libmicrohttpd,
2045 libgnutls,
2046 libxz,
2047 liblz4],
2048 install_rpath : rootlibexecdir,
2049 install : true,
2050 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002051
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002052 s_j_gatewayd = executable('systemd-journal-gatewayd',
2053 systemd_journal_gatewayd_sources,
2054 include_directories : includes,
2055 link_with : [libshared],
2056 dependencies : [threads,
2057 libmicrohttpd,
2058 libgnutls,
2059 libxz,
2060 liblz4],
2061 install_rpath : rootlibexecdir,
2062 install : true,
2063 install_dir : rootlibexecdir)
2064 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002065endif
2066
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002067if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002068 executable('systemd-coredump',
2069 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002070 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002071 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002072 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002073 libacl,
2074 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002075 libxz,
2076 liblz4],
2077 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002078 install : true,
2079 install_dir : rootlibexecdir)
2080
2081 exe = executable('coredumpctl',
2082 coredumpctl_sources,
2083 include_directories : includes,
2084 link_with : [libshared],
2085 dependencies : [threads,
2086 libxz,
2087 liblz4],
2088 install_rpath : rootlibexecdir,
2089 install : true)
2090 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002091endif
2092
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002093if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002094 exe = executable('systemd-binfmt',
2095 'src/binfmt/binfmt.c',
2096 include_directories : includes,
2097 link_with : [libshared],
2098 install_rpath : rootlibexecdir,
2099 install : true,
2100 install_dir : rootlibexecdir)
2101 public_programs += [exe]
2102
2103 meson.add_install_script('sh', '-c',
2104 mkdir_p.format(binfmtdir))
2105 meson.add_install_script('sh', '-c',
2106 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2107endif
2108
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002109if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002110 executable('systemd-vconsole-setup',
2111 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002112 include_directories : includes,
2113 link_with : [libshared],
2114 install_rpath : rootlibexecdir,
2115 install : true,
2116 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002117endif
2118
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002119if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002120 executable('systemd-random-seed',
2121 'src/random-seed/random-seed.c',
2122 include_directories : includes,
2123 link_with : [libshared],
2124 install_rpath : rootlibexecdir,
2125 install : true,
2126 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002127endif
2128
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002129if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002130 executable('systemd-firstboot',
2131 'src/firstboot/firstboot.c',
2132 include_directories : includes,
2133 link_with : [libshared],
2134 dependencies : [libcrypt],
2135 install_rpath : rootlibexecdir,
2136 install : true,
2137 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002138endif
2139
2140executable('systemd-remount-fs',
2141 'src/remount-fs/remount-fs.c',
2142 'src/core/mount-setup.c',
2143 'src/core/mount-setup.h',
2144 include_directories : includes,
2145 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002146 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002147 install : true,
2148 install_dir : rootlibexecdir)
2149
2150executable('systemd-machine-id-setup',
2151 'src/machine-id-setup/machine-id-setup-main.c',
2152 'src/core/machine-id-setup.c',
2153 'src/core/machine-id-setup.h',
2154 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002155 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002156 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002157 install : true,
2158 install_dir : rootbindir)
2159
2160executable('systemd-fsck',
2161 'src/fsck/fsck.c',
2162 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002163 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002164 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002165 install : true,
2166 install_dir : rootlibexecdir)
2167
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002168executable('systemd-growfs',
2169 'src/partition/growfs.c',
2170 include_directories : includes,
2171 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002172 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002173 install_rpath : rootlibexecdir,
2174 install : true,
2175 install_dir : rootlibexecdir)
2176
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002177executable('systemd-makefs',
2178 'src/partition/makefs.c',
2179 include_directories : includes,
2180 link_with : [libshared],
2181 install_rpath : rootlibexecdir,
2182 install : true,
2183 install_dir : rootlibexecdir)
2184
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002185executable('systemd-sleep',
2186 'src/sleep/sleep.c',
2187 include_directories : includes,
2188 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002189 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002190 install : true,
2191 install_dir : rootlibexecdir)
2192
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002193exe = executable('systemd-sysctl',
2194 'src/sysctl/sysctl.c',
2195 include_directories : includes,
2196 link_with : [libshared],
2197 install_rpath : rootlibexecdir,
2198 install : true,
2199 install_dir : rootlibexecdir)
2200public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002201
2202executable('systemd-ac-power',
2203 'src/ac-power/ac-power.c',
2204 include_directories : includes,
2205 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002206 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002207 install : true,
2208 install_dir : rootlibexecdir)
2209
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002210exe = executable('systemd-detect-virt',
2211 'src/detect-virt/detect-virt.c',
2212 include_directories : includes,
2213 link_with : [libshared],
2214 install_rpath : rootlibexecdir,
2215 install : true)
2216public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002217
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002218exe = executable('systemd-delta',
2219 'src/delta/delta.c',
2220 include_directories : includes,
2221 link_with : [libshared],
2222 install_rpath : rootlibexecdir,
2223 install : true)
2224public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002225
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002226exe = executable('systemd-escape',
2227 'src/escape/escape.c',
2228 include_directories : includes,
2229 link_with : [libshared],
2230 install_rpath : rootlibexecdir,
2231 install : true,
2232 install_dir : rootbindir)
2233public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002234
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002235exe = executable('systemd-notify',
2236 'src/notify/notify.c',
2237 include_directories : includes,
2238 link_with : [libshared],
2239 install_rpath : rootlibexecdir,
2240 install : true,
2241 install_dir : rootbindir)
2242public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002243
2244executable('systemd-volatile-root',
2245 'src/volatile-root/volatile-root.c',
2246 include_directories : includes,
2247 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002248 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002249 install : true,
2250 install_dir : rootlibexecdir)
2251
2252executable('systemd-cgroups-agent',
2253 'src/cgroups-agent/cgroups-agent.c',
2254 include_directories : includes,
2255 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002256 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002257 install : true,
2258 install_dir : rootlibexecdir)
2259
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002260exe = executable('systemd-path',
2261 'src/path/path.c',
2262 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002263 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002264 install_rpath : rootlibexecdir,
2265 install : true)
2266public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002267
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002268exe = executable('systemd-ask-password',
2269 'src/ask-password/ask-password.c',
2270 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002271 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002272 install_rpath : rootlibexecdir,
2273 install : true,
2274 install_dir : rootbindir)
2275public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002276
2277executable('systemd-reply-password',
2278 'src/reply-password/reply-password.c',
2279 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002280 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002281 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002282 install : true,
2283 install_dir : rootlibexecdir)
2284
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002285exe = executable('systemd-tty-ask-password-agent',
2286 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2287 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002288 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002289 install_rpath : rootlibexecdir,
2290 install : true,
2291 install_dir : rootbindir)
2292public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002293
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002294exe = executable('systemd-cgls',
2295 'src/cgls/cgls.c',
2296 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002297 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002298 install_rpath : rootlibexecdir,
2299 install : true)
2300public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002301
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002302exe = executable('systemd-cgtop',
2303 'src/cgtop/cgtop.c',
2304 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002305 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002306 install_rpath : rootlibexecdir,
2307 install : true)
2308public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002309
2310executable('systemd-initctl',
2311 'src/initctl/initctl.c',
2312 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002313 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002314 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002315 install : true,
2316 install_dir : rootlibexecdir)
2317
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002318exe = executable('systemd-mount',
2319 'src/mount/mount-tool.c',
2320 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002321 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002322 install_rpath : rootlibexecdir,
2323 install : true)
2324public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002325
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002326meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002327 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002328
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002329exe = executable('systemd-run',
2330 'src/run/run.c',
2331 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002332 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002333 install_rpath : rootlibexecdir,
2334 install : true)
2335public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002336
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002337exe = executable('systemd-stdio-bridge',
2338 'src/stdio-bridge/stdio-bridge.c',
2339 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002340 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002341 install_rpath : rootlibexecdir,
2342 install : true)
2343public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002344
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002345exe = executable('busctl',
2346 'src/busctl/busctl.c',
2347 'src/busctl/busctl-introspect.c',
2348 'src/busctl/busctl-introspect.h',
2349 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002350 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002351 install_rpath : rootlibexecdir,
2352 install : true)
2353public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002354
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002355if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002356 exe = executable('systemd-sysusers',
2357 'src/sysusers/sysusers.c',
2358 include_directories : includes,
2359 link_with : [libshared],
2360 install_rpath : rootlibexecdir,
2361 install : true,
2362 install_dir : rootbindir)
2363 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002364endif
2365
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002366if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002367 exe = executable('systemd-tmpfiles',
2368 'src/tmpfiles/tmpfiles.c',
2369 include_directories : includes,
2370 link_with : [libshared],
2371 dependencies : [libacl],
2372 install_rpath : rootlibexecdir,
2373 install : true,
2374 install_dir : rootbindir)
2375 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002376
2377 test('test-systemd-tmpfiles',
2378 test_systemd_tmpfiles_py,
2379 args : exe.full_path())
2380 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002381endif
2382
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002383if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002384 exe = executable('systemd-hwdb',
2385 'src/hwdb/hwdb.c',
2386 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2387 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002388 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002389 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002390 install : true,
2391 install_dir : rootbindir)
2392 public_programs += [exe]
2393endif
2394
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002395if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002396 executable('systemd-quotacheck',
2397 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002398 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002399 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002400 install_rpath : rootlibexecdir,
2401 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002402 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002403endif
2404
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002405exe = executable('systemd-socket-proxyd',
2406 'src/socket-proxy/socket-proxyd.c',
2407 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002408 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002409 dependencies : [threads],
2410 install_rpath : rootlibexecdir,
2411 install : true,
2412 install_dir : rootlibexecdir)
2413public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002414
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002415exe = executable('systemd-udevd',
2416 systemd_udevd_sources,
2417 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002418 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002419 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002420 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002421 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002422 dependencies : [threads,
2423 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002424 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002425 libacl,
2426 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002427 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002428 install : true,
2429 install_dir : rootlibexecdir)
2430public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002431
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002432exe = executable('udevadm',
2433 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002434 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002435 include_directories : includes,
2436 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002437 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002438 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002439 dependencies : [threads,
2440 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002441 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002442 libacl,
2443 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002444 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002445 install : true,
2446 install_dir : rootbindir)
2447public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002448
2449executable('systemd-shutdown',
2450 systemd_shutdown_sources,
2451 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002452 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002453 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002454 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002455 install : true,
2456 install_dir : rootlibexecdir)
2457
2458executable('systemd-update-done',
2459 'src/update-done/update-done.c',
2460 include_directories : includes,
2461 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002462 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002463 install : true,
2464 install_dir : rootlibexecdir)
2465
2466executable('systemd-update-utmp',
2467 'src/update-utmp/update-utmp.c',
2468 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002469 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002470 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002471 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002472 install : true,
2473 install_dir : rootlibexecdir)
2474
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002475if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002476 executable('systemd-modules-load',
2477 'src/modules-load/modules-load.c',
2478 include_directories : includes,
2479 link_with : [libshared],
2480 dependencies : [libkmod],
2481 install_rpath : rootlibexecdir,
2482 install : true,
2483 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002484
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002485 meson.add_install_script('sh', '-c',
2486 mkdir_p.format(modulesloaddir))
2487 meson.add_install_script('sh', '-c',
2488 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002489endif
2490
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002491exe = executable('systemd-nspawn',
2492 systemd_nspawn_sources,
2493 'src/core/mount-setup.c', # FIXME: use a variable?
2494 'src/core/mount-setup.h',
2495 'src/core/loopback-setup.c',
2496 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002497 include_directories : includes,
2498 link_with : [libnspawn_core,
2499 libshared],
2500 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002501 install_rpath : rootlibexecdir,
2502 install : true)
2503public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002504
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002505if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002506 executable('systemd-networkd',
2507 systemd_networkd_sources,
2508 include_directories : includes,
2509 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002510 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002511 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002512 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002513 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002514 install_rpath : rootlibexecdir,
2515 install : true,
2516 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002517
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002518 executable('systemd-networkd-wait-online',
2519 systemd_networkd_wait_online_sources,
2520 include_directories : includes,
2521 link_with : [libnetworkd_core,
2522 libshared],
2523 install_rpath : rootlibexecdir,
2524 install : true,
2525 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002526
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002527 exe = executable('networkctl',
2528 networkctl_sources,
2529 include_directories : includes,
2530 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002531 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002532 install_rpath : rootlibexecdir,
2533 install : true,
2534 install_dir : rootbindir)
2535 public_programs += [exe]
2536endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002537
2538executable('systemd-sulogin-shell',
2539 ['src/sulogin-shell/sulogin-shell.c'],
2540 include_directories : includes,
2541 link_with : [libshared],
2542 install_rpath : rootlibexecdir,
2543 install : true,
2544 install_dir : rootlibexecdir)
2545
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002546############################################################
2547
2548foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002549 sources = tuple[0]
2550 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2551 dependencies = tuple[2]
2552 condition = tuple.length() >= 4 ? tuple[3] : ''
2553 type = tuple.length() >= 5 ? tuple[4] : ''
2554 defs = tuple.length() >= 6 ? tuple[5] : []
2555 incs = tuple.length() >= 7 ? tuple[6] : includes
2556 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002557
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002558 name = sources[0].split('/')[-1].split('.')[0]
2559 if type.startswith('timeout=')
2560 timeout = type.split('=')[1].to_int()
2561 type = ''
2562 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002563 if want_tests == 'false'
2564 message('Not compiling @0@ because tests is set to false'.format(name))
2565 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002566 exe = executable(
2567 name,
2568 sources,
2569 include_directories : incs,
2570 link_with : link_with,
2571 dependencies : dependencies,
2572 c_args : defs,
2573 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002574 install : install_tests,
2575 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002576
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002577 if type == 'manual'
2578 message('@0@ is a manual test'.format(name))
2579 elif type == 'unsafe' and want_tests != 'unsafe'
2580 message('@0@ is an unsafe test'.format(name))
2581 else
2582 test(name, exe,
2583 env : test_env,
2584 timeout : timeout)
2585 endif
2586 else
2587 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2588 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002589endforeach
2590
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002591exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002592 'test-libsystemd-sym',
2593 test_libsystemd_sym_c,
2594 include_directories : includes,
2595 link_with : [libsystemd],
2596 install : install_tests,
2597 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002598test('test-libsystemd-sym', exe)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002599
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002600exe = executable(
2601 'test-libsystemd-static-sym',
2602 test_libsystemd_sym_c,
2603 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002604 link_with : [install_libsystemd_static],
2605 dependencies : [threads], # threads is already included in dependencies on the library,
2606 # but does not seem to get propagated. Add here as a work-around.
Davide Cavalca20f3d322018-04-24 13:34:48 -07002607 build_by_default : static_libsystemd_pic,
2608 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002609 install_dir : testsdir)
Davide Cavalca20f3d322018-04-24 13:34:48 -07002610if static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002611 test('test-libsystemd-static-sym', exe)
2612endif
2613
2614exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002615 'test-libudev-sym',
2616 test_libudev_sym_c,
2617 include_directories : includes,
2618 c_args : ['-Wno-deprecated-declarations'],
2619 link_with : [libudev],
2620 install : install_tests,
2621 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002622test('test-libudev-sym', exe)
2623
2624exe = executable(
2625 'test-libudev-static-sym',
2626 test_libudev_sym_c,
2627 include_directories : includes,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002628 c_args : ['-Wno-deprecated-declarations'],
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002629 link_with : [install_libudev_static],
Davide Cavalca20f3d322018-04-24 13:34:48 -07002630 build_by_default : static_libudev_pic,
2631 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002632 install_dir : testsdir)
Davide Cavalca20f3d322018-04-24 13:34:48 -07002633if static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002634 test('test-libudev-static-sym', exe)
2635endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002636
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002637############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002638
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002639fuzzer_exes = []
2640
2641foreach tuple : fuzzers
2642 sources = tuple[0]
2643 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2644 dependencies = tuple[2]
2645 defs = tuple.length() >= 4 ? tuple[3] : []
2646 incs = tuple.length() >= 5 ? tuple[4] : includes
2647
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002648 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002649 dependencies += fuzzing_engine
2650 else
2651 sources += 'src/fuzz/fuzz-main.c'
2652 endif
2653
2654 name = sources[0].split('/')[-1].split('.')[0]
2655
2656 fuzzer_exes += executable(
2657 name,
2658 sources,
2659 include_directories : [incs, include_directories('src/fuzz')],
2660 link_with : link_with,
2661 dependencies : dependencies,
2662 c_args : defs,
2663 install : false)
2664endforeach
2665
2666run_target('fuzzers',
2667 depends : fuzzer_exes,
2668 command : ['true'])
2669
2670############################################################
2671
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002672make_directive_index_py = find_program('tools/make-directive-index.py')
2673make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002674xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002675hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002676
2677subdir('units')
2678subdir('sysctl.d')
2679subdir('sysusers.d')
2680subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002681subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002682subdir('hwdb')
2683subdir('network')
2684subdir('man')
2685subdir('shell-completion/bash')
2686subdir('shell-completion/zsh')
Lennart Poettering2d684e62018-03-28 16:58:37 +02002687subdir('doc/sysvinit')
2688subdir('doc/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002689
2690# FIXME: figure out if the warning is true:
2691# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2692install_subdir('factory/etc',
2693 install_dir : factorydir)
2694
2695
2696install_data('xorg/50-systemd-user.sh',
2697 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002698install_data('modprobe.d/systemd.conf',
2699 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002700install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002701 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002702 'NEWS',
2703 'README',
2704 'doc/CODING_STYLE',
2705 'doc/DISTRO_PORTING',
2706 'doc/ENVIRONMENT.md',
2707 'doc/HACKING',
2708 'doc/TRANSIENT-SETTINGS.md',
2709 'doc/TRANSLATORS',
2710 'doc/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002711 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2712 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002713
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002714meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2715meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2716
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002717############################################################
2718
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002719meson_check_help = find_program('tools/meson-check-help.sh')
2720
2721foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002722 name = exec.full_path().split('/')[-1]
2723 test('check-help-' + name,
2724 meson_check_help,
2725 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002726endforeach
2727
2728############################################################
2729
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002730# Enable tests for all supported sanitizers
2731foreach tuple : sanitizers
2732 sanitizer = tuple[0]
2733 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002734
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002735 have = run_command(check_compilation_sh,
2736 cc.cmd_array(), '-x', 'c',
2737 '-fsanitize=@0@'.format(sanitizer),
2738 '-include', link_test_c).returncode() == 0
2739 message('@0@ sanitizer supported: @1@'.format(sanitizer, have ? 'yes' : 'no'))
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002740
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002741 if have
2742 prev = ''
2743 foreach p : fuzz_regression_tests
2744 b = p.split('/')[-2]
2745 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002746
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002747 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002748
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002749 if name != prev
2750 if want_tests == 'false'
2751 message('Not compiling @0@ because tests is set to false'.format(name))
2752 elif slow_tests
2753 exe = custom_target(
2754 name,
2755 output : name,
2756 depends : build,
2757 command : [env, 'ln', '-fs',
2758 join_paths(build.full_path(), b),
2759 '@OUTPUT@'],
2760 build_by_default : true)
2761 else
2762 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2763 endif
2764 endif
2765 prev = name
2766
2767 if want_tests != 'false' and slow_tests
2768 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2769 env,
2770 args : [exe.full_path(),
2771 join_paths(meson.source_root(),
2772 'test/fuzz-regressions',
2773 p)])
2774 endif
2775 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002776 endif
2777endforeach
2778
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002779
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002780############################################################
2781
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002782if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002783 all_files = run_command(
2784 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002785 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002786 'ls-files',
2787 ':/*.[ch]'])
2788 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002789
userwithuide85a6902017-08-09 13:41:44 +00002790 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002791 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002792 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002793 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00002794 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002795 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002796 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002797endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002798
2799if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002800 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002801 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002802 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002803 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002804endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002805
2806if git.found()
2807 git_head = run_command(
2808 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002809 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002810 'rev-parse', 'HEAD']).stdout().strip()
2811 git_head_short = run_command(
2812 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002813 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002814 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2815
2816 run_target(
2817 'git-snapshot',
2818 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002819 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002820 git_head_short),
2821 '--prefix', 'systemd-@0@/'.format(git_head),
2822 'HEAD'])
2823endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002824
2825############################################################
2826
Lennart Poettering51b13862017-12-20 12:51:14 +01002827meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2828run_target(
2829 'check-api-docs',
2830 depends : [man, libsystemd, libudev],
2831 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2832
2833############################################################
2834
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002835status = [
2836 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2837
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002838 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002839 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002840 'prefix directory: @0@'.format(prefixdir),
2841 'rootprefix directory: @0@'.format(rootprefixdir),
2842 'sysconf directory: @0@'.format(sysconfdir),
2843 'include directory: @0@'.format(includedir),
2844 'lib directory: @0@'.format(libdir),
2845 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002846 'SysV init scripts: @0@'.format(sysvinit_path),
2847 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002848 'PAM modules directory: @0@'.format(pamlibdir),
2849 'PAM configuration directory: @0@'.format(pamconfdir),
2850 'RPM macros directory: @0@'.format(rpmmacrosdir),
2851 'modprobe.d directory: @0@'.format(modprobedir),
2852 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2853 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2854 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2855 'bash completions directory: @0@'.format(bashcompletiondir),
2856 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002857 'extra start script: @0@'.format(get_option('rc-local')),
2858 'extra stop script: @0@'.format(get_option('halt-local')),
2859 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2860 get_option('debug-tty')),
2861 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002862 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002863 'maximum system UID: @0@'.format(system_uid_max),
2864 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002865 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2866 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2867 'minimum container UID base: @0@'.format(container_uid_base_min),
2868 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002869 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002870 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002871 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002872 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002873 'nobody user name: @0@'.format(nobody_user),
2874 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002875 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002876 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002877
2878 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02002879 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002880 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2881 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2882
2883alt_dns_servers = '\n '.join(dns_servers.split(' '))
2884alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2885status += [
2886 'default DNS servers: @0@'.format(alt_dns_servers),
2887 'default NTP servers: @0@'.format(alt_ntp_servers)]
2888
2889alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2890 '@@0@'.format(time_epoch)).stdout().strip()
2891status += [
2892 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2893
2894# TODO:
2895# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2896# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2897# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2898
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002899if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002900 status += [
2901 'efi arch: @0@'.format(efi_arch)]
2902
2903 if have_gnu_efi
2904 status += [
2905 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2906 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002907 'EFI lib directory: @0@'.format(efi_libdir),
2908 'EFI lds directory: @0@'.format(efi_ldsdir),
2909 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002910 endif
2911endif
2912
2913found = []
2914missing = []
2915
2916foreach tuple : [
2917 ['libcryptsetup'],
2918 ['PAM'],
2919 ['AUDIT'],
2920 ['IMA'],
2921 ['AppArmor'],
2922 ['SELinux'],
2923 ['SECCOMP'],
2924 ['SMACK'],
2925 ['zlib'],
2926 ['xz'],
2927 ['lz4'],
2928 ['bzip2'],
2929 ['ACL'],
2930 ['gcrypt'],
2931 ['qrencode'],
2932 ['microhttpd'],
2933 ['gnutls'],
2934 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002935 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002936 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002937 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002938 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002939 ['libiptc'],
2940 ['elfutils'],
2941 ['binfmt'],
2942 ['vconsole'],
2943 ['quotacheck'],
2944 ['tmpfiles'],
2945 ['environment.d'],
2946 ['sysusers'],
2947 ['firstboot'],
2948 ['randomseed'],
2949 ['backlight'],
2950 ['rfkill'],
2951 ['logind'],
2952 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02002953 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002954 ['importd'],
2955 ['hostnamed'],
2956 ['timedated'],
2957 ['timesyncd'],
2958 ['localed'],
2959 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002960 ['resolve'],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09002961 ['DNS-over-TLS'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002962 ['coredump'],
2963 ['polkit'],
2964 ['legacy pkla', install_polkit_pkla],
2965 ['efi'],
2966 ['gnu-efi', have_gnu_efi],
2967 ['kmod'],
2968 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01002969 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002970 ['blkid'],
2971 ['dbus'],
2972 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002973 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002974 ['hwdb'],
2975 ['tpm'],
2976 ['man pages', want_man],
2977 ['html pages', want_html],
2978 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002979 ['SysV compat'],
2980 ['utmp'],
2981 ['ldconfig'],
2982 ['hibernate'],
2983 ['adm group', get_option('adm-group')],
2984 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002985 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002986 ['debug hashmap'],
2987 ['debug mmap cache'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02002988 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002989]
2990
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01002991 if tuple.length() >= 2
2992 cond = tuple[1]
2993 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002994 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2995 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002996 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002997 endif
2998 if cond
2999 found += [tuple[0]]
3000 else
3001 missing += [tuple[0]]
3002 endif
3003endforeach
3004
3005status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003006 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003007 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003008 '',
3009 'disabled features: @0@'.format(', '.join(missing)),
3010 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003011message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003012
3013if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003014 warning('\n' +
3015 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3016 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3017 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003018endif