blob: 5fcc57520a512907d9628e41acf58e943008b940 [file] [log] [blame]
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01001# SPDX-License-Identifier: LGPL-2.1+
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01002
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003project('systemd', 'c',
Lennart Poetteringde7436b2018-06-22 13:03:47 +02004 version : '239',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04005 license : 'LGPLv2+',
6 default_options: [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04007 'c_std=gnu99',
8 'prefix=/usr',
9 'sysconfdir=/etc',
10 'localstatedir=/var',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040011 ],
Yu Watanabe7a6397d2018-05-15 20:18:24 +090012 meson_version : '>= 0.46',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040013 )
14
Lennart Poetteringde7436b2018-06-22 13:03:47 +020015libsystemd_version = '0.23.0'
16libudev_version = '1.6.11'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020017
Yu Watanabe348b4432018-05-07 18:17:35 +090018# We need the same data in two different formats, ugh!
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040019# Also, for hysterical reasons, we use different variable
20# names, sometimes. Not all variables are included in every
21# set. Ugh, ugh, ugh!
22conf = configuration_data()
23conf.set_quoted('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version())
24conf.set_quoted('PACKAGE_VERSION', meson.project_version())
25
26substs = configuration_data()
27substs.set('PACKAGE_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
28substs.set('PACKAGE_VERSION', meson.project_version())
29
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040030#####################################################################
31
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040032# Try to install the git pre-commit hook
33git_hook = run_command(join_paths(meson.source_root(), 'tools/add-git-hook.sh'))
34if git_hook.returncode() == 0
35 message(git_hook.stdout().strip())
36endif
37
38#####################################################################
39
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010040if get_option('split-usr') == 'auto'
41 split_usr = run_command('test', '-L', '/bin').returncode() != 0
42else
43 split_usr = get_option('split-usr') == 'true'
44endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010045conf.set10('HAVE_SPLIT_USR', split_usr,
46 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010047
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010048if get_option('split-bin') == 'auto'
49 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
50else
51 split_bin = get_option('split-bin') == 'true'
52endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010053conf.set10('HAVE_SPLIT_BIN', split_bin,
54 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010055
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010056rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010057# Unusual rootprefixdir values are used by some distros
58# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010059rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010060if rootprefixdir == ''
61 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010062endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040063
64sysvinit_path = get_option('sysvinit-path')
65sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090066conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020067 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040068
69# join_paths ignore the preceding arguments if an absolute component is
70# encountered, so this should canonicalize various paths when they are
71# absolute or relative.
72prefixdir = get_option('prefix')
73if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040074 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040075endif
76bindir = join_paths(prefixdir, get_option('bindir'))
77libdir = join_paths(prefixdir, get_option('libdir'))
78sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
79includedir = join_paths(prefixdir, get_option('includedir'))
80datadir = join_paths(prefixdir, get_option('datadir'))
81localstatedir = join_paths('/', get_option('localstatedir'))
82
83rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010084rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040085rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
86
87rootlibdir = get_option('rootlibdir')
88if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040089 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040090endif
91
92# Dirs of external packages
Michael Bieble17e5ba2017-04-13 10:30:56 -040093pkgconfigdatadir = join_paths(datadir, 'pkgconfig')
94pkgconfiglibdir = join_paths(libdir, 'pkgconfig')
95polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
96polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
97polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
98varlogdir = join_paths(localstatedir, 'log')
99xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900100rpmmacrosdir = get_option('rpmmacrosdir')
101if rpmmacrosdir != 'no'
102 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
103endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200104modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400105
106# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400107pkgdatadir = join_paths(datadir, 'systemd')
108environmentdir = join_paths(prefixdir, 'lib/environment.d')
109pkgsysconfdir = join_paths(sysconfdir, 'systemd')
110userunitdir = join_paths(prefixdir, 'lib/systemd/user')
111userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
112tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
113sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
114sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
115binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
116modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
117networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
118pkgincludedir = join_paths(includedir, 'systemd')
119systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
120usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
121systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
122userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
123systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
124systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
125systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
126systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
127udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
128udevhomedir = udevlibexecdir
129udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
130udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
131catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
132kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
133factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400134bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
135testsdir = join_paths(prefixdir, 'lib/systemd/tests')
136systemdstatedir = join_paths(localstatedir, 'lib/systemd')
137catalogstatedir = join_paths(systemdstatedir, 'catalog')
138randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200139profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400140
tblume75aaade2018-02-01 22:46:15 +0100141docdir = get_option('docdir')
142if docdir == ''
143 docdir = join_paths(datadir, 'doc/systemd')
144endif
145
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400146dbuspolicydir = get_option('dbuspolicydir')
147if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400148 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400149endif
150
151dbussessionservicedir = get_option('dbussessionservicedir')
152if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400153 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400154endif
155
156dbussystemservicedir = get_option('dbussystemservicedir')
157if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400158 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400159endif
160
161pamlibdir = get_option('pamlibdir')
162if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400163 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400164endif
165
166pamconfdir = get_option('pamconfdir')
167if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400168 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400169endif
170
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100171memory_accounting_default = get_option('memory-accounting-default')
172
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400173conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400174conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400175conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
176conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
177conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400178conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
179conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100180
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100181conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100182
Michael Bieble17e5ba2017-04-13 10:30:56 -0400183conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400184conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
185conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400186conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
187conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
188conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
189conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100190conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100191conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400192conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
193conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
194conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
195conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
196conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100197conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400198conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400199conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
200conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400201conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
202conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
203conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
204conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
205conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
206conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400207conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
208conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400209conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400210conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400211conf.set_quoted('LIBDIR', libdir)
212conf.set_quoted('ROOTLIBDIR', rootlibdir)
213conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
214conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400215conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
216conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
217conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
218conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
219conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
220conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100221conf.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'true' : 'false')
Michal Koutný7f672e82018-03-09 18:27:13 +0100222conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400223
224conf.set_quoted('ABS_BUILD_DIR', meson.build_root())
225conf.set_quoted('ABS_SRC_DIR', meson.source_root())
226
227substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400228substs.set('exec_prefix', prefixdir)
229substs.set('libdir', libdir)
230substs.set('rootlibdir', rootlibdir)
231substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400232substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400233substs.set('bindir', bindir)
234substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400235substs.set('rootlibexecdir', rootlibexecdir)
236substs.set('systemunitdir', systemunitdir)
237substs.set('userunitdir', userunitdir)
238substs.set('systempresetdir', systempresetdir)
239substs.set('userpresetdir', userpresetdir)
240substs.set('udevhwdbdir', udevhwdbdir)
241substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400242substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200243substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400244substs.set('catalogdir', catalogdir)
245substs.set('tmpfilesdir', tmpfilesdir)
246substs.set('sysusersdir', sysusersdir)
247substs.set('sysctldir', sysctldir)
248substs.set('binfmtdir', binfmtdir)
249substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200250substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400251substs.set('systemgeneratordir', systemgeneratordir)
252substs.set('usergeneratordir', usergeneratordir)
253substs.set('systemenvgeneratordir', systemenvgeneratordir)
254substs.set('userenvgeneratordir', userenvgeneratordir)
255substs.set('systemshutdowndir', systemshutdowndir)
256substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400257substs.set('VARLOGDIR', varlogdir)
258substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400259substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
260substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400261substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
262substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
263substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
264substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100265substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400266
267#####################################################################
268
269cc = meson.get_compiler('c')
270pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400271check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100272meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400273
Adam Duskett08318a22018-01-15 06:25:46 -0500274if get_option('tests') != 'false'
275 cxx = find_program('c++', required : false)
276 if cxx.found()
277 # Used only for tests
278 add_languages('cpp')
279 endif
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400280endif
281
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500282want_ossfuzz = get_option('oss-fuzz')
283want_libfuzzer = get_option('llvm-fuzz')
284fuzzer_build = want_ossfuzz or want_libfuzzer
285if want_ossfuzz and want_libfuzzer
286 error('only one of oss-fuzz and llvm-fuzz can be specified')
287endif
288if want_libfuzzer
289 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
290endif
291if want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500292 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
293endif
294
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900295possible_cc_flags = [
296 '-Wextra',
297 '-Werror=undef',
298 '-Wlogical-op',
299 '-Wmissing-include-dirs',
300 '-Wold-style-definition',
301 '-Wpointer-arith',
302 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900303 '-Wfloat-equal',
304 '-Wsuggest-attribute=noreturn',
305 '-Werror=missing-prototypes',
306 '-Werror=implicit-function-declaration',
307 '-Werror=missing-declarations',
308 '-Werror=return-type',
309 '-Werror=incompatible-pointer-types',
310 '-Werror=format=2',
311 '-Wstrict-prototypes',
312 '-Wredundant-decls',
313 '-Wmissing-noreturn',
314 '-Wimplicit-fallthrough=5',
315 '-Wshadow',
316 '-Wendif-labels',
317 '-Wstrict-aliasing=2',
318 '-Wwrite-strings',
319 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200320 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200321 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900322 '-Wdate-time',
323 '-Wnested-externs',
324 '-ffast-math',
325 '-fno-common',
326 '-fdiagnostics-show-option',
327 '-fno-strict-aliasing',
328 '-fvisibility=hidden',
329 '-fstack-protector',
330 '-fstack-protector-strong',
331 '--param=ssp-buffer-size=4',
332]
333
334# --as-needed and --no-undefined are provided by meson by default,
335# run mesonconf to see what is enabled
336possible_link_flags = [
337 '-Wl,-z,relro',
338 '-Wl,-z,now',
339]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400340
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500341# the oss-fuzz fuzzers are not built with -fPIE, so don't
342# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500343if not fuzzer_build
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900344 possible_cc_flags += '-fPIE'
345 possible_link_flags += '-pie'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500346endif
347
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900348if cc.get_id() == 'clang'
349 possible_cc_flags += [
350 '-Wno-typedef-redefinition',
351 '-Wno-gnu-variable-sized-type-not-at-end',
352 ]
353endif
354
355if get_option('buildtype') != 'debug'
356 possible_cc_flags += [
357 '-ffunction-sections',
358 '-fdata-sections',
359 ]
360
361 possible_link_flags += '-Wl,--gc-sections'
362endif
363
364add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900365add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900366
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400367# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
Zbigniew Jędrzejewski-Szmekd40f5cc2018-06-07 15:08:02 +0200368# arguments, just emits a warning. So test for the "positive" version instead.
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400369foreach arg : ['unused-parameter',
370 'missing-field-initializers',
371 'unused-result',
Zbigniew Jędrzejewski-Szmekfb1b5882017-09-04 19:49:12 +0300372 'format-signedness',
373 'error=nonnull', # work-around for gcc 7.1 turning this on on its own
374 ]
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400375 if cc.has_argument('-W' + arg)
376 add_project_arguments('-Wno-' + arg, language : 'c')
377 endif
378endforeach
379
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800380if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400381 #include <time.h>
382 #include <inttypes.h>
383 typedef uint64_t usec_t;
384 usec_t now(clockid_t clock);
385 int main(void) {
386 struct timespec now;
387 return 0;
388 }
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800389''', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400390 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400391endif
392
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400393cpp = ' '.join(cc.cmd_array()) + ' -E'
394
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400395#####################################################################
396# compilation result tests
397
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400398conf.set('_GNU_SOURCE', true)
399conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400400
401conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
402conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
403conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
404conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
405conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
406conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
407conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
408
409decl_headers = '''
410#include <uchar.h>
411#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000412#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100413#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400414'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400415
416foreach decl : ['char16_t',
417 'char32_t',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400418 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000419 'struct fib_rule_uid_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100420 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400421 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400422
423 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200424 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
425
426 if decl == 'struct statx'
427 if have
428 want_linux_stat_h = false
429 else
430 have = cc.sizeof(decl,
431 prefix : decl_headers + '#include <linux/stat.h>',
432 args : '-D_GNU_SOURCE') > 0
433 want_linux_stat_h = have
434 endif
435 endif
436
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200437 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400438endforeach
439
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200440conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700441
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400442foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
443 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
444 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
445 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530446 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400447 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
448 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
449 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
450 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
451 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530452 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400453 # if_tunnel.h is buggy and cannot be included on its own
454 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
455 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
456 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
457 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
458 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
459 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
460 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530461 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400462 ['NDA_IFINDEX', 'linux/neighbour.h'],
463 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000464 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400465 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530466 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400467 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400468 prefix = decl.length() > 2 ? decl[2] : ''
469 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200470 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400471endforeach
472
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400473foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200474 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400475endforeach
476
477foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100478 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100479 ['gettid', '''#include <sys/types.h>
480 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100481 ['pivot_root', '''#include <stdlib.h>
482 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100483 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400484 #include <sys/stat.h>
485 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100486 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100487 ['renameat2', '''#include <stdio.h>
488 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400489 ['kcmp', '''#include <linux/kcmp.h>'''],
490 ['keyctl', '''#include <sys/types.h>
491 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100492 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400493 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200494 ['bpf', '''#include <sys/syscall.h>
495 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100496 ['statx', '''#include <sys/types.h>
497 #include <sys/stat.h>
498 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100499 ['explicit_bzero' , '''#include <string.h>'''],
500 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400501]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400502
Lennart Poettering85db59b2017-12-25 12:01:14 +0100503 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200504 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400505endforeach
506
Lennart Poettering85db59b2017-12-25 12:01:14 +0100507if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200508 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200509 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400510else
511 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200512 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200513 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400514endif
515
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400516#####################################################################
517
518sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400519awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400520m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400521stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400522git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100523env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100524perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400525
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400526meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400527mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400528test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
529splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400530
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400531# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
532# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500533progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400534 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400535 ['kmod', '/usr/bin/kmod' ],
536 ['kexec', '/usr/sbin/kexec' ],
537 ['sulogin', '/usr/sbin/sulogin' ],
538 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
539 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
540 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
541 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
542 ]
543foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400544 path = get_option(prog[0] + '-path')
545 if path != ''
546 message('Using @1@ for @0@'.format(prog[0], path))
547 else
548 exe = find_program(prog[0],
549 '/usr/sbin/' + prog[0],
550 '/sbin/' + prog[0],
551 required: false)
552 path = exe.found() ? exe.path() : prog[1]
553 endif
554 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
555 conf.set_quoted(name, path)
556 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400557endforeach
558
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500559conf.set_quoted('TELINIT', get_option('telinit-path'))
560
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400561if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100562 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400563endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400564
565############################################################
566
567gperf = find_program('gperf')
568
569gperf_test_format = '''
570#include <string.h>
571const char * in_word_set(const char *, @0@);
572@1@
573'''
574gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
575gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
576gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
577if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400578 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400579else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400580 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
581 if cc.compiles(gperf_test)
582 gperf_len_type = 'unsigned'
583 else
584 error('unable to determine gperf len type')
585 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400586endif
587message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400588conf.set('GPERF_LEN_TYPE', gperf_len_type,
589 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400590
591############################################################
592
593if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400594 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400595endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100596foreach header : ['crypt.h',
597 'linux/btrfs.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400598 'linux/memfd.h',
599 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200600 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400601 'valgrind/memcheck.h',
602 'valgrind/valgrind.h',
603 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400604
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200605 conf.set10('HAVE_' + header.underscorify().to_upper(),
606 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400607endforeach
608
609############################################################
610
611conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400612conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
613gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400614
615default_hierarchy = get_option('default-hierarchy')
616conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
617 description : 'default cgroup hierarchy as string')
618if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400619 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400620elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400621 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400622else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400623 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400624endif
625
626time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900627if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400628 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900629 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400630endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400631conf.set('TIME_EPOCH', time_epoch)
632
633system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900634if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400635 system_uid_max = run_command(
636 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800637 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
638 '/etc/login.defs').stdout().strip()
639 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900640 system_uid_max = 999
641 else
642 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800643 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400644endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400645conf.set('SYSTEM_UID_MAX', system_uid_max)
646substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400647
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400648system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900649if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400650 system_gid_max = run_command(
651 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800652 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
653 '/etc/login.defs').stdout().strip()
654 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900655 system_gid_max = 999
656 else
657 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800658 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400659endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400660conf.set('SYSTEM_GID_MAX', system_gid_max)
661substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400662
Yu Watanabeac093402018-05-10 16:04:16 +0900663dynamic_uid_min = get_option('dynamic-uid-min')
664dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100665conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
666conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
667substs.set('dynamicuidmin', dynamic_uid_min)
668substs.set('dynamicuidmax', dynamic_uid_max)
669
Yu Watanabeac093402018-05-10 16:04:16 +0900670container_uid_base_min = get_option('container-uid-base-min')
671container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100672conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
673conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
674substs.set('containeruidbasemin', container_uid_base_min)
675substs.set('containeruidbasemax', container_uid_base_max)
676
Lennart Poetteringafde4572017-12-05 11:00:24 +0100677nobody_user = get_option('nobody-user')
678nobody_group = get_option('nobody-group')
679
Chen Qi2484bff2018-07-23 14:53:09 +0800680if not meson.is_cross_build()
681 getent_result = run_command('getent', 'passwd', '65534')
682 if getent_result.returncode() == 0
683 name = getent_result.stdout().split(':')[0]
684 if name != nobody_user
685 warning('\n' +
686 'The local user with the UID 65534 does not match the configured user name "@0@" of the nobody user (its name is @1@).\n'.format(nobody_user, name) +
687 'Your build will result in an user table setup that is incompatible with the local system.')
688 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100689 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800690 id_result = run_command('id', '-u', nobody_user)
691 if id_result.returncode() == 0
692 id = id_result.stdout().to_int()
693 if id != 65534
694 warning('\n' +
695 'The local user with the configured user name "@0@" of the nobody user does not have UID 65534 (it has @1@).\n'.format(nobody_user, id) +
696 'Your build will result in an user table setup that is incompatible with the local system.')
697 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100698 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100699
Chen Qi2484bff2018-07-23 14:53:09 +0800700 getent_result = run_command('getent', 'group', '65534')
701 if getent_result.returncode() == 0
702 name = getent_result.stdout().split(':')[0]
703 if name != nobody_group
704 warning('\n' +
705 'The local group with the GID 65534 does not match the configured group name "@0@" of the nobody group (its name is @1@).\n'.format(nobody_group, name) +
706 'Your build will result in an group table setup that is incompatible with the local system.')
707 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100708 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800709 id_result = run_command('id', '-g', nobody_group)
710 if id_result.returncode() == 0
711 id = id_result.stdout().to_int()
712 if id != 65534
713 warning('\n' +
714 'The local group with the configured group name "@0@" of the nobody group does not have UID 65534 (it has @1@).\n'.format(nobody_group, id) +
715 'Your build will result in an group table setup that is incompatible with the local system.')
716 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100717 endif
718endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900719if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900720 warning('\n' +
721 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
722 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900723endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100724
725conf.set_quoted('NOBODY_USER_NAME', nobody_user)
726conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900727substs.set('NOBODY_USER_NAME', nobody_user)
728substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100729
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400730tty_gid = get_option('tty-gid')
731conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400732substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400733
Ikey Doherty84786b82017-12-03 12:28:23 +0000734# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900735users_gid = get_option('users-gid')
736substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000737
Yu Watanabe348b4432018-05-07 18:17:35 +0900738conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
739conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400740
Michael Bieblace5e312018-07-13 23:36:13 +0200741dev_kvm_mode = get_option('dev-kvm-mode')
742substs.set('DEV_KVM_MODE', dev_kvm_mode)
743conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Tom Stellard4e15a732017-10-31 08:46:24 -0700744substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400745
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400746kill_user_processes = get_option('default-kill-user-processes')
747conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100748conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400749substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400750
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400751dns_servers = get_option('dns-servers')
752conf.set_quoted('DNS_SERVERS', dns_servers)
753substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400754
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400755ntp_servers = get_option('ntp-servers')
756conf.set_quoted('NTP_SERVERS', ntp_servers)
757substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400758
759conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
760
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400761substs.set('SUSHELL', get_option('debug-shell'))
762substs.set('DEBUGTTY', get_option('debug-tty'))
763
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200764enable_debug_hashmap = false
765enable_debug_mmap_cache = false
Yu Watanabead7aa762018-05-02 13:56:28 +0900766foreach name : get_option('debug')
767 if name == 'hashmap'
768 enable_debug_hashmap = true
769 elif name == 'mmap-cache'
770 enable_debug_mmap_cache = true
771 else
772 message('unknown debug option "@0@", ignoring'.format(name))
773 endif
774endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200775conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
776conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400777
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200778conf.set10('VALGRIND', get_option('valgrind'))
779
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400780#####################################################################
781
782threads = dependency('threads')
783librt = cc.find_library('rt')
784libm = cc.find_library('m')
785libdl = cc.find_library('dl')
786libcrypt = cc.find_library('crypt')
787
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400788libcap = dependency('libcap', required : false)
789if not libcap.found()
790 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
791 libcap = cc.find_library('cap')
792endif
793
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400794libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100795 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400796
797want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500798if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400799 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400800 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400801 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200802 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400803else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200804 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400805 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400806endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200807conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400808
809want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500810if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400811 libselinux = dependency('libselinux',
812 version : '>= 2.1.9',
813 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200814 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400815else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200816 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400817 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400818endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200819conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400820
821want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500822if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400823 libapparmor = dependency('libapparmor',
824 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200825 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400826else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200827 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400828 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400829endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200830conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400831
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400832smack_run_label = get_option('smack-run-label')
833if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400834 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400835endif
836
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400837want_polkit = get_option('polkit')
838install_polkit = false
839install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500840if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400841 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400842
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400843 libpolkit = dependency('polkit-gobject-1',
844 required : false)
845 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
846 message('Old polkit detected, will install pkla files')
847 install_polkit_pkla = true
848 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400849endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200850conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400851
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400852want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500853if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400854 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200855 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400856else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200857 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400858 libacl = []
859endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200860conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400861
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400862want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500863if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400864 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200865 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400866else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200867 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400868 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400869endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200870conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400871
872want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500873if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400874 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200875 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400876else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200877 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400878 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400879endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200880conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400881
882want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500883if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400884 libkmod = dependency('libkmod',
885 version : '>= 15',
886 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200887 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400888else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200889 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400890 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400891endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200892conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400893
894want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500895if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400896 libpam = cc.find_library('pam', required : want_pam == 'true')
897 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200898 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400899else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200900 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400901 libpam = []
902 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400903endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200904conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400905
906want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500907if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400908 libmicrohttpd = dependency('libmicrohttpd',
909 version : '>= 0.9.33',
910 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200911 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400912else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200913 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400914 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400915endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200916conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400917
918want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500919if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400920 libcryptsetup = dependency('libcryptsetup',
921 version : '>= 1.6.0',
922 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200923 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400924else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200925 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400926 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400927endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200928conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400929
930want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500931if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400932 libcurl = dependency('libcurl',
933 version : '>= 7.32.0',
934 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200935 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400936else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200937 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400938 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400939endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200940conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400941
942want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400943want_libidn2 = get_option('libidn2')
944if want_libidn == 'true' and want_libidn2 == 'true'
945 error('libidn and libidn2 cannot be requested simultaneously')
946endif
947
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500948if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400949 libidn = dependency('libidn',
950 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200951 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400952else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200953 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400954 libidn = []
955endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200956conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500957if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400958 # libidn is used for both libidn and libidn2 objects
959 libidn = dependency('libidn2',
960 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200961 have = libidn.found()
962else
963 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400964endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200965conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400966
967want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500968if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400969 libiptc = dependency('libiptc',
970 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200971 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400972else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200973 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400974 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400975endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200976conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400977
978want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500979if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400980 libqrencode = dependency('libqrencode',
981 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200982 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400983else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200984 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400985 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400986endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200987conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400988
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400989want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500990if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400991 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
992 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200993 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400994else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200995 have = false
996endif
997if not have
998 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400999 libgcrypt = []
1000 libgpg_error = []
1001endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001002conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001003
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001004want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001005if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001006 libgnutls = dependency('gnutls',
1007 version : '>= 3.1.4',
1008 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001009 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001010else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001011 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001012 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001013endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001014conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001015
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001016want_openssl = get_option('openssl')
1017if want_openssl != 'false' and not fuzzer_build
1018 libopenssl = dependency('openssl',
1019 version : '>= 1.1.0',
1020 required : want_openssl == 'true')
1021 have = libopenssl.found()
1022else
1023 have = false
1024 libopenssl = []
1025endif
1026conf.set10('HAVE_OPENSSL', have)
1027
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001028want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001029if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001030 libdw = dependency('libdw',
1031 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001032 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001033else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001034 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001035 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001036endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001037conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001038
1039want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001040if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001041 libz = dependency('zlib',
1042 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001043 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001044else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001045 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001046 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001047endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001048conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001049
1050want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001051if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001052 libbzip2 = cc.find_library('bz2',
1053 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001054 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001055else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001056 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001057 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001058endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001059conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001060
1061want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001062if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001063 libxz = dependency('liblzma',
1064 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001065 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001066else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001067 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001068 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001069endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001070conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001071
1072want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001073if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001074 liblz4 = dependency('liblz4',
1075 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001076 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001077else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001078 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001079 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001080endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001081conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001082
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001083want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001084if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001085 libxkbcommon = dependency('xkbcommon',
1086 version : '>= 0.3.0',
1087 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001088 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001089else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001090 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001091 libxkbcommon = []
1092endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001093conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001094
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001095want_pcre2 = get_option('pcre2')
1096if want_pcre2 != 'false'
1097 libpcre2 = dependency('libpcre2-8',
1098 required : want_pcre2 == 'true')
1099 have = libpcre2.found()
1100else
1101 have = false
1102 libpcre2 = []
1103endif
1104conf.set10('HAVE_PCRE2', have)
1105
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001106want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001107if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001108 libglib = dependency('glib-2.0',
1109 version : '>= 2.22.0',
1110 required : want_glib == 'true')
1111 libgobject = dependency('gobject-2.0',
1112 version : '>= 2.22.0',
1113 required : want_glib == 'true')
1114 libgio = dependency('gio-2.0',
1115 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001116 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001117else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001118 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001119 libglib = []
1120 libgobject = []
1121 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001122endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001123conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001124
1125want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001126if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001127 libdbus = dependency('dbus-1',
1128 version : '>= 1.3.2',
1129 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001130 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001131else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001132 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001133 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001134endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001135conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001136
Yu Watanabe42303dc2017-06-18 05:22:32 +09001137default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001138if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001139 default_dnssec = 'no'
1140endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001141if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001142 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1143 default_dnssec = 'no'
1144endif
1145conf.set('DEFAULT_DNSSEC_MODE',
1146 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1147substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1148
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001149dns_over_tls = get_option('dns-over-tls')
1150if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001151 if dns_over_tls == 'openssl'
1152 have_gnutls = false
1153 else
1154 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1155 if dns_over_tls == 'gnutls' and not have_gnutls
1156 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1157 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001158 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001159 if dns_over_tls == 'gnutls' or have_gnutls
1160 have_openssl = false
1161 else
1162 have_openssl = conf.get('HAVE_OPENSSL') == 1
1163 if dns_over_tls != 'auto' and not have_openssl
1164 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
1165 error('DNS-over-TLS support was requested$0$, but dependencies are not available'.format(str))
1166 endif
1167 endif
1168 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001169else
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001170 have = have_gnutls = have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001171endif
1172conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001173conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1174conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001175
Iwan Timmerc9299be2018-06-13 20:26:24 +02001176default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001177if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001178 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001179endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001180if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1181 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 +02001182 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001183endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001184conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1185 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1186substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001187
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001188want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001189if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001190 have = (conf.get('HAVE_LIBCURL') == 1 and
1191 conf.get('HAVE_ZLIB') == 1 and
1192 conf.get('HAVE_BZIP2') == 1 and
1193 conf.get('HAVE_XZ') == 1 and
1194 conf.get('HAVE_GCRYPT') == 1)
1195 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001196 error('importd support was requested, but dependencies are not available')
1197 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001198else
1199 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001200endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001201conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001202
1203want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001204if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001205 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1206 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001207 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1208 # it's possible to build one without the other. Complain only if
1209 # support was explictly requested. The auxiliary files like sysusers
1210 # config should be installed when any of the programs are built.
1211 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1212 error('remote support was requested, but dependencies are not available')
1213 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001214 have = have_deps[0] or have_deps[1]
1215else
1216 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001217endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001218conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001219
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001220foreach term : ['utmp',
1221 'hibernate',
1222 'environment-d',
1223 'binfmt',
1224 'coredump',
1225 'resolve',
1226 'logind',
1227 'hostnamed',
1228 'localed',
1229 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001230 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001231 'networkd',
1232 'timedated',
1233 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001234 'firstboot',
1235 'randomseed',
1236 'backlight',
1237 'vconsole',
1238 'quotacheck',
1239 'sysusers',
1240 'tmpfiles',
1241 'hwdb',
1242 'rfkill',
1243 'ldconfig',
1244 'efi',
1245 'tpm',
1246 'ima',
1247 'smack',
1248 'gshadow',
1249 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001250 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001251 'nss-systemd']
1252 have = get_option(term)
1253 name = 'ENABLE_' + term.underscorify().to_upper()
1254 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001255endforeach
1256
Yu Watanabe08540a92018-07-18 09:25:57 +09001257foreach tuple : [['nss-mymachines', 'machined'],
1258 ['nss-resolve', 'resolve']]
1259 want = get_option(tuple[0])
1260 if want != 'false'
1261 have = get_option(tuple[1])
1262 if want == 'true' and not have
1263 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1264 endif
1265 else
1266 have = false
1267 endif
1268 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1269 conf.set10(name, have)
1270endforeach
1271
1272enable_nss = false
1273foreach term : ['ENABLE_NSS_MYHOSTNAME',
1274 'ENABLE_NSS_MYMACHINES',
1275 'ENABLE_NSS_RESOLVE',
1276 'ENABLE_NSS_SYSTEMD']
1277 if conf.get(term) == 1
1278 enable_nss = true
1279 endif
1280endforeach
1281conf.set10('ENABLE_NSS', enable_nss)
1282
Yu Watanabe348b4432018-05-07 18:17:35 +09001283conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001284
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001285want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001286install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001287slow_tests = get_option('slow-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001288tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001289fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001290
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001291conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001292
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001293#####################################################################
1294
1295if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001296 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001297
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001298 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001299 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001300 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001301 elif efi_arch == 'x86_64'
1302 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001303 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001304 elif efi_arch == 'arm'
1305 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001306 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001307 elif efi_arch == 'aarch64'
1308 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001309 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001310 else
1311 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001312 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001313 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001314
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001315 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001316 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001317
Yu Watanabeac093402018-05-10 16:04:16 +09001318 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001319else
1320 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001321endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001322conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001323
1324#####################################################################
1325
1326config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001327 output : 'config.h',
1328 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001329
Yu Watanabe348b4432018-05-07 18:17:35 +09001330meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1331
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001332includes = include_directories('src/basic',
1333 'src/shared',
1334 'src/systemd',
1335 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001336 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001337 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001338 'src/resolve',
1339 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001340 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001341 'src/login',
1342 'src/udev',
1343 'src/libudev',
1344 'src/core',
1345 'src/libsystemd/sd-bus',
1346 'src/libsystemd/sd-device',
1347 'src/libsystemd/sd-hwdb',
1348 'src/libsystemd/sd-id128',
1349 'src/libsystemd/sd-netlink',
1350 'src/libsystemd/sd-network',
1351 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001352 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001353
1354add_project_arguments('-include', 'config.h', language : 'c')
1355
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001356subdir('po')
1357subdir('catalog')
1358subdir('src/systemd')
1359subdir('src/basic')
1360subdir('src/libsystemd')
1361subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001362subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001363subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001364
1365libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001366 'journal-core',
1367 libjournal_core_sources,
1368 journald_gperf_c,
1369 include_directories : includes,
1370 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001371
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001372libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001373libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001374 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001375 '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 +02001376 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001377 include_directories : includes,
1378 link_args : ['-shared',
1379 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001380 link_with : [libbasic,
1381 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001382 link_whole : [libsystemd_static,
1383 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001384 dependencies : [threads,
1385 librt,
1386 libxz,
1387 liblz4],
1388 link_depends : libsystemd_sym,
1389 install : true,
1390 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001391
Davide Cavalca70848ec2018-04-09 02:43:35 -07001392static_libsystemd = get_option('static-libsystemd')
1393static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1394
1395install_libsystemd_static = static_library(
1396 'systemd',
1397 libsystemd_sources,
1398 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001399 basic_sources,
1400 basic_gcrypt_sources,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001401 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001402 build_by_default : static_libsystemd != 'false',
1403 install : static_libsystemd != 'false',
1404 install_dir : rootlibdir,
1405 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1406 dependencies : [threads,
1407 librt,
1408 libxz,
1409 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001410 libcap,
1411 libblkid,
1412 libmount,
1413 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001414 libgcrypt],
1415 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1416
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001417############################################################
1418
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001419# binaries that have --help and are intended for use by humans,
1420# usually, but not always, installed in /bin.
1421public_programs = []
1422
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001423subdir('src/libudev')
1424subdir('src/shared')
1425subdir('src/core')
1426subdir('src/udev')
1427subdir('src/network')
1428
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001429subdir('src/analyze')
1430subdir('src/journal-remote')
1431subdir('src/coredump')
1432subdir('src/hostname')
1433subdir('src/import')
1434subdir('src/kernel-install')
1435subdir('src/locale')
1436subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001437subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001438subdir('src/nspawn')
1439subdir('src/resolve')
1440subdir('src/timedate')
1441subdir('src/timesync')
1442subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001443subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001444
1445subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001446subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001447subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001448subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001449
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001450############################################################
1451
1452# only static linking apart from libdl, to make sure that the
1453# module is linked to all libraries that it uses.
1454test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001455 'test-dlopen',
1456 test_dlopen_c,
1457 include_directories : includes,
1458 link_with : [libbasic],
1459 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001460
Yu Watanabe08540a92018-07-18 09:25:57 +09001461foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001462 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001463 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1464 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001465
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001466 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001467 if condition
1468 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001469
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001470 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1471 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001472
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001473 nss = shared_library(
1474 'nss_' + module,
1475 'src/nss-@0@/nss-@0@.c'.format(module),
1476 version : '2',
1477 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001478 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1479 link_args : ['-Wl,-z,nodelete',
1480 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001481 '-Wl,--version-script=' + version_script_arg,
1482 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001483 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001484 libbasic],
1485 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001486 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001487 link_depends : sym,
1488 install : true,
1489 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001490
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001491 # We cannot use shared_module because it does not support version suffix.
1492 # Unfortunately shared_library insists on creating the symlink…
1493 meson.add_install_script('sh', '-c',
1494 'rm $DESTDIR@0@/libnss_@1@.so'
1495 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001496
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001497 test('dlopen-nss_' + module,
1498 test_dlopen,
1499 args : [nss.full_path()]) # path to dlopen must include a slash
1500 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001501endforeach
1502
1503############################################################
1504
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001505executable('systemd',
1506 systemd_sources,
1507 include_directories : includes,
1508 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001509 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001510 dependencies : [threads,
1511 librt,
1512 libseccomp,
1513 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001514 libmount,
1515 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001516 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001517 install : true,
1518 install_dir : rootlibexecdir)
1519
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001520meson.add_install_script(meson_make_symlink,
1521 join_paths(rootlibexecdir, 'systemd'),
1522 join_paths(rootsbindir, 'init'))
1523
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001524exe = executable('systemd-analyze',
1525 systemd_analyze_sources,
1526 include_directories : includes,
1527 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001528 libshared],
1529 dependencies : [threads,
1530 librt,
1531 libseccomp,
1532 libselinux,
1533 libmount,
1534 libblkid],
1535 install_rpath : rootlibexecdir,
1536 install : true)
1537public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001538
1539executable('systemd-journald',
1540 systemd_journald_sources,
1541 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001542 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001543 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001544 dependencies : [threads,
1545 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001546 liblz4,
1547 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001548 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001549 install : true,
1550 install_dir : rootlibexecdir)
1551
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001552exe = executable('systemd-cat',
1553 systemd_cat_sources,
1554 include_directories : includes,
1555 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001556 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001557 dependencies : [threads],
1558 install_rpath : rootlibexecdir,
1559 install : true)
1560public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001561
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001562exe = executable('journalctl',
1563 journalctl_sources,
1564 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001565 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001566 dependencies : [threads,
1567 libqrencode,
1568 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001569 liblz4,
1570 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001571 install_rpath : rootlibexecdir,
1572 install : true,
1573 install_dir : rootbindir)
1574public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001575
1576executable('systemd-getty-generator',
1577 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001578 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001579 link_with : [libshared],
1580 install_rpath : rootlibexecdir,
1581 install : true,
1582 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001583
1584executable('systemd-debug-generator',
1585 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001586 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001587 link_with : [libshared],
1588 install_rpath : rootlibexecdir,
1589 install : true,
1590 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001591
1592executable('systemd-fstab-generator',
1593 'src/fstab-generator/fstab-generator.c',
1594 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001595 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001596 link_with : [libshared],
1597 install_rpath : rootlibexecdir,
1598 install : true,
1599 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001600
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001601if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001602 executable('30-systemd-environment-d-generator',
1603 'src/environment-d-generator/environment-d-generator.c',
1604 include_directories : includes,
1605 link_with : [libshared],
1606 install_rpath : rootlibexecdir,
1607 install : true,
1608 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001609
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001610 meson.add_install_script(meson_make_symlink,
1611 join_paths(sysconfdir, 'environment'),
1612 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001613endif
1614
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001615if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001616 executable('systemd-hibernate-resume-generator',
1617 'src/hibernate-resume/hibernate-resume-generator.c',
1618 include_directories : includes,
1619 link_with : [libshared],
1620 install_rpath : rootlibexecdir,
1621 install : true,
1622 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001623
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001624 executable('systemd-hibernate-resume',
1625 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001626 include_directories : includes,
1627 link_with : [libshared],
1628 install_rpath : rootlibexecdir,
1629 install : true,
1630 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001631endif
1632
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001633if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001634 executable('systemd-gpt-auto-generator',
1635 'src/gpt-auto-generator/gpt-auto-generator.c',
1636 'src/basic/blkid-util.h',
1637 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001638 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001639 dependencies : libblkid,
1640 install_rpath : rootlibexecdir,
1641 install : true,
1642 install_dir : systemgeneratordir)
1643
1644 exe = executable('systemd-dissect',
1645 'src/dissect/dissect.c',
1646 include_directories : includes,
1647 link_with : [libshared],
1648 install_rpath : rootlibexecdir,
1649 install : true,
1650 install_dir : rootlibexecdir)
1651 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001652endif
1653
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001654if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001655 executable('systemd-resolved',
1656 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001657 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001658 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001659 libbasic_gcrypt,
1660 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001661 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001662 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001663 install : true,
1664 install_dir : rootlibexecdir)
1665
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001666 exe = executable('resolvectl',
1667 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001668 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001669 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001670 libbasic_gcrypt,
1671 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001672 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001673 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001674 libm,
1675 libidn],
1676 install_rpath : rootlibexecdir,
1677 install : true)
1678 public_programs += [exe]
Lennart Poettering088c1362018-02-27 17:48:54 +01001679
1680 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001681 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001682 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001683
1684 meson.add_install_script(meson_make_symlink,
1685 join_paths(bindir, 'resolvectl'),
1686 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001687endif
1688
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001689if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001690 executable('systemd-logind',
1691 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001692 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001693 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001694 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001695 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001696 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001697 install_rpath : rootlibexecdir,
1698 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001699 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001700
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001701 exe = executable('loginctl',
1702 loginctl_sources,
1703 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001704 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001705 dependencies : [threads,
1706 liblz4,
1707 libxz],
1708 install_rpath : rootlibexecdir,
1709 install : true,
1710 install_dir : rootbindir)
1711 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001712
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001713 exe = executable('systemd-inhibit',
1714 'src/login/inhibit.c',
1715 include_directories : includes,
1716 link_with : [libshared],
1717 install_rpath : rootlibexecdir,
1718 install : true,
1719 install_dir : rootbindir)
1720 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001721
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001722 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001723 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1724 pam_systemd = shared_library(
1725 'pam_systemd',
1726 pam_systemd_c,
1727 name_prefix : '',
1728 include_directories : includes,
1729 link_args : ['-shared',
1730 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001731 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001732 libshared_static],
1733 dependencies : [threads,
1734 libpam,
1735 libpam_misc],
1736 link_depends : pam_systemd_sym,
1737 install : true,
1738 install_dir : pamlibdir)
1739
1740 test('dlopen-pam_systemd',
1741 test_dlopen,
1742 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1743 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001744endif
1745
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001746executable('systemd-user-runtime-dir',
1747 user_runtime_dir_sources,
1748 include_directories : includes,
1749 link_with : [libshared, liblogind_core],
1750 install_rpath : rootlibexecdir,
1751 install : true,
1752 install_dir : rootlibexecdir)
1753
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001754if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001755 executable('systemd-user-sessions',
1756 'src/user-sessions/user-sessions.c',
1757 include_directories : includes,
1758 link_with : [libshared],
1759 install_rpath : rootlibexecdir,
1760 install : true,
1761 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001762endif
1763
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001764if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001765 exe = executable('bootctl',
1766 'src/boot/bootctl.c',
1767 include_directories : includes,
1768 link_with : [libshared],
1769 dependencies : [libblkid],
1770 install_rpath : rootlibexecdir,
1771 install : true)
1772 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001773endif
1774
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001775exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1776 include_directories : includes,
1777 link_with : [libshared],
1778 dependencies : [threads],
1779 install_rpath : rootlibexecdir,
1780 install : true)
1781public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001782
Felipe Satelerf3794362018-05-22 15:08:57 -04001783
1784if get_option('link-systemctl-shared')
1785 systemctl_link_with = [libshared]
1786else
1787 systemctl_link_with = [libsystemd_static,
1788 libshared_static,
1789 libjournal_client,
1790 libbasic_gcrypt]
1791endif
1792
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001793exe = executable('systemctl', 'src/systemctl/systemctl.c',
1794 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001795 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001796 dependencies : [threads,
1797 libcap,
1798 libselinux,
1799 libxz,
1800 liblz4],
1801 install_rpath : rootlibexecdir,
1802 install : true,
1803 install_dir : rootbindir)
1804public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001805
Lennart Poettering61d05782018-04-16 21:41:40 +02001806if conf.get('ENABLE_PORTABLED') == 1
1807 executable('systemd-portabled',
1808 systemd_portabled_sources,
1809 include_directories : includes,
1810 link_with : [libshared],
1811 dependencies : [threads],
1812 install_rpath : rootlibexecdir,
1813 install : true,
1814 install_dir : rootlibexecdir)
1815
1816 exe = executable('portablectl', 'src/portable/portablectl.c',
1817 include_directories : includes,
1818 link_with : [libshared],
1819 dependencies : [threads],
1820 install_rpath : rootlibexecdir,
1821 install : true,
1822 install_dir : rootlibexecdir)
1823 public_programs += [exe]
1824endif
1825
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001826foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1827 meson.add_install_script(meson_make_symlink,
1828 join_paths(rootbindir, 'systemctl'),
1829 join_paths(rootsbindir, alias))
1830endforeach
1831
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001832if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001833 executable('systemd-backlight',
1834 'src/backlight/backlight.c',
1835 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001836 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001837 install_rpath : rootlibexecdir,
1838 install : true,
1839 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001840endif
1841
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001842if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001843 executable('systemd-rfkill',
1844 'src/rfkill/rfkill.c',
1845 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001846 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001847 install_rpath : rootlibexecdir,
1848 install : true,
1849 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001850endif
1851
1852executable('systemd-system-update-generator',
1853 'src/system-update-generator/system-update-generator.c',
1854 include_directories : includes,
1855 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001856 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001857 install : true,
1858 install_dir : systemgeneratordir)
1859
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001860if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001861 executable('systemd-cryptsetup',
1862 'src/cryptsetup/cryptsetup.c',
1863 include_directories : includes,
1864 link_with : [libshared],
1865 dependencies : [libcryptsetup],
1866 install_rpath : rootlibexecdir,
1867 install : true,
1868 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001869
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001870 executable('systemd-cryptsetup-generator',
1871 'src/cryptsetup/cryptsetup-generator.c',
1872 include_directories : includes,
1873 link_with : [libshared],
1874 dependencies : [libcryptsetup],
1875 install_rpath : rootlibexecdir,
1876 install : true,
1877 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001878
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001879 executable('systemd-veritysetup',
1880 'src/veritysetup/veritysetup.c',
1881 include_directories : includes,
1882 link_with : [libshared],
1883 dependencies : [libcryptsetup],
1884 install_rpath : rootlibexecdir,
1885 install : true,
1886 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001887
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001888 executable('systemd-veritysetup-generator',
1889 'src/veritysetup/veritysetup-generator.c',
1890 include_directories : includes,
1891 link_with : [libshared],
1892 dependencies : [libcryptsetup],
1893 install_rpath : rootlibexecdir,
1894 install : true,
1895 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001896endif
1897
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001898if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001899 executable('systemd-sysv-generator',
1900 'src/sysv-generator/sysv-generator.c',
1901 include_directories : includes,
1902 link_with : [libshared],
1903 install_rpath : rootlibexecdir,
1904 install : true,
1905 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001906
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001907 executable('systemd-rc-local-generator',
1908 'src/rc-local-generator/rc-local-generator.c',
1909 include_directories : includes,
1910 link_with : [libshared],
1911 install_rpath : rootlibexecdir,
1912 install : true,
1913 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001914endif
1915
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001916if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001917 executable('systemd-hostnamed',
1918 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001919 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001920 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001921 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001922 install : true,
1923 install_dir : rootlibexecdir)
1924
1925 exe = executable('hostnamectl',
1926 'src/hostname/hostnamectl.c',
1927 include_directories : includes,
1928 link_with : [libshared],
1929 install_rpath : rootlibexecdir,
1930 install : true)
1931 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001932endif
1933
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001934if conf.get('ENABLE_LOCALED') == 1
1935 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001936 # logind will load libxkbcommon.so dynamically on its own
1937 deps = [libdl]
1938 else
1939 deps = []
1940 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001941
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001942 executable('systemd-localed',
1943 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001944 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001945 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001946 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001947 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001948 install : true,
1949 install_dir : rootlibexecdir)
1950
1951 exe = executable('localectl',
1952 localectl_sources,
1953 include_directories : includes,
1954 link_with : [libshared],
1955 install_rpath : rootlibexecdir,
1956 install : true)
1957 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001958endif
1959
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001960if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001961 executable('systemd-timedated',
1962 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001963 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001964 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001965 install_rpath : rootlibexecdir,
1966 install : true,
1967 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09001968endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001969
Yu Watanabe6129ec82018-05-03 18:07:43 +09001970if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001971 exe = executable('timedatectl',
1972 'src/timedate/timedatectl.c',
1973 include_directories : includes,
1974 install_rpath : rootlibexecdir,
1975 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09001976 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001977 install : true)
1978 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001979endif
1980
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001981if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001982 executable('systemd-timesyncd',
1983 systemd_timesyncd_sources,
1984 include_directories : includes,
1985 link_with : [libshared],
1986 dependencies : [threads,
1987 libm],
1988 install_rpath : rootlibexecdir,
1989 install : true,
1990 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001991
1992 executable('systemd-time-wait-sync',
1993 'src/time-wait-sync/time-wait-sync.c',
1994 include_directories : includes,
1995 link_with : [libshared],
1996 install_rpath : rootlibexecdir,
1997 install : true,
1998 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001999endif
2000
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002001if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002002 executable('systemd-machined',
2003 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002004 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002005 link_with : [libmachine_core,
2006 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002007 install_rpath : rootlibexecdir,
2008 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002009 install_dir : rootlibexecdir)
2010
2011 exe = executable('machinectl',
2012 'src/machine/machinectl.c',
2013 include_directories : includes,
2014 link_with : [libshared],
2015 dependencies : [threads,
2016 libxz,
2017 liblz4],
2018 install_rpath : rootlibexecdir,
2019 install : true,
2020 install_dir : rootbindir)
2021 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002022endif
2023
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002024if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002025 executable('systemd-importd',
2026 systemd_importd_sources,
2027 include_directories : includes,
2028 link_with : [libshared],
2029 dependencies : [threads],
2030 install_rpath : rootlibexecdir,
2031 install : true,
2032 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002033
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002034 systemd_pull = executable('systemd-pull',
2035 systemd_pull_sources,
2036 include_directories : includes,
2037 link_with : [libshared],
2038 dependencies : [libcurl,
2039 libz,
2040 libbzip2,
2041 libxz,
2042 libgcrypt],
2043 install_rpath : rootlibexecdir,
2044 install : true,
2045 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002046
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002047 systemd_import = executable('systemd-import',
2048 systemd_import_sources,
2049 include_directories : includes,
2050 link_with : [libshared],
2051 dependencies : [libcurl,
2052 libz,
2053 libbzip2,
2054 libxz],
2055 install_rpath : rootlibexecdir,
2056 install : true,
2057 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002058
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002059 systemd_export = executable('systemd-export',
2060 systemd_export_sources,
2061 include_directories : includes,
2062 link_with : [libshared],
2063 dependencies : [libcurl,
2064 libz,
2065 libbzip2,
2066 libxz],
2067 install_rpath : rootlibexecdir,
2068 install : true,
2069 install_dir : rootlibexecdir)
2070 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002071endif
2072
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002073if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002074 exe = executable('systemd-journal-upload',
2075 systemd_journal_upload_sources,
2076 include_directories : includes,
2077 link_with : [libshared],
2078 dependencies : [threads,
2079 libcurl,
2080 libgnutls,
2081 libxz,
2082 liblz4],
2083 install_rpath : rootlibexecdir,
2084 install : true,
2085 install_dir : rootlibexecdir)
2086 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002087endif
2088
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002089if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002090 s_j_remote = executable('systemd-journal-remote',
2091 systemd_journal_remote_sources,
2092 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002093 link_with : [libshared,
2094 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002095 dependencies : [threads,
2096 libmicrohttpd,
2097 libgnutls,
2098 libxz,
2099 liblz4],
2100 install_rpath : rootlibexecdir,
2101 install : true,
2102 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002103
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002104 s_j_gatewayd = executable('systemd-journal-gatewayd',
2105 systemd_journal_gatewayd_sources,
2106 include_directories : includes,
2107 link_with : [libshared],
2108 dependencies : [threads,
2109 libmicrohttpd,
2110 libgnutls,
2111 libxz,
2112 liblz4],
2113 install_rpath : rootlibexecdir,
2114 install : true,
2115 install_dir : rootlibexecdir)
2116 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002117endif
2118
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002119if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002120 executable('systemd-coredump',
2121 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002122 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002123 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002124 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002125 libacl,
2126 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002127 libxz,
2128 liblz4],
2129 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002130 install : true,
2131 install_dir : rootlibexecdir)
2132
2133 exe = executable('coredumpctl',
2134 coredumpctl_sources,
2135 include_directories : includes,
2136 link_with : [libshared],
2137 dependencies : [threads,
2138 libxz,
2139 liblz4],
2140 install_rpath : rootlibexecdir,
2141 install : true)
2142 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002143endif
2144
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002145if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002146 exe = executable('systemd-binfmt',
2147 'src/binfmt/binfmt.c',
2148 include_directories : includes,
2149 link_with : [libshared],
2150 install_rpath : rootlibexecdir,
2151 install : true,
2152 install_dir : rootlibexecdir)
2153 public_programs += [exe]
2154
2155 meson.add_install_script('sh', '-c',
2156 mkdir_p.format(binfmtdir))
2157 meson.add_install_script('sh', '-c',
2158 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2159endif
2160
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002161if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002162 executable('systemd-vconsole-setup',
2163 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002164 include_directories : includes,
2165 link_with : [libshared],
2166 install_rpath : rootlibexecdir,
2167 install : true,
2168 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002169endif
2170
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002171if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002172 executable('systemd-random-seed',
2173 'src/random-seed/random-seed.c',
2174 include_directories : includes,
2175 link_with : [libshared],
2176 install_rpath : rootlibexecdir,
2177 install : true,
2178 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002179endif
2180
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002181if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002182 executable('systemd-firstboot',
2183 'src/firstboot/firstboot.c',
2184 include_directories : includes,
2185 link_with : [libshared],
2186 dependencies : [libcrypt],
2187 install_rpath : rootlibexecdir,
2188 install : true,
2189 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002190endif
2191
2192executable('systemd-remount-fs',
2193 'src/remount-fs/remount-fs.c',
2194 'src/core/mount-setup.c',
2195 'src/core/mount-setup.h',
2196 include_directories : includes,
2197 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002198 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002199 install : true,
2200 install_dir : rootlibexecdir)
2201
2202executable('systemd-machine-id-setup',
2203 'src/machine-id-setup/machine-id-setup-main.c',
2204 'src/core/machine-id-setup.c',
2205 'src/core/machine-id-setup.h',
2206 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002207 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002208 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002209 install : true,
2210 install_dir : rootbindir)
2211
2212executable('systemd-fsck',
2213 'src/fsck/fsck.c',
2214 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002215 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002216 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002217 install : true,
2218 install_dir : rootlibexecdir)
2219
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002220executable('systemd-growfs',
2221 'src/partition/growfs.c',
2222 include_directories : includes,
2223 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002224 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002225 install_rpath : rootlibexecdir,
2226 install : true,
2227 install_dir : rootlibexecdir)
2228
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002229executable('systemd-makefs',
2230 'src/partition/makefs.c',
2231 include_directories : includes,
2232 link_with : [libshared],
2233 install_rpath : rootlibexecdir,
2234 install : true,
2235 install_dir : rootlibexecdir)
2236
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002237executable('systemd-sleep',
2238 'src/sleep/sleep.c',
2239 include_directories : includes,
2240 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002241 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002242 install : true,
2243 install_dir : rootlibexecdir)
2244
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002245exe = executable('systemd-sysctl',
2246 'src/sysctl/sysctl.c',
2247 include_directories : includes,
2248 link_with : [libshared],
2249 install_rpath : rootlibexecdir,
2250 install : true,
2251 install_dir : rootlibexecdir)
2252public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002253
2254executable('systemd-ac-power',
2255 'src/ac-power/ac-power.c',
2256 include_directories : includes,
2257 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002258 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002259 install : true,
2260 install_dir : rootlibexecdir)
2261
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002262exe = executable('systemd-detect-virt',
2263 'src/detect-virt/detect-virt.c',
2264 include_directories : includes,
2265 link_with : [libshared],
2266 install_rpath : rootlibexecdir,
2267 install : true)
2268public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002269
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002270exe = executable('systemd-delta',
2271 'src/delta/delta.c',
2272 include_directories : includes,
2273 link_with : [libshared],
2274 install_rpath : rootlibexecdir,
2275 install : true)
2276public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002277
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002278exe = executable('systemd-escape',
2279 'src/escape/escape.c',
2280 include_directories : includes,
2281 link_with : [libshared],
2282 install_rpath : rootlibexecdir,
2283 install : true,
2284 install_dir : rootbindir)
2285public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002286
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002287exe = executable('systemd-notify',
2288 'src/notify/notify.c',
2289 include_directories : includes,
2290 link_with : [libshared],
2291 install_rpath : rootlibexecdir,
2292 install : true,
2293 install_dir : rootbindir)
2294public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002295
2296executable('systemd-volatile-root',
2297 'src/volatile-root/volatile-root.c',
2298 include_directories : includes,
2299 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002300 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002301 install : true,
2302 install_dir : rootlibexecdir)
2303
2304executable('systemd-cgroups-agent',
2305 'src/cgroups-agent/cgroups-agent.c',
2306 include_directories : includes,
2307 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002308 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002309 install : true,
2310 install_dir : rootlibexecdir)
2311
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002312exe = executable('systemd-path',
2313 'src/path/path.c',
2314 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002315 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002316 install_rpath : rootlibexecdir,
2317 install : true)
2318public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002319
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002320exe = executable('systemd-ask-password',
2321 'src/ask-password/ask-password.c',
2322 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002323 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002324 install_rpath : rootlibexecdir,
2325 install : true,
2326 install_dir : rootbindir)
2327public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002328
2329executable('systemd-reply-password',
2330 'src/reply-password/reply-password.c',
2331 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002332 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002333 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002334 install : true,
2335 install_dir : rootlibexecdir)
2336
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002337exe = executable('systemd-tty-ask-password-agent',
2338 'src/tty-ask-password-agent/tty-ask-password-agent.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,
2343 install_dir : rootbindir)
2344public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002345
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002346exe = executable('systemd-cgls',
2347 'src/cgls/cgls.c',
2348 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002349 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002350 install_rpath : rootlibexecdir,
2351 install : true)
2352public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002353
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002354exe = executable('systemd-cgtop',
2355 'src/cgtop/cgtop.c',
2356 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002357 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002358 install_rpath : rootlibexecdir,
2359 install : true)
2360public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002361
2362executable('systemd-initctl',
2363 'src/initctl/initctl.c',
2364 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002365 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002366 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002367 install : true,
2368 install_dir : rootlibexecdir)
2369
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002370exe = executable('systemd-mount',
2371 'src/mount/mount-tool.c',
2372 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002373 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002374 install_rpath : rootlibexecdir,
2375 install : true)
2376public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002377
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002378meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002379 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002380
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002381exe = executable('systemd-run',
2382 'src/run/run.c',
2383 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002384 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002385 install_rpath : rootlibexecdir,
2386 install : true)
2387public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002388
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002389exe = executable('systemd-stdio-bridge',
2390 'src/stdio-bridge/stdio-bridge.c',
2391 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002392 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002393 install_rpath : rootlibexecdir,
2394 install : true)
2395public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002396
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002397exe = executable('busctl',
2398 'src/busctl/busctl.c',
2399 'src/busctl/busctl-introspect.c',
2400 'src/busctl/busctl-introspect.h',
2401 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002402 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002403 install_rpath : rootlibexecdir,
2404 install : true)
2405public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002406
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002407if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002408 exe = executable('systemd-sysusers',
2409 'src/sysusers/sysusers.c',
2410 include_directories : includes,
2411 link_with : [libshared],
2412 install_rpath : rootlibexecdir,
2413 install : true,
2414 install_dir : rootbindir)
2415 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002416endif
2417
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002418if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002419 exe = executable('systemd-tmpfiles',
2420 'src/tmpfiles/tmpfiles.c',
2421 include_directories : includes,
2422 link_with : [libshared],
2423 dependencies : [libacl],
2424 install_rpath : rootlibexecdir,
2425 install : true,
2426 install_dir : rootbindir)
2427 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002428
2429 test('test-systemd-tmpfiles',
2430 test_systemd_tmpfiles_py,
2431 args : exe.full_path())
2432 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002433endif
2434
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002435if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002436 exe = executable('systemd-hwdb',
2437 'src/hwdb/hwdb.c',
2438 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2439 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002440 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002441 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002442 install : true,
2443 install_dir : rootbindir)
2444 public_programs += [exe]
2445endif
2446
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002447if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002448 executable('systemd-quotacheck',
2449 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002450 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002451 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002452 install_rpath : rootlibexecdir,
2453 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002454 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002455endif
2456
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002457exe = executable('systemd-socket-proxyd',
2458 'src/socket-proxy/socket-proxyd.c',
2459 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002460 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002461 dependencies : [threads],
2462 install_rpath : rootlibexecdir,
2463 install : true,
2464 install_dir : rootlibexecdir)
2465public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002466
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002467exe = executable('systemd-udevd',
2468 systemd_udevd_sources,
2469 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002470 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002471 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002472 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002473 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002474 dependencies : [threads,
2475 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002476 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002477 libacl,
2478 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002479 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002480 install : true,
2481 install_dir : rootlibexecdir)
2482public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002483
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002484exe = executable('udevadm',
2485 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002486 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002487 include_directories : includes,
2488 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002489 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002490 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002491 dependencies : [threads,
2492 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002493 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002494 libacl,
2495 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002496 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002497 install : true,
2498 install_dir : rootbindir)
2499public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002500
2501executable('systemd-shutdown',
2502 systemd_shutdown_sources,
2503 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002504 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002505 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002506 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002507 install : true,
2508 install_dir : rootlibexecdir)
2509
2510executable('systemd-update-done',
2511 'src/update-done/update-done.c',
2512 include_directories : includes,
2513 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002514 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002515 install : true,
2516 install_dir : rootlibexecdir)
2517
2518executable('systemd-update-utmp',
2519 'src/update-utmp/update-utmp.c',
2520 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002521 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002522 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002523 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002524 install : true,
2525 install_dir : rootlibexecdir)
2526
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002527if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002528 executable('systemd-modules-load',
2529 'src/modules-load/modules-load.c',
2530 include_directories : includes,
2531 link_with : [libshared],
2532 dependencies : [libkmod],
2533 install_rpath : rootlibexecdir,
2534 install : true,
2535 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002536
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002537 meson.add_install_script('sh', '-c',
2538 mkdir_p.format(modulesloaddir))
2539 meson.add_install_script('sh', '-c',
2540 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002541endif
2542
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002543exe = executable('systemd-nspawn',
2544 systemd_nspawn_sources,
2545 'src/core/mount-setup.c', # FIXME: use a variable?
2546 'src/core/mount-setup.h',
2547 'src/core/loopback-setup.c',
2548 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002549 include_directories : includes,
2550 link_with : [libnspawn_core,
2551 libshared],
2552 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002553 install_rpath : rootlibexecdir,
2554 install : true)
2555public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002556
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002557if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002558 executable('systemd-networkd',
2559 systemd_networkd_sources,
2560 include_directories : includes,
2561 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002562 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002563 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002564 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002565 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002566 install_rpath : rootlibexecdir,
2567 install : true,
2568 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002569
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002570 executable('systemd-networkd-wait-online',
2571 systemd_networkd_wait_online_sources,
2572 include_directories : includes,
2573 link_with : [libnetworkd_core,
2574 libshared],
2575 install_rpath : rootlibexecdir,
2576 install : true,
2577 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002578
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002579 exe = executable('networkctl',
2580 networkctl_sources,
2581 include_directories : includes,
2582 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002583 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002584 install_rpath : rootlibexecdir,
2585 install : true,
2586 install_dir : rootbindir)
2587 public_programs += [exe]
2588endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002589
2590executable('systemd-sulogin-shell',
2591 ['src/sulogin-shell/sulogin-shell.c'],
2592 include_directories : includes,
2593 link_with : [libshared],
2594 install_rpath : rootlibexecdir,
2595 install : true,
2596 install_dir : rootlibexecdir)
2597
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002598############################################################
2599
2600foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002601 sources = tuple[0]
2602 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2603 dependencies = tuple[2]
2604 condition = tuple.length() >= 4 ? tuple[3] : ''
2605 type = tuple.length() >= 5 ? tuple[4] : ''
2606 defs = tuple.length() >= 6 ? tuple[5] : []
2607 incs = tuple.length() >= 7 ? tuple[6] : includes
2608 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002609
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002610 name = sources[0].split('/')[-1].split('.')[0]
2611 if type.startswith('timeout=')
2612 timeout = type.split('=')[1].to_int()
2613 type = ''
2614 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002615 if want_tests == 'false'
2616 message('Not compiling @0@ because tests is set to false'.format(name))
2617 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002618 exe = executable(
2619 name,
2620 sources,
2621 include_directories : incs,
2622 link_with : link_with,
2623 dependencies : dependencies,
2624 c_args : defs,
2625 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002626 install : install_tests,
2627 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002628
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002629 if type == 'manual'
2630 message('@0@ is a manual test'.format(name))
2631 elif type == 'unsafe' and want_tests != 'unsafe'
2632 message('@0@ is an unsafe test'.format(name))
2633 else
2634 test(name, exe,
2635 env : test_env,
2636 timeout : timeout)
2637 endif
2638 else
2639 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2640 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002641endforeach
2642
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002643exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002644 'test-libsystemd-sym',
2645 test_libsystemd_sym_c,
2646 include_directories : includes,
2647 link_with : [libsystemd],
2648 install : install_tests,
2649 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002650test('test-libsystemd-sym', exe)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002651
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002652exe = executable(
2653 'test-libsystemd-static-sym',
2654 test_libsystemd_sym_c,
2655 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002656 link_with : [install_libsystemd_static],
2657 dependencies : [threads], # threads is already included in dependencies on the library,
2658 # but does not seem to get propagated. Add here as a work-around.
Davide Cavalca20f3d322018-04-24 13:34:48 -07002659 build_by_default : static_libsystemd_pic,
2660 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002661 install_dir : testsdir)
Davide Cavalca20f3d322018-04-24 13:34:48 -07002662if static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002663 test('test-libsystemd-static-sym', exe)
2664endif
2665
2666exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002667 'test-libudev-sym',
2668 test_libudev_sym_c,
2669 include_directories : includes,
2670 c_args : ['-Wno-deprecated-declarations'],
2671 link_with : [libudev],
2672 install : install_tests,
2673 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002674test('test-libudev-sym', exe)
2675
2676exe = executable(
2677 'test-libudev-static-sym',
2678 test_libudev_sym_c,
2679 include_directories : includes,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002680 c_args : ['-Wno-deprecated-declarations'],
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002681 link_with : [install_libudev_static],
Davide Cavalca20f3d322018-04-24 13:34:48 -07002682 build_by_default : static_libudev_pic,
2683 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002684 install_dir : testsdir)
Davide Cavalca20f3d322018-04-24 13:34:48 -07002685if static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002686 test('test-libudev-static-sym', exe)
2687endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002688
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002689############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002690
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002691fuzzer_exes = []
2692
2693foreach tuple : fuzzers
2694 sources = tuple[0]
2695 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2696 dependencies = tuple[2]
2697 defs = tuple.length() >= 4 ? tuple[3] : []
2698 incs = tuple.length() >= 5 ? tuple[4] : includes
2699
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002700 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002701 dependencies += fuzzing_engine
2702 else
2703 sources += 'src/fuzz/fuzz-main.c'
2704 endif
2705
2706 name = sources[0].split('/')[-1].split('.')[0]
2707
2708 fuzzer_exes += executable(
2709 name,
2710 sources,
2711 include_directories : [incs, include_directories('src/fuzz')],
2712 link_with : link_with,
2713 dependencies : dependencies,
2714 c_args : defs,
2715 install : false)
2716endforeach
2717
2718run_target('fuzzers',
2719 depends : fuzzer_exes,
2720 command : ['true'])
2721
2722############################################################
2723
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002724make_directive_index_py = find_program('tools/make-directive-index.py')
2725make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002726xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002727hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002728
2729subdir('units')
2730subdir('sysctl.d')
2731subdir('sysusers.d')
2732subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002733subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002734subdir('hwdb')
2735subdir('network')
2736subdir('man')
2737subdir('shell-completion/bash')
2738subdir('shell-completion/zsh')
Lennart Poettering2d684e62018-03-28 16:58:37 +02002739subdir('doc/sysvinit')
2740subdir('doc/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002741
2742# FIXME: figure out if the warning is true:
2743# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2744install_subdir('factory/etc',
2745 install_dir : factorydir)
2746
2747
2748install_data('xorg/50-systemd-user.sh',
2749 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002750install_data('modprobe.d/systemd.conf',
2751 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002752install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002753 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002754 'NEWS',
2755 'README',
2756 'doc/CODING_STYLE',
2757 'doc/DISTRO_PORTING',
2758 'doc/ENVIRONMENT.md',
2759 'doc/HACKING',
2760 'doc/TRANSIENT-SETTINGS.md',
2761 'doc/TRANSLATORS',
2762 'doc/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002763 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2764 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002765
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002766meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2767meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2768
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002769############################################################
2770
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002771meson_check_help = find_program('tools/meson-check-help.sh')
2772
2773foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002774 name = exec.full_path().split('/')[-1]
2775 test('check-help-' + name,
2776 meson_check_help,
2777 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002778endforeach
2779
2780############################################################
2781
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002782# Enable tests for all supported sanitizers
2783foreach tuple : sanitizers
2784 sanitizer = tuple[0]
2785 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002786
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002787 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002788 prev = ''
2789 foreach p : fuzz_regression_tests
2790 b = p.split('/')[-2]
2791 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002792
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002793 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002794
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002795 if name != prev
2796 if want_tests == 'false'
2797 message('Not compiling @0@ because tests is set to false'.format(name))
2798 elif slow_tests
2799 exe = custom_target(
2800 name,
2801 output : name,
2802 depends : build,
2803 command : [env, 'ln', '-fs',
2804 join_paths(build.full_path(), b),
2805 '@OUTPUT@'],
2806 build_by_default : true)
2807 else
2808 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2809 endif
2810 endif
2811 prev = name
2812
2813 if want_tests != 'false' and slow_tests
2814 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2815 env,
2816 args : [exe.full_path(),
2817 join_paths(meson.source_root(),
2818 'test/fuzz-regressions',
2819 p)])
2820 endif
2821 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002822 endif
2823endforeach
2824
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002825
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002826############################################################
2827
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002828if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002829 all_files = run_command(
2830 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002831 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002832 'ls-files',
2833 ':/*.[ch]'])
2834 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002835
userwithuide85a6902017-08-09 13:41:44 +00002836 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002837 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002838 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002839 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00002840 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002841 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002842 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002843endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002844
2845if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002846 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002847 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002848 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002849 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002850endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002851
2852if git.found()
2853 git_head = run_command(
2854 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002855 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002856 'rev-parse', 'HEAD']).stdout().strip()
2857 git_head_short = run_command(
2858 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002859 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002860 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2861
2862 run_target(
2863 'git-snapshot',
2864 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002865 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002866 git_head_short),
2867 '--prefix', 'systemd-@0@/'.format(git_head),
2868 'HEAD'])
2869endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002870
2871############################################################
2872
Lennart Poettering51b13862017-12-20 12:51:14 +01002873meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2874run_target(
2875 'check-api-docs',
2876 depends : [man, libsystemd, libudev],
2877 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2878
2879############################################################
2880
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002881status = [
2882 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2883
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002884 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002885 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002886 'prefix directory: @0@'.format(prefixdir),
2887 'rootprefix directory: @0@'.format(rootprefixdir),
2888 'sysconf directory: @0@'.format(sysconfdir),
2889 'include directory: @0@'.format(includedir),
2890 'lib directory: @0@'.format(libdir),
2891 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002892 'SysV init scripts: @0@'.format(sysvinit_path),
2893 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002894 'PAM modules directory: @0@'.format(pamlibdir),
2895 'PAM configuration directory: @0@'.format(pamconfdir),
2896 'RPM macros directory: @0@'.format(rpmmacrosdir),
2897 'modprobe.d directory: @0@'.format(modprobedir),
2898 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2899 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2900 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2901 'bash completions directory: @0@'.format(bashcompletiondir),
2902 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002903 'extra start script: @0@'.format(get_option('rc-local')),
2904 'extra stop script: @0@'.format(get_option('halt-local')),
2905 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2906 get_option('debug-tty')),
2907 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09002908 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002909 'maximum system UID: @0@'.format(system_uid_max),
2910 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002911 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2912 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2913 'minimum container UID base: @0@'.format(container_uid_base_min),
2914 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002915 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002916 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002917 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002918 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002919 'nobody user name: @0@'.format(nobody_user),
2920 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002921 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002922 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002923
2924 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02002925 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002926 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2927 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2928
2929alt_dns_servers = '\n '.join(dns_servers.split(' '))
2930alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2931status += [
2932 'default DNS servers: @0@'.format(alt_dns_servers),
2933 'default NTP servers: @0@'.format(alt_ntp_servers)]
2934
2935alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2936 '@@0@'.format(time_epoch)).stdout().strip()
2937status += [
2938 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2939
2940# TODO:
2941# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2942# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2943# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2944
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002945if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002946 status += [
2947 'efi arch: @0@'.format(efi_arch)]
2948
2949 if have_gnu_efi
2950 status += [
2951 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2952 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002953 'EFI lib directory: @0@'.format(efi_libdir),
2954 'EFI lds directory: @0@'.format(efi_ldsdir),
2955 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002956 endif
2957endif
2958
2959found = []
2960missing = []
2961
2962foreach tuple : [
2963 ['libcryptsetup'],
2964 ['PAM'],
2965 ['AUDIT'],
2966 ['IMA'],
2967 ['AppArmor'],
2968 ['SELinux'],
2969 ['SECCOMP'],
2970 ['SMACK'],
2971 ['zlib'],
2972 ['xz'],
2973 ['lz4'],
2974 ['bzip2'],
2975 ['ACL'],
2976 ['gcrypt'],
2977 ['qrencode'],
2978 ['microhttpd'],
2979 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01002980 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002981 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002982 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002983 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002984 ['libidn'],
2985 ['libiptc'],
2986 ['elfutils'],
2987 ['binfmt'],
2988 ['vconsole'],
2989 ['quotacheck'],
2990 ['tmpfiles'],
2991 ['environment.d'],
2992 ['sysusers'],
2993 ['firstboot'],
2994 ['randomseed'],
2995 ['backlight'],
2996 ['rfkill'],
2997 ['logind'],
2998 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02002999 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003000 ['importd'],
3001 ['hostnamed'],
3002 ['timedated'],
3003 ['timesyncd'],
3004 ['localed'],
3005 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003006 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003007 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3008 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003009 ['coredump'],
3010 ['polkit'],
3011 ['legacy pkla', install_polkit_pkla],
3012 ['efi'],
3013 ['gnu-efi', have_gnu_efi],
3014 ['kmod'],
3015 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003016 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003017 ['blkid'],
3018 ['dbus'],
3019 ['glib'],
Yu Watanabe08540a92018-07-18 09:25:57 +09003020 ['nss-myhostname', conf.get('ENABLE_NSS_MYHOSTNAME') == 1],
3021 ['nss-mymachines', conf.get('ENABLE_NSS_MYMACHINES') == 1],
3022 ['nss-resolve', conf.get('ENABLE_NSS_RESOLVE') == 1],
3023 ['nss-systemd', conf.get('ENABLE_NSS_SYSTEMD') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003024 ['hwdb'],
3025 ['tpm'],
3026 ['man pages', want_man],
3027 ['html pages', want_html],
3028 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003029 ['SysV compat'],
3030 ['utmp'],
3031 ['ldconfig'],
3032 ['hibernate'],
3033 ['adm group', get_option('adm-group')],
3034 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003035 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003036 ['debug hashmap'],
3037 ['debug mmap cache'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003038 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003039]
3040
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003041 if tuple.length() >= 2
3042 cond = tuple[1]
3043 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003044 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3045 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003046 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003047 endif
3048 if cond
3049 found += [tuple[0]]
3050 else
3051 missing += [tuple[0]]
3052 endif
3053endforeach
3054
3055status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003056 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003057 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003058 '',
3059 'disabled features: @0@'.format(', '.join(missing)),
3060 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003061message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003062
3063if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003064 warning('\n' +
3065 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3066 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3067 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003068endif