blob: 2a70af0dcb60d542dd9e9f1245228a44c79135d3 [file] [log] [blame]
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01001# SPDX-License-Identifier: LGPL-2.1+
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01002
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003project('systemd', 'c',
Lennart Poetteringde7436b2018-06-22 13:03:47 +02004 version : '239',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04005 license : 'LGPLv2+',
6 default_options: [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04007 'c_std=gnu99',
8 'prefix=/usr',
9 'sysconfdir=/etc',
10 'localstatedir=/var',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040011 ],
Yu Watanabe8ea9fad2018-05-10 14:50:52 +090012 meson_version : '>= 0.44',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040013 )
14
Lennart Poetteringde7436b2018-06-22 13:03:47 +020015libsystemd_version = '0.23.0'
16libudev_version = '1.6.11'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020017
Yu Watanabe348b4432018-05-07 18:17:35 +090018# We need the same data in two different formats, ugh!
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040019# Also, for hysterical reasons, we use different variable
20# names, sometimes. Not all variables are included in every
21# set. Ugh, ugh, ugh!
22conf = configuration_data()
23conf.set_quoted('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version())
24conf.set_quoted('PACKAGE_VERSION', meson.project_version())
25
26substs = configuration_data()
27substs.set('PACKAGE_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
28substs.set('PACKAGE_VERSION', meson.project_version())
29
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040030#####################################################################
31
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040032# Try to install the git pre-commit hook
33git_hook = run_command(join_paths(meson.source_root(), 'tools/add-git-hook.sh'))
34if git_hook.returncode() == 0
35 message(git_hook.stdout().strip())
36endif
37
38#####################################################################
39
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010040if get_option('split-usr') == 'auto'
41 split_usr = run_command('test', '-L', '/bin').returncode() != 0
42else
43 split_usr = get_option('split-usr') == 'true'
44endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010045conf.set10('HAVE_SPLIT_USR', split_usr,
46 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010047
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010048if get_option('split-bin') == 'auto'
49 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
50else
51 split_bin = get_option('split-bin') == 'true'
52endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010053conf.set10('HAVE_SPLIT_BIN', split_bin,
54 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010055
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010056rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010057# Unusual rootprefixdir values are used by some distros
58# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010059rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010060if rootprefixdir == ''
61 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010062endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040063
64sysvinit_path = get_option('sysvinit-path')
65sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090066conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020067 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040068
69# join_paths ignore the preceding arguments if an absolute component is
70# encountered, so this should canonicalize various paths when they are
71# absolute or relative.
72prefixdir = get_option('prefix')
73if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040074 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040075endif
76bindir = join_paths(prefixdir, get_option('bindir'))
77libdir = join_paths(prefixdir, get_option('libdir'))
78sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
79includedir = join_paths(prefixdir, get_option('includedir'))
80datadir = join_paths(prefixdir, get_option('datadir'))
81localstatedir = join_paths('/', get_option('localstatedir'))
82
83rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010084rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040085rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
86
87rootlibdir = get_option('rootlibdir')
88if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040089 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040090endif
91
92# Dirs of external packages
Michael Bieble17e5ba2017-04-13 10:30:56 -040093pkgconfigdatadir = join_paths(datadir, 'pkgconfig')
94pkgconfiglibdir = join_paths(libdir, 'pkgconfig')
95polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
96polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
97polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
98varlogdir = join_paths(localstatedir, 'log')
99xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900100rpmmacrosdir = get_option('rpmmacrosdir')
101if rpmmacrosdir != 'no'
102 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
103endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200104modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400105
106# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400107pkgdatadir = join_paths(datadir, 'systemd')
108environmentdir = join_paths(prefixdir, 'lib/environment.d')
109pkgsysconfdir = join_paths(sysconfdir, 'systemd')
110userunitdir = join_paths(prefixdir, 'lib/systemd/user')
111userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
112tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
113sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
114sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
115binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
116modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
117networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
118pkgincludedir = join_paths(includedir, 'systemd')
119systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
120usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
121systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
122userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
123systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
124systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
125systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
126systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
127udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
128udevhomedir = udevlibexecdir
129udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
130udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
131catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
132kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
133factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400134bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
135testsdir = join_paths(prefixdir, 'lib/systemd/tests')
136systemdstatedir = join_paths(localstatedir, 'lib/systemd')
137catalogstatedir = join_paths(systemdstatedir, 'catalog')
138randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200139profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400140
tblume75aaade2018-02-01 22:46:15 +0100141docdir = get_option('docdir')
142if docdir == ''
143 docdir = join_paths(datadir, 'doc/systemd')
144endif
145
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400146dbuspolicydir = get_option('dbuspolicydir')
147if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400148 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400149endif
150
151dbussessionservicedir = get_option('dbussessionservicedir')
152if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400153 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400154endif
155
156dbussystemservicedir = get_option('dbussystemservicedir')
157if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400158 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400159endif
160
161pamlibdir = get_option('pamlibdir')
162if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400163 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400164endif
165
166pamconfdir = get_option('pamconfdir')
167if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400168 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400169endif
170
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100171memory_accounting_default = get_option('memory-accounting-default')
172
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400173conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400174conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400175conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
176conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
177conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400178conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
179conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100180
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100181conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100182
Michael Bieble17e5ba2017-04-13 10:30:56 -0400183conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400184conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
185conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400186conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
187conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
188conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
189conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100190conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100191conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400192conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
193conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
194conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
195conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
196conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100197conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400198conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400199conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
200conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400201conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
202conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
203conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
204conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
205conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
206conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400207conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
208conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400209conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400210conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400211conf.set_quoted('LIBDIR', libdir)
212conf.set_quoted('ROOTLIBDIR', rootlibdir)
213conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
214conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400215conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
216conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
217conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
218conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
219conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
220conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100221conf.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'true' : 'false')
Michal Koutný7f672e82018-03-09 18:27:13 +0100222conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400223
224conf.set_quoted('ABS_BUILD_DIR', meson.build_root())
225conf.set_quoted('ABS_SRC_DIR', meson.source_root())
226
227substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400228substs.set('exec_prefix', prefixdir)
229substs.set('libdir', libdir)
230substs.set('rootlibdir', rootlibdir)
231substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400232substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400233substs.set('bindir', bindir)
234substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400235substs.set('rootlibexecdir', rootlibexecdir)
236substs.set('systemunitdir', systemunitdir)
237substs.set('userunitdir', userunitdir)
238substs.set('systempresetdir', systempresetdir)
239substs.set('userpresetdir', userpresetdir)
240substs.set('udevhwdbdir', udevhwdbdir)
241substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400242substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200243substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400244substs.set('catalogdir', catalogdir)
245substs.set('tmpfilesdir', tmpfilesdir)
246substs.set('sysusersdir', sysusersdir)
247substs.set('sysctldir', sysctldir)
248substs.set('binfmtdir', binfmtdir)
249substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200250substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400251substs.set('systemgeneratordir', systemgeneratordir)
252substs.set('usergeneratordir', usergeneratordir)
253substs.set('systemenvgeneratordir', systemenvgeneratordir)
254substs.set('userenvgeneratordir', userenvgeneratordir)
255substs.set('systemshutdowndir', systemshutdowndir)
256substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400257substs.set('VARLOGDIR', varlogdir)
258substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400259substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
260substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400261substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
262substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
263substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
264substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100265substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400266
267#####################################################################
268
269cc = meson.get_compiler('c')
270pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400271check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100272meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400273
Adam Duskett08318a22018-01-15 06:25:46 -0500274if get_option('tests') != 'false'
275 cxx = find_program('c++', required : false)
276 if cxx.found()
277 # Used only for tests
278 add_languages('cpp')
279 endif
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400280endif
281
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500282want_ossfuzz = get_option('oss-fuzz')
283want_libfuzzer = get_option('llvm-fuzz')
284fuzzer_build = want_ossfuzz or want_libfuzzer
285if want_ossfuzz and want_libfuzzer
286 error('only one of oss-fuzz and llvm-fuzz can be specified')
287endif
288if want_libfuzzer
289 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
290endif
291if want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500292 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
293endif
294
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900295possible_cc_flags = [
296 '-Wextra',
297 '-Werror=undef',
298 '-Wlogical-op',
299 '-Wmissing-include-dirs',
300 '-Wold-style-definition',
301 '-Wpointer-arith',
302 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900303 '-Wfloat-equal',
304 '-Wsuggest-attribute=noreturn',
305 '-Werror=missing-prototypes',
306 '-Werror=implicit-function-declaration',
307 '-Werror=missing-declarations',
308 '-Werror=return-type',
309 '-Werror=incompatible-pointer-types',
310 '-Werror=format=2',
311 '-Wstrict-prototypes',
312 '-Wredundant-decls',
313 '-Wmissing-noreturn',
314 '-Wimplicit-fallthrough=5',
315 '-Wshadow',
316 '-Wendif-labels',
317 '-Wstrict-aliasing=2',
318 '-Wwrite-strings',
319 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200320 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200321 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900322 '-Wdate-time',
323 '-Wnested-externs',
324 '-ffast-math',
325 '-fno-common',
326 '-fdiagnostics-show-option',
327 '-fno-strict-aliasing',
328 '-fvisibility=hidden',
329 '-fstack-protector',
330 '-fstack-protector-strong',
331 '--param=ssp-buffer-size=4',
332]
333
334# --as-needed and --no-undefined are provided by meson by default,
335# run mesonconf to see what is enabled
336possible_link_flags = [
337 '-Wl,-z,relro',
338 '-Wl,-z,now',
339]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400340
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500341# the oss-fuzz fuzzers are not built with -fPIE, so don't
342# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500343if not fuzzer_build
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900344 possible_cc_flags += '-fPIE'
345 possible_link_flags += '-pie'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500346endif
347
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900348if cc.get_id() == 'clang'
349 possible_cc_flags += [
350 '-Wno-typedef-redefinition',
351 '-Wno-gnu-variable-sized-type-not-at-end',
352 ]
353endif
354
355if get_option('buildtype') != 'debug'
356 possible_cc_flags += [
357 '-ffunction-sections',
358 '-fdata-sections',
359 ]
360
361 possible_link_flags += '-Wl,--gc-sections'
362endif
363
364add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
365
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400366# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
Zbigniew Jędrzejewski-Szmekd40f5cc2018-06-07 15:08:02 +0200367# arguments, just emits a warning. So test for the "positive" version instead.
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400368foreach arg : ['unused-parameter',
369 'missing-field-initializers',
370 'unused-result',
Zbigniew Jędrzejewski-Szmekfb1b5882017-09-04 19:49:12 +0300371 'format-signedness',
372 'error=nonnull', # work-around for gcc 7.1 turning this on on its own
373 ]
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400374 if cc.has_argument('-W' + arg)
375 add_project_arguments('-Wno-' + arg, language : 'c')
376 endif
377endforeach
378
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800379if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400380 #include <time.h>
381 #include <inttypes.h>
382 typedef uint64_t usec_t;
383 usec_t now(clockid_t clock);
384 int main(void) {
385 struct timespec now;
386 return 0;
387 }
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800388''', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400389 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400390endif
391
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400392link_test_c = files('tools/meson-link-test.c')
393
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900394foreach arg : possible_link_flags
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400395 have = run_command(check_compilation_sh,
396 cc.cmd_array(), '-x', 'c', arg,
397 '-include', link_test_c).returncode() == 0
398 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900399 if have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400400 add_project_link_arguments(arg, language : 'c')
401 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400402endforeach
403
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400404cpp = ' '.join(cc.cmd_array()) + ' -E'
405
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400406#####################################################################
407# compilation result tests
408
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400409conf.set('_GNU_SOURCE', true)
410conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400411
412conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
413conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
414conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
415conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
416conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
417conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
418conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
419
420decl_headers = '''
421#include <uchar.h>
422#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000423#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100424#include <linux/stat.h>
425#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400426'''
427# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
428
429foreach decl : ['char16_t',
430 'char32_t',
431 'key_serial_t',
432 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000433 'struct fib_rule_uid_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100434 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400435 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400436
437 # We get -1 if the size cannot be determined
438 have = cc.sizeof(decl, prefix : decl_headers) > 0
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200439 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400440endforeach
441
442foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
443 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
444 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
445 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530446 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400447 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
448 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
449 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
450 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
451 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530452 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400453 # if_tunnel.h is buggy and cannot be included on its own
454 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
455 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
456 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
457 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
458 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
459 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
460 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530461 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400462 ['NDA_IFINDEX', 'linux/neighbour.h'],
463 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000464 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400465 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530466 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400467 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400468 prefix = decl.length() > 2 ? decl[2] : ''
469 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200470 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400471endforeach
472
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400473foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200474 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400475endforeach
476
477foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100478 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100479 ['gettid', '''#include <sys/types.h>
480 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100481 ['pivot_root', '''#include <stdlib.h>
482 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100483 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400484 #include <sys/stat.h>
485 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100486 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100487 ['renameat2', '''#include <stdio.h>
488 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400489 ['kcmp', '''#include <linux/kcmp.h>'''],
490 ['keyctl', '''#include <sys/types.h>
491 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100492 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400493 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200494 ['bpf', '''#include <sys/syscall.h>
495 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100496 ['statx', '''#include <sys/types.h>
497 #include <sys/stat.h>
498 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100499 ['explicit_bzero' , '''#include <string.h>'''],
500 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400501]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400502
Lennart Poettering85db59b2017-12-25 12:01:14 +0100503 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200504 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400505endforeach
506
Lennart Poettering85db59b2017-12-25 12:01:14 +0100507if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200508 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200509 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400510else
511 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200512 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200513 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400514endif
515
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400516#####################################################################
517
518sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400519awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400520m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400521stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400522git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100523env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100524perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400525
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400526meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400527mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400528test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
529splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400530
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400531# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
532# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500533progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400534 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400535 ['kmod', '/usr/bin/kmod' ],
536 ['kexec', '/usr/sbin/kexec' ],
537 ['sulogin', '/usr/sbin/sulogin' ],
538 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
539 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
540 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
541 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
542 ]
543foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400544 path = get_option(prog[0] + '-path')
545 if path != ''
546 message('Using @1@ for @0@'.format(prog[0], path))
547 else
548 exe = find_program(prog[0],
549 '/usr/sbin/' + prog[0],
550 '/sbin/' + prog[0],
551 required: false)
552 path = exe.found() ? exe.path() : prog[1]
553 endif
554 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
555 conf.set_quoted(name, path)
556 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400557endforeach
558
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500559conf.set_quoted('TELINIT', get_option('telinit-path'))
560
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400561if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100562 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400563endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400564
565############################################################
566
567gperf = find_program('gperf')
568
569gperf_test_format = '''
570#include <string.h>
571const char * in_word_set(const char *, @0@);
572@1@
573'''
574gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
575gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
576gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
577if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400578 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400579else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400580 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
581 if cc.compiles(gperf_test)
582 gperf_len_type = 'unsigned'
583 else
584 error('unable to determine gperf len type')
585 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400586endif
587message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400588conf.set('GPERF_LEN_TYPE', gperf_len_type,
589 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400590
591############################################################
592
593if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400594 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400595endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100596foreach header : ['crypt.h',
597 'linux/btrfs.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400598 'linux/memfd.h',
599 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200600 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400601 'valgrind/memcheck.h',
602 'valgrind/valgrind.h',
603 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400604
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200605 conf.set10('HAVE_' + header.underscorify().to_upper(),
606 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400607endforeach
608
609############################################################
610
611conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400612conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
613gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400614
615default_hierarchy = get_option('default-hierarchy')
616conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
617 description : 'default cgroup hierarchy as string')
618if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400619 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400620elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400621 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400622else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400623 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400624endif
625
626time_epoch = get_option('time-epoch')
627if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400628 NEWS = files('NEWS')
629 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400630endif
631time_epoch = time_epoch.to_int()
632conf.set('TIME_EPOCH', time_epoch)
633
634system_uid_max = get_option('system-uid-max')
635if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400636 system_uid_max = run_command(
637 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800638 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
639 '/etc/login.defs').stdout().strip()
640 if system_uid_max == ''
641 system_uid_max = '999'
642 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400643endif
644system_uid_max = system_uid_max.to_int()
645conf.set('SYSTEM_UID_MAX', system_uid_max)
646substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400647message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400648
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400649system_gid_max = get_option('system-gid-max')
650if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400651 system_gid_max = run_command(
652 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800653 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
654 '/etc/login.defs').stdout().strip()
655 if system_gid_max == ''
656 system_gid_max = '999'
657 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400658endif
659system_gid_max = system_gid_max.to_int()
660conf.set('SYSTEM_GID_MAX', system_gid_max)
661substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400662message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400663
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100664dynamic_uid_min = get_option('dynamic-uid-min').to_int()
665dynamic_uid_max = get_option('dynamic-uid-max').to_int()
666conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
667conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
668substs.set('dynamicuidmin', dynamic_uid_min)
669substs.set('dynamicuidmax', dynamic_uid_max)
670
671container_uid_base_min = get_option('container-uid-base-min').to_int()
672container_uid_base_max = get_option('container-uid-base-max').to_int()
673conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
674conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
675substs.set('containeruidbasemin', container_uid_base_min)
676substs.set('containeruidbasemax', container_uid_base_max)
677
Lennart Poetteringafde4572017-12-05 11:00:24 +0100678nobody_user = get_option('nobody-user')
679nobody_group = get_option('nobody-group')
680
681getent_result = run_command('getent', 'passwd', '65534')
682if getent_result.returncode() == 0
683 name = getent_result.stdout().split(':')[0]
684 if name != nobody_user
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900685 warning('\n' +
686 'The local user with the UID 65534 does not match the configured user name "@0@" of the nobody user (its name is @1@).\n'.format(nobody_user, name) +
687 'Your build will result in an user table setup that is incompatible with the local system.')
Lennart Poetteringafde4572017-12-05 11:00:24 +0100688 endif
689endif
690id_result = run_command('id', '-u', nobody_user)
691if id_result.returncode() == 0
692 id = id_result.stdout().to_int()
693 if id != 65534
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900694 warning('\n' +
695 'The local user with the configured user name "@0@" of the nobody user does not have UID 65534 (it has @1@).\n'.format(nobody_user, id) +
696 'Your build will result in an user table setup that is incompatible with the local system.')
Lennart Poetteringafde4572017-12-05 11:00:24 +0100697 endif
698endif
699
700getent_result = run_command('getent', 'group', '65534')
701if getent_result.returncode() == 0
702 name = getent_result.stdout().split(':')[0]
703 if name != nobody_group
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900704 warning('\n' +
705 'The local group with the GID 65534 does not match the configured group name "@0@" of the nobody group (its name is @1@).\n'.format(nobody_group, name) +
706 'Your build will result in an group table setup that is incompatible with the local system.')
Lennart Poetteringafde4572017-12-05 11:00:24 +0100707 endif
708endif
709id_result = run_command('id', '-g', nobody_group)
710if id_result.returncode() == 0
711 id = id_result.stdout().to_int()
712 if id != 65534
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900713 warning('\n' +
714 'The local group with the configured group name "@0@" of the nobody group does not have UID 65534 (it has @1@).\n'.format(nobody_group, id) +
715 'Your build will result in an group table setup that is incompatible with the local system.')
Lennart Poetteringafde4572017-12-05 11:00:24 +0100716 endif
717endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900718if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900719 warning('\n' +
720 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
721 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900722endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100723
724conf.set_quoted('NOBODY_USER_NAME', nobody_user)
725conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900726substs.set('NOBODY_USER_NAME', nobody_user)
727substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100728
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400729tty_gid = get_option('tty-gid')
730conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400731substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400732
Ikey Doherty84786b82017-12-03 12:28:23 +0000733# Ensure provided GID argument is numeric, otherwise fallback to default assignment
734if get_option('users-gid') != ''
Yu Watanabed6806872017-12-05 14:01:39 +0900735 users_gid = get_option('users-gid').to_int()
Ikey Doherty84786b82017-12-03 12:28:23 +0000736else
Yu Watanabed6806872017-12-05 14:01:39 +0900737 users_gid = '-'
Ikey Doherty84786b82017-12-03 12:28:23 +0000738endif
739substs.set('USERS_GID', users_gid)
740
Yu Watanabe348b4432018-05-07 18:17:35 +0900741conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
742conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400743
Michael Bieblace5e312018-07-13 23:36:13 +0200744dev_kvm_mode = get_option('dev-kvm-mode')
745substs.set('DEV_KVM_MODE', dev_kvm_mode)
746conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Tom Stellard4e15a732017-10-31 08:46:24 -0700747substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400748
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400749kill_user_processes = get_option('default-kill-user-processes')
750conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100751conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400752substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400753
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400754dns_servers = get_option('dns-servers')
755conf.set_quoted('DNS_SERVERS', dns_servers)
756substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400757
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400758ntp_servers = get_option('ntp-servers')
759conf.set_quoted('NTP_SERVERS', ntp_servers)
760substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400761
762conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
763
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400764substs.set('SUSHELL', get_option('debug-shell'))
765substs.set('DEBUGTTY', get_option('debug-tty'))
766
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200767enable_debug_hashmap = false
768enable_debug_mmap_cache = false
Yu Watanabead7aa762018-05-02 13:56:28 +0900769foreach name : get_option('debug')
770 if name == 'hashmap'
771 enable_debug_hashmap = true
772 elif name == 'mmap-cache'
773 enable_debug_mmap_cache = true
774 else
775 message('unknown debug option "@0@", ignoring'.format(name))
776 endif
777endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200778conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
779conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400780
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200781conf.set10('VALGRIND', get_option('valgrind'))
782
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400783#####################################################################
784
785threads = dependency('threads')
786librt = cc.find_library('rt')
787libm = cc.find_library('m')
788libdl = cc.find_library('dl')
789libcrypt = cc.find_library('crypt')
790
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400791libcap = dependency('libcap', required : false)
792if not libcap.found()
793 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
794 libcap = cc.find_library('cap')
795endif
796
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400797libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100798 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400799
800want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500801if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400802 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400803 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400804 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200805 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400806else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200807 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400808 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400809endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200810conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400811
812want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500813if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400814 libselinux = dependency('libselinux',
815 version : '>= 2.1.9',
816 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200817 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400818else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200819 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400820 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400821endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200822conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400823
824want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500825if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400826 libapparmor = dependency('libapparmor',
827 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200828 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400829else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200830 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400831 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400832endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200833conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400834
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400835smack_run_label = get_option('smack-run-label')
836if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400837 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400838endif
839
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400840want_polkit = get_option('polkit')
841install_polkit = false
842install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500843if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400844 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400845
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400846 libpolkit = dependency('polkit-gobject-1',
847 required : false)
848 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
849 message('Old polkit detected, will install pkla files')
850 install_polkit_pkla = true
851 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400852endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200853conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400854
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400855want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500856if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400857 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200858 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400859else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200860 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400861 libacl = []
862endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200863conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400864
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400865want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500866if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400867 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200868 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400869else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200870 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400871 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400872endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200873conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400874
875want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500876if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400877 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200878 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400879else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200880 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400881 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400882endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200883conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400884
885want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500886if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400887 libkmod = dependency('libkmod',
888 version : '>= 15',
889 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200890 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400891else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200892 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400893 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400894endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200895conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400896
897want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500898if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400899 libpam = cc.find_library('pam', required : want_pam == 'true')
900 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200901 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400902else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200903 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400904 libpam = []
905 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400906endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200907conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400908
909want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500910if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400911 libmicrohttpd = dependency('libmicrohttpd',
912 version : '>= 0.9.33',
913 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200914 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400915else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200916 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400917 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400918endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200919conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400920
921want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500922if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400923 libcryptsetup = dependency('libcryptsetup',
924 version : '>= 1.6.0',
925 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200926 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400927else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200928 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400929 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400930endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200931conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400932
933want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500934if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400935 libcurl = dependency('libcurl',
936 version : '>= 7.32.0',
937 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200938 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400939else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200940 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400941 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400942endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200943conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400944
945want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400946want_libidn2 = get_option('libidn2')
947if want_libidn == 'true' and want_libidn2 == 'true'
948 error('libidn and libidn2 cannot be requested simultaneously')
949endif
950
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500951if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400952 libidn = dependency('libidn',
953 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200954 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400955else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200956 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400957 libidn = []
958endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200959conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500960if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400961 # libidn is used for both libidn and libidn2 objects
962 libidn = dependency('libidn2',
963 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200964 have = libidn.found()
965else
966 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400967endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200968conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400969
970want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500971if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400972 libiptc = dependency('libiptc',
973 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200974 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400975else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200976 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400977 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400978endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200979conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400980
981want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500982if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400983 libqrencode = dependency('libqrencode',
984 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200985 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400986else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200987 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400988 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400989endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200990conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400991
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400992want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500993if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400994 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
995 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200996 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400997else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200998 have = false
999endif
1000if not have
1001 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001002 libgcrypt = []
1003 libgpg_error = []
1004endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001005conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001006
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001007want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001008if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001009 libgnutls = dependency('gnutls',
1010 version : '>= 3.1.4',
1011 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001012 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001013else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001014 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001015 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001016endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001017conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001018
1019want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001020if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001021 libdw = dependency('libdw',
1022 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001023 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001024else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001025 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001026 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001027endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001028conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001029
1030want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001031if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001032 libz = dependency('zlib',
1033 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001034 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001035else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001036 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001037 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001038endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001039conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001040
1041want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001042if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001043 libbzip2 = cc.find_library('bz2',
1044 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001045 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001046else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001047 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001048 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001049endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001050conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001051
1052want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001053if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001054 libxz = dependency('liblzma',
1055 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001056 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001057else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001058 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001059 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001060endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001061conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001062
1063want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001064if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001065 liblz4 = dependency('liblz4',
1066 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001067 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001068else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001069 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001070 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001071endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001072conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001073
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001074want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001075if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001076 libxkbcommon = dependency('xkbcommon',
1077 version : '>= 0.3.0',
1078 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001079 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001080else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001081 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001082 libxkbcommon = []
1083endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001084conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001085
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001086want_pcre2 = get_option('pcre2')
1087if want_pcre2 != 'false'
1088 libpcre2 = dependency('libpcre2-8',
1089 required : want_pcre2 == 'true')
1090 have = libpcre2.found()
1091else
1092 have = false
1093 libpcre2 = []
1094endif
1095conf.set10('HAVE_PCRE2', have)
1096
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001097want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001098if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001099 libglib = dependency('glib-2.0',
1100 version : '>= 2.22.0',
1101 required : want_glib == 'true')
1102 libgobject = dependency('gobject-2.0',
1103 version : '>= 2.22.0',
1104 required : want_glib == 'true')
1105 libgio = dependency('gio-2.0',
1106 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001107 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001108else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001109 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001110 libglib = []
1111 libgobject = []
1112 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001113endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001114conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001115
1116want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001117if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001118 libdbus = dependency('dbus-1',
1119 version : '>= 1.3.2',
1120 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001121 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001122else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001123 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001124 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001125endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001126conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001127
Yu Watanabe42303dc2017-06-18 05:22:32 +09001128default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001129if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001130 default_dnssec = 'no'
1131endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001132if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001133 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1134 default_dnssec = 'no'
1135endif
1136conf.set('DEFAULT_DNSSEC_MODE',
1137 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1138substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1139
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001140dns_over_tls = get_option('dns-over-tls')
1141if dns_over_tls != 'false'
Yu Watanabe48f5da12018-06-28 16:09:04 +09001142 have = (conf.get('HAVE_GNUTLS') == 1 and
1143 libgnutls.version().version_compare('>=3.5.3'))
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001144 if dns_over_tls == 'true' and not have
1145 error('DNS-over-TLS support was requested, but dependencies are not available')
1146 endif
1147else
1148 have = false
1149endif
1150conf.set10('ENABLE_DNS_OVER_TLS', have)
1151
Iwan Timmerc9299be2018-06-13 20:26:24 +02001152default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001153if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001154 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001155endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001156if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1157 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 +02001158 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001159endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001160conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1161 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1162substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001163
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001164want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001165if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001166 have = (conf.get('HAVE_LIBCURL') == 1 and
1167 conf.get('HAVE_ZLIB') == 1 and
1168 conf.get('HAVE_BZIP2') == 1 and
1169 conf.get('HAVE_XZ') == 1 and
1170 conf.get('HAVE_GCRYPT') == 1)
1171 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001172 error('importd support was requested, but dependencies are not available')
1173 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001174else
1175 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001176endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001177conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001178
1179want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001180if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001181 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1182 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001183 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1184 # it's possible to build one without the other. Complain only if
1185 # support was explictly requested. The auxiliary files like sysusers
1186 # config should be installed when any of the programs are built.
1187 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1188 error('remote support was requested, but dependencies are not available')
1189 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001190 have = have_deps[0] or have_deps[1]
1191else
1192 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001193endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001194conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001195
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001196foreach term : ['utmp',
1197 'hibernate',
1198 'environment-d',
1199 'binfmt',
1200 'coredump',
1201 'resolve',
1202 'logind',
1203 'hostnamed',
1204 'localed',
1205 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001206 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001207 'networkd',
1208 'timedated',
1209 'timesyncd',
1210 'myhostname',
1211 'firstboot',
1212 'randomseed',
1213 'backlight',
1214 'vconsole',
1215 'quotacheck',
1216 'sysusers',
1217 'tmpfiles',
1218 'hwdb',
1219 'rfkill',
1220 'ldconfig',
1221 'efi',
1222 'tpm',
1223 'ima',
1224 'smack',
1225 'gshadow',
1226 'idn',
1227 'nss-systemd']
1228 have = get_option(term)
1229 name = 'ENABLE_' + term.underscorify().to_upper()
1230 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001231endforeach
1232
Yu Watanabe348b4432018-05-07 18:17:35 +09001233conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001234
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001235want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001236install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001237slow_tests = get_option('slow-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001238tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001239fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001240
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001241conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001242
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001243#####################################################################
1244
1245if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001246 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001247
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001248 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001249 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001250 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001251 elif efi_arch == 'x86_64'
1252 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001253 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001254 elif efi_arch == 'arm'
1255 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001256 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001257 elif efi_arch == 'aarch64'
1258 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001259 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001260 else
1261 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001262 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001263 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001264
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001265 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001266 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001267
1268 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001269else
1270 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001271endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001272conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001273
1274#####################################################################
1275
1276config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001277 output : 'config.h',
1278 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001279
Yu Watanabe348b4432018-05-07 18:17:35 +09001280meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1281
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001282includes = include_directories('src/basic',
1283 'src/shared',
1284 'src/systemd',
1285 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001286 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001287 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001288 'src/resolve',
1289 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001290 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001291 'src/login',
1292 'src/udev',
1293 'src/libudev',
1294 'src/core',
1295 'src/libsystemd/sd-bus',
1296 'src/libsystemd/sd-device',
1297 'src/libsystemd/sd-hwdb',
1298 'src/libsystemd/sd-id128',
1299 'src/libsystemd/sd-netlink',
1300 'src/libsystemd/sd-network',
1301 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001302 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001303
1304add_project_arguments('-include', 'config.h', language : 'c')
1305
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001306subdir('po')
1307subdir('catalog')
1308subdir('src/systemd')
1309subdir('src/basic')
1310subdir('src/libsystemd')
1311subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001312subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001313subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001314
1315libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001316 'journal-core',
1317 libjournal_core_sources,
1318 journald_gperf_c,
1319 include_directories : includes,
1320 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001321
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001322libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001323libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001324 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001325 '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 +02001326 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001327 include_directories : includes,
1328 link_args : ['-shared',
1329 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001330 link_with : [libbasic,
1331 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001332 link_whole : [libsystemd_static,
1333 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001334 dependencies : [threads,
1335 librt,
1336 libxz,
1337 liblz4],
1338 link_depends : libsystemd_sym,
1339 install : true,
1340 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001341
Davide Cavalca70848ec2018-04-09 02:43:35 -07001342static_libsystemd = get_option('static-libsystemd')
1343static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1344
1345install_libsystemd_static = static_library(
1346 'systemd',
1347 libsystemd_sources,
1348 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001349 basic_sources,
1350 basic_gcrypt_sources,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001351 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001352 build_by_default : static_libsystemd != 'false',
1353 install : static_libsystemd != 'false',
1354 install_dir : rootlibdir,
1355 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1356 dependencies : [threads,
1357 librt,
1358 libxz,
1359 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001360 libcap,
1361 libblkid,
1362 libmount,
1363 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001364 libgcrypt],
1365 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1366
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001367############################################################
1368
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001369# binaries that have --help and are intended for use by humans,
1370# usually, but not always, installed in /bin.
1371public_programs = []
1372
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001373subdir('src/libudev')
1374subdir('src/shared')
1375subdir('src/core')
1376subdir('src/udev')
1377subdir('src/network')
1378
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001379subdir('src/analyze')
1380subdir('src/journal-remote')
1381subdir('src/coredump')
1382subdir('src/hostname')
1383subdir('src/import')
1384subdir('src/kernel-install')
1385subdir('src/locale')
1386subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001387subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001388subdir('src/nspawn')
1389subdir('src/resolve')
1390subdir('src/timedate')
1391subdir('src/timesync')
1392subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001393subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001394
1395subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001396subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001397subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001398subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001399
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001400############################################################
1401
1402# only static linking apart from libdl, to make sure that the
1403# module is linked to all libraries that it uses.
1404test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001405 'test-dlopen',
1406 test_dlopen_c,
1407 include_directories : includes,
1408 link_with : [libbasic],
1409 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001410
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001411foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001412 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001413 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001414 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001415
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001416 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001417 if condition
1418 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001419
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001420 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1421 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001422
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001423 nss = shared_library(
1424 'nss_' + module,
1425 'src/nss-@0@/nss-@0@.c'.format(module),
1426 version : '2',
1427 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001428 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1429 link_args : ['-Wl,-z,nodelete',
1430 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001431 '-Wl,--version-script=' + version_script_arg,
1432 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001433 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001434 libbasic],
1435 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001436 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001437 link_depends : sym,
1438 install : true,
1439 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001440
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001441 # We cannot use shared_module because it does not support version suffix.
1442 # Unfortunately shared_library insists on creating the symlink…
1443 meson.add_install_script('sh', '-c',
1444 'rm $DESTDIR@0@/libnss_@1@.so'
1445 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001446
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001447 test('dlopen-nss_' + module,
1448 test_dlopen,
1449 args : [nss.full_path()]) # path to dlopen must include a slash
1450 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001451endforeach
1452
1453############################################################
1454
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001455executable('systemd',
1456 systemd_sources,
1457 include_directories : includes,
1458 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001459 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001460 dependencies : [threads,
1461 librt,
1462 libseccomp,
1463 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001464 libmount,
1465 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001466 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001467 install : true,
1468 install_dir : rootlibexecdir)
1469
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001470meson.add_install_script(meson_make_symlink,
1471 join_paths(rootlibexecdir, 'systemd'),
1472 join_paths(rootsbindir, 'init'))
1473
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001474exe = executable('systemd-analyze',
1475 systemd_analyze_sources,
1476 include_directories : includes,
1477 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001478 libshared],
1479 dependencies : [threads,
1480 librt,
1481 libseccomp,
1482 libselinux,
1483 libmount,
1484 libblkid],
1485 install_rpath : rootlibexecdir,
1486 install : true)
1487public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001488
1489executable('systemd-journald',
1490 systemd_journald_sources,
1491 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001492 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001493 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001494 dependencies : [threads,
1495 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001496 liblz4,
1497 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001498 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001499 install : true,
1500 install_dir : rootlibexecdir)
1501
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001502exe = executable('systemd-cat',
1503 systemd_cat_sources,
1504 include_directories : includes,
1505 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001506 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001507 dependencies : [threads],
1508 install_rpath : rootlibexecdir,
1509 install : true)
1510public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001511
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001512exe = executable('journalctl',
1513 journalctl_sources,
1514 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001515 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001516 dependencies : [threads,
1517 libqrencode,
1518 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001519 liblz4,
1520 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001521 install_rpath : rootlibexecdir,
1522 install : true,
1523 install_dir : rootbindir)
1524public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001525
1526executable('systemd-getty-generator',
1527 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001528 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001529 link_with : [libshared],
1530 install_rpath : rootlibexecdir,
1531 install : true,
1532 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001533
1534executable('systemd-debug-generator',
1535 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001536 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001537 link_with : [libshared],
1538 install_rpath : rootlibexecdir,
1539 install : true,
1540 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001541
1542executable('systemd-fstab-generator',
1543 'src/fstab-generator/fstab-generator.c',
1544 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001545 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001546 link_with : [libshared],
1547 install_rpath : rootlibexecdir,
1548 install : true,
1549 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001550
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001551if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001552 executable('30-systemd-environment-d-generator',
1553 'src/environment-d-generator/environment-d-generator.c',
1554 include_directories : includes,
1555 link_with : [libshared],
1556 install_rpath : rootlibexecdir,
1557 install : true,
1558 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001559
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001560 meson.add_install_script(meson_make_symlink,
1561 join_paths(sysconfdir, 'environment'),
1562 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001563endif
1564
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001565if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001566 executable('systemd-hibernate-resume-generator',
1567 'src/hibernate-resume/hibernate-resume-generator.c',
1568 include_directories : includes,
1569 link_with : [libshared],
1570 install_rpath : rootlibexecdir,
1571 install : true,
1572 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001573
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001574 executable('systemd-hibernate-resume',
1575 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001576 include_directories : includes,
1577 link_with : [libshared],
1578 install_rpath : rootlibexecdir,
1579 install : true,
1580 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001581endif
1582
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001583if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001584 executable('systemd-gpt-auto-generator',
1585 'src/gpt-auto-generator/gpt-auto-generator.c',
1586 'src/basic/blkid-util.h',
1587 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001588 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001589 dependencies : libblkid,
1590 install_rpath : rootlibexecdir,
1591 install : true,
1592 install_dir : systemgeneratordir)
1593
1594 exe = executable('systemd-dissect',
1595 'src/dissect/dissect.c',
1596 include_directories : includes,
1597 link_with : [libshared],
1598 install_rpath : rootlibexecdir,
1599 install : true,
1600 install_dir : rootlibexecdir)
1601 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001602endif
1603
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001604if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001605 executable('systemd-resolved',
1606 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001607 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001608 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001609 libbasic_gcrypt,
1610 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001611 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001612 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001613 install : true,
1614 install_dir : rootlibexecdir)
1615
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001616 exe = executable('resolvectl',
1617 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001618 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001619 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001620 libbasic_gcrypt,
1621 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001622 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001623 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001624 libm,
1625 libidn],
1626 install_rpath : rootlibexecdir,
1627 install : true)
1628 public_programs += [exe]
Lennart Poettering088c1362018-02-27 17:48:54 +01001629
1630 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001631 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001632 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001633
1634 meson.add_install_script(meson_make_symlink,
1635 join_paths(bindir, 'resolvectl'),
1636 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001637endif
1638
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001639if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001640 executable('systemd-logind',
1641 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001642 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001643 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001644 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001645 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001646 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001647 install_rpath : rootlibexecdir,
1648 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001649 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001650
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001651 exe = executable('loginctl',
1652 loginctl_sources,
1653 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001654 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001655 dependencies : [threads,
1656 liblz4,
1657 libxz],
1658 install_rpath : rootlibexecdir,
1659 install : true,
1660 install_dir : rootbindir)
1661 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001662
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001663 exe = executable('systemd-inhibit',
1664 'src/login/inhibit.c',
1665 include_directories : includes,
1666 link_with : [libshared],
1667 install_rpath : rootlibexecdir,
1668 install : true,
1669 install_dir : rootbindir)
1670 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001671
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001672 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001673 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1674 pam_systemd = shared_library(
1675 'pam_systemd',
1676 pam_systemd_c,
1677 name_prefix : '',
1678 include_directories : includes,
1679 link_args : ['-shared',
1680 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001681 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001682 libshared_static],
1683 dependencies : [threads,
1684 libpam,
1685 libpam_misc],
1686 link_depends : pam_systemd_sym,
1687 install : true,
1688 install_dir : pamlibdir)
1689
1690 test('dlopen-pam_systemd',
1691 test_dlopen,
1692 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1693 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001694endif
1695
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001696executable('systemd-user-runtime-dir',
1697 user_runtime_dir_sources,
1698 include_directories : includes,
1699 link_with : [libshared, liblogind_core],
1700 install_rpath : rootlibexecdir,
1701 install : true,
1702 install_dir : rootlibexecdir)
1703
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001704if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001705 executable('systemd-user-sessions',
1706 'src/user-sessions/user-sessions.c',
1707 include_directories : includes,
1708 link_with : [libshared],
1709 install_rpath : rootlibexecdir,
1710 install : true,
1711 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001712endif
1713
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001714if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001715 exe = executable('bootctl',
1716 'src/boot/bootctl.c',
1717 include_directories : includes,
1718 link_with : [libshared],
1719 dependencies : [libblkid],
1720 install_rpath : rootlibexecdir,
1721 install : true)
1722 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001723endif
1724
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001725exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1726 include_directories : includes,
1727 link_with : [libshared],
1728 dependencies : [threads],
1729 install_rpath : rootlibexecdir,
1730 install : true)
1731public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001732
Felipe Satelerf3794362018-05-22 15:08:57 -04001733
1734if get_option('link-systemctl-shared')
1735 systemctl_link_with = [libshared]
1736else
1737 systemctl_link_with = [libsystemd_static,
1738 libshared_static,
1739 libjournal_client,
1740 libbasic_gcrypt]
1741endif
1742
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001743exe = executable('systemctl', 'src/systemctl/systemctl.c',
1744 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001745 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001746 dependencies : [threads,
1747 libcap,
1748 libselinux,
1749 libxz,
1750 liblz4],
1751 install_rpath : rootlibexecdir,
1752 install : true,
1753 install_dir : rootbindir)
1754public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001755
Lennart Poettering61d05782018-04-16 21:41:40 +02001756if conf.get('ENABLE_PORTABLED') == 1
1757 executable('systemd-portabled',
1758 systemd_portabled_sources,
1759 include_directories : includes,
1760 link_with : [libshared],
1761 dependencies : [threads],
1762 install_rpath : rootlibexecdir,
1763 install : true,
1764 install_dir : rootlibexecdir)
1765
1766 exe = executable('portablectl', 'src/portable/portablectl.c',
1767 include_directories : includes,
1768 link_with : [libshared],
1769 dependencies : [threads],
1770 install_rpath : rootlibexecdir,
1771 install : true,
1772 install_dir : rootlibexecdir)
1773 public_programs += [exe]
1774endif
1775
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001776foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1777 meson.add_install_script(meson_make_symlink,
1778 join_paths(rootbindir, 'systemctl'),
1779 join_paths(rootsbindir, alias))
1780endforeach
1781
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001782if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001783 executable('systemd-backlight',
1784 'src/backlight/backlight.c',
1785 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001786 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001787 install_rpath : rootlibexecdir,
1788 install : true,
1789 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001790endif
1791
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001792if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001793 executable('systemd-rfkill',
1794 'src/rfkill/rfkill.c',
1795 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001796 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001797 install_rpath : rootlibexecdir,
1798 install : true,
1799 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001800endif
1801
1802executable('systemd-system-update-generator',
1803 'src/system-update-generator/system-update-generator.c',
1804 include_directories : includes,
1805 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001806 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001807 install : true,
1808 install_dir : systemgeneratordir)
1809
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001810if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001811 executable('systemd-cryptsetup',
1812 'src/cryptsetup/cryptsetup.c',
1813 include_directories : includes,
1814 link_with : [libshared],
1815 dependencies : [libcryptsetup],
1816 install_rpath : rootlibexecdir,
1817 install : true,
1818 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001819
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001820 executable('systemd-cryptsetup-generator',
1821 'src/cryptsetup/cryptsetup-generator.c',
1822 include_directories : includes,
1823 link_with : [libshared],
1824 dependencies : [libcryptsetup],
1825 install_rpath : rootlibexecdir,
1826 install : true,
1827 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001828
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001829 executable('systemd-veritysetup',
1830 'src/veritysetup/veritysetup.c',
1831 include_directories : includes,
1832 link_with : [libshared],
1833 dependencies : [libcryptsetup],
1834 install_rpath : rootlibexecdir,
1835 install : true,
1836 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001837
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001838 executable('systemd-veritysetup-generator',
1839 'src/veritysetup/veritysetup-generator.c',
1840 include_directories : includes,
1841 link_with : [libshared],
1842 dependencies : [libcryptsetup],
1843 install_rpath : rootlibexecdir,
1844 install : true,
1845 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001846endif
1847
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001848if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001849 executable('systemd-sysv-generator',
1850 'src/sysv-generator/sysv-generator.c',
1851 include_directories : includes,
1852 link_with : [libshared],
1853 install_rpath : rootlibexecdir,
1854 install : true,
1855 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001856
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001857 executable('systemd-rc-local-generator',
1858 'src/rc-local-generator/rc-local-generator.c',
1859 include_directories : includes,
1860 link_with : [libshared],
1861 install_rpath : rootlibexecdir,
1862 install : true,
1863 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001864endif
1865
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001866if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001867 executable('systemd-hostnamed',
1868 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001869 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001870 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001871 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001872 install : true,
1873 install_dir : rootlibexecdir)
1874
1875 exe = executable('hostnamectl',
1876 'src/hostname/hostnamectl.c',
1877 include_directories : includes,
1878 link_with : [libshared],
1879 install_rpath : rootlibexecdir,
1880 install : true)
1881 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001882endif
1883
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001884if conf.get('ENABLE_LOCALED') == 1
1885 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001886 # logind will load libxkbcommon.so dynamically on its own
1887 deps = [libdl]
1888 else
1889 deps = []
1890 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001891
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001892 executable('systemd-localed',
1893 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001894 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001895 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001896 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001897 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001898 install : true,
1899 install_dir : rootlibexecdir)
1900
1901 exe = executable('localectl',
1902 localectl_sources,
1903 include_directories : includes,
1904 link_with : [libshared],
1905 install_rpath : rootlibexecdir,
1906 install : true)
1907 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001908endif
1909
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001910if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001911 executable('systemd-timedated',
1912 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001913 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001914 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001915 install_rpath : rootlibexecdir,
1916 install : true,
1917 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09001918endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001919
Yu Watanabe6129ec82018-05-03 18:07:43 +09001920if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001921 exe = executable('timedatectl',
1922 'src/timedate/timedatectl.c',
1923 include_directories : includes,
1924 install_rpath : rootlibexecdir,
1925 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09001926 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001927 install : true)
1928 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001929endif
1930
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001931if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001932 executable('systemd-timesyncd',
1933 systemd_timesyncd_sources,
1934 include_directories : includes,
1935 link_with : [libshared],
1936 dependencies : [threads,
1937 libm],
1938 install_rpath : rootlibexecdir,
1939 install : true,
1940 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001941
1942 executable('systemd-time-wait-sync',
1943 'src/time-wait-sync/time-wait-sync.c',
1944 include_directories : includes,
1945 link_with : [libshared],
1946 install_rpath : rootlibexecdir,
1947 install : true,
1948 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001949endif
1950
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001951if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001952 executable('systemd-machined',
1953 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001954 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001955 link_with : [libmachine_core,
1956 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001957 install_rpath : rootlibexecdir,
1958 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001959 install_dir : rootlibexecdir)
1960
1961 exe = executable('machinectl',
1962 'src/machine/machinectl.c',
1963 include_directories : includes,
1964 link_with : [libshared],
1965 dependencies : [threads,
1966 libxz,
1967 liblz4],
1968 install_rpath : rootlibexecdir,
1969 install : true,
1970 install_dir : rootbindir)
1971 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001972endif
1973
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001974if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001975 executable('systemd-importd',
1976 systemd_importd_sources,
1977 include_directories : includes,
1978 link_with : [libshared],
1979 dependencies : [threads],
1980 install_rpath : rootlibexecdir,
1981 install : true,
1982 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001983
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001984 systemd_pull = executable('systemd-pull',
1985 systemd_pull_sources,
1986 include_directories : includes,
1987 link_with : [libshared],
1988 dependencies : [libcurl,
1989 libz,
1990 libbzip2,
1991 libxz,
1992 libgcrypt],
1993 install_rpath : rootlibexecdir,
1994 install : true,
1995 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001996
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001997 systemd_import = executable('systemd-import',
1998 systemd_import_sources,
1999 include_directories : includes,
2000 link_with : [libshared],
2001 dependencies : [libcurl,
2002 libz,
2003 libbzip2,
2004 libxz],
2005 install_rpath : rootlibexecdir,
2006 install : true,
2007 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002008
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002009 systemd_export = executable('systemd-export',
2010 systemd_export_sources,
2011 include_directories : includes,
2012 link_with : [libshared],
2013 dependencies : [libcurl,
2014 libz,
2015 libbzip2,
2016 libxz],
2017 install_rpath : rootlibexecdir,
2018 install : true,
2019 install_dir : rootlibexecdir)
2020 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002021endif
2022
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002023if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002024 exe = executable('systemd-journal-upload',
2025 systemd_journal_upload_sources,
2026 include_directories : includes,
2027 link_with : [libshared],
2028 dependencies : [threads,
2029 libcurl,
2030 libgnutls,
2031 libxz,
2032 liblz4],
2033 install_rpath : rootlibexecdir,
2034 install : true,
2035 install_dir : rootlibexecdir)
2036 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002037endif
2038
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002039if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002040 s_j_remote = executable('systemd-journal-remote',
2041 systemd_journal_remote_sources,
2042 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002043 link_with : [libshared,
2044 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002045 dependencies : [threads,
2046 libmicrohttpd,
2047 libgnutls,
2048 libxz,
2049 liblz4],
2050 install_rpath : rootlibexecdir,
2051 install : true,
2052 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002053
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002054 s_j_gatewayd = executable('systemd-journal-gatewayd',
2055 systemd_journal_gatewayd_sources,
2056 include_directories : includes,
2057 link_with : [libshared],
2058 dependencies : [threads,
2059 libmicrohttpd,
2060 libgnutls,
2061 libxz,
2062 liblz4],
2063 install_rpath : rootlibexecdir,
2064 install : true,
2065 install_dir : rootlibexecdir)
2066 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002067endif
2068
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002069if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002070 executable('systemd-coredump',
2071 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002072 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002073 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002074 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002075 libacl,
2076 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002077 libxz,
2078 liblz4],
2079 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002080 install : true,
2081 install_dir : rootlibexecdir)
2082
2083 exe = executable('coredumpctl',
2084 coredumpctl_sources,
2085 include_directories : includes,
2086 link_with : [libshared],
2087 dependencies : [threads,
2088 libxz,
2089 liblz4],
2090 install_rpath : rootlibexecdir,
2091 install : true)
2092 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002093endif
2094
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002095if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002096 exe = executable('systemd-binfmt',
2097 'src/binfmt/binfmt.c',
2098 include_directories : includes,
2099 link_with : [libshared],
2100 install_rpath : rootlibexecdir,
2101 install : true,
2102 install_dir : rootlibexecdir)
2103 public_programs += [exe]
2104
2105 meson.add_install_script('sh', '-c',
2106 mkdir_p.format(binfmtdir))
2107 meson.add_install_script('sh', '-c',
2108 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2109endif
2110
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002111if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002112 executable('systemd-vconsole-setup',
2113 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002114 include_directories : includes,
2115 link_with : [libshared],
2116 install_rpath : rootlibexecdir,
2117 install : true,
2118 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002119endif
2120
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002121if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002122 executable('systemd-random-seed',
2123 'src/random-seed/random-seed.c',
2124 include_directories : includes,
2125 link_with : [libshared],
2126 install_rpath : rootlibexecdir,
2127 install : true,
2128 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002129endif
2130
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002131if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002132 executable('systemd-firstboot',
2133 'src/firstboot/firstboot.c',
2134 include_directories : includes,
2135 link_with : [libshared],
2136 dependencies : [libcrypt],
2137 install_rpath : rootlibexecdir,
2138 install : true,
2139 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002140endif
2141
2142executable('systemd-remount-fs',
2143 'src/remount-fs/remount-fs.c',
2144 'src/core/mount-setup.c',
2145 'src/core/mount-setup.h',
2146 include_directories : includes,
2147 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002148 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002149 install : true,
2150 install_dir : rootlibexecdir)
2151
2152executable('systemd-machine-id-setup',
2153 'src/machine-id-setup/machine-id-setup-main.c',
2154 'src/core/machine-id-setup.c',
2155 'src/core/machine-id-setup.h',
2156 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002157 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002158 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002159 install : true,
2160 install_dir : rootbindir)
2161
2162executable('systemd-fsck',
2163 'src/fsck/fsck.c',
2164 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002165 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002166 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002167 install : true,
2168 install_dir : rootlibexecdir)
2169
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002170executable('systemd-growfs',
2171 'src/partition/growfs.c',
2172 include_directories : includes,
2173 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002174 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002175 install_rpath : rootlibexecdir,
2176 install : true,
2177 install_dir : rootlibexecdir)
2178
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002179executable('systemd-makefs',
2180 'src/partition/makefs.c',
2181 include_directories : includes,
2182 link_with : [libshared],
2183 install_rpath : rootlibexecdir,
2184 install : true,
2185 install_dir : rootlibexecdir)
2186
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002187executable('systemd-sleep',
2188 'src/sleep/sleep.c',
2189 include_directories : includes,
2190 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002191 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002192 install : true,
2193 install_dir : rootlibexecdir)
2194
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002195exe = executable('systemd-sysctl',
2196 'src/sysctl/sysctl.c',
2197 include_directories : includes,
2198 link_with : [libshared],
2199 install_rpath : rootlibexecdir,
2200 install : true,
2201 install_dir : rootlibexecdir)
2202public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002203
2204executable('systemd-ac-power',
2205 'src/ac-power/ac-power.c',
2206 include_directories : includes,
2207 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002208 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002209 install : true,
2210 install_dir : rootlibexecdir)
2211
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002212exe = executable('systemd-detect-virt',
2213 'src/detect-virt/detect-virt.c',
2214 include_directories : includes,
2215 link_with : [libshared],
2216 install_rpath : rootlibexecdir,
2217 install : true)
2218public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002219
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002220exe = executable('systemd-delta',
2221 'src/delta/delta.c',
2222 include_directories : includes,
2223 link_with : [libshared],
2224 install_rpath : rootlibexecdir,
2225 install : true)
2226public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002227
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002228exe = executable('systemd-escape',
2229 'src/escape/escape.c',
2230 include_directories : includes,
2231 link_with : [libshared],
2232 install_rpath : rootlibexecdir,
2233 install : true,
2234 install_dir : rootbindir)
2235public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002236
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002237exe = executable('systemd-notify',
2238 'src/notify/notify.c',
2239 include_directories : includes,
2240 link_with : [libshared],
2241 install_rpath : rootlibexecdir,
2242 install : true,
2243 install_dir : rootbindir)
2244public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002245
2246executable('systemd-volatile-root',
2247 'src/volatile-root/volatile-root.c',
2248 include_directories : includes,
2249 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002250 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002251 install : true,
2252 install_dir : rootlibexecdir)
2253
2254executable('systemd-cgroups-agent',
2255 'src/cgroups-agent/cgroups-agent.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-path',
2263 'src/path/path.c',
2264 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002265 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002266 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-ask-password',
2271 'src/ask-password/ask-password.c',
2272 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002273 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002274 install_rpath : rootlibexecdir,
2275 install : true,
2276 install_dir : rootbindir)
2277public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002278
2279executable('systemd-reply-password',
2280 'src/reply-password/reply-password.c',
2281 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002282 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002283 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002284 install : true,
2285 install_dir : rootlibexecdir)
2286
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002287exe = executable('systemd-tty-ask-password-agent',
2288 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2289 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002290 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002291 install_rpath : rootlibexecdir,
2292 install : true,
2293 install_dir : rootbindir)
2294public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002295
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002296exe = executable('systemd-cgls',
2297 'src/cgls/cgls.c',
2298 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002299 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002300 install_rpath : rootlibexecdir,
2301 install : true)
2302public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002303
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002304exe = executable('systemd-cgtop',
2305 'src/cgtop/cgtop.c',
2306 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002307 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002308 install_rpath : rootlibexecdir,
2309 install : true)
2310public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002311
2312executable('systemd-initctl',
2313 'src/initctl/initctl.c',
2314 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002315 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002316 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002317 install : true,
2318 install_dir : rootlibexecdir)
2319
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002320exe = executable('systemd-mount',
2321 'src/mount/mount-tool.c',
2322 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002323 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002324 install_rpath : rootlibexecdir,
2325 install : true)
2326public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002327
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002328meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002329 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002330
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002331exe = executable('systemd-run',
2332 'src/run/run.c',
2333 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002334 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002335 install_rpath : rootlibexecdir,
2336 install : true)
2337public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002338
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002339exe = executable('systemd-stdio-bridge',
2340 'src/stdio-bridge/stdio-bridge.c',
2341 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002342 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002343 install_rpath : rootlibexecdir,
2344 install : true)
2345public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002346
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002347exe = executable('busctl',
2348 'src/busctl/busctl.c',
2349 'src/busctl/busctl-introspect.c',
2350 'src/busctl/busctl-introspect.h',
2351 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002352 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002353 install_rpath : rootlibexecdir,
2354 install : true)
2355public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002356
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002357if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002358 exe = executable('systemd-sysusers',
2359 'src/sysusers/sysusers.c',
2360 include_directories : includes,
2361 link_with : [libshared],
2362 install_rpath : rootlibexecdir,
2363 install : true,
2364 install_dir : rootbindir)
2365 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002366endif
2367
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002368if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002369 exe = executable('systemd-tmpfiles',
2370 'src/tmpfiles/tmpfiles.c',
2371 include_directories : includes,
2372 link_with : [libshared],
2373 dependencies : [libacl],
2374 install_rpath : rootlibexecdir,
2375 install : true,
2376 install_dir : rootbindir)
2377 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002378
2379 test('test-systemd-tmpfiles',
2380 test_systemd_tmpfiles_py,
2381 args : exe.full_path())
2382 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002383endif
2384
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002385if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002386 exe = executable('systemd-hwdb',
2387 'src/hwdb/hwdb.c',
2388 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2389 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002390 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002391 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002392 install : true,
2393 install_dir : rootbindir)
2394 public_programs += [exe]
2395endif
2396
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002397if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002398 executable('systemd-quotacheck',
2399 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002400 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002401 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002402 install_rpath : rootlibexecdir,
2403 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002404 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002405endif
2406
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002407exe = executable('systemd-socket-proxyd',
2408 'src/socket-proxy/socket-proxyd.c',
2409 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002410 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002411 dependencies : [threads],
2412 install_rpath : rootlibexecdir,
2413 install : true,
2414 install_dir : rootlibexecdir)
2415public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002416
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002417exe = executable('systemd-udevd',
2418 systemd_udevd_sources,
2419 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002420 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002421 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002422 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002423 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002424 dependencies : [threads,
2425 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002426 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002427 libacl,
2428 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002429 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002430 install : true,
2431 install_dir : rootlibexecdir)
2432public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002433
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002434exe = executable('udevadm',
2435 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002436 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002437 include_directories : includes,
2438 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002439 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002440 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002441 dependencies : [threads,
2442 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002443 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002444 libacl,
2445 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002446 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002447 install : true,
2448 install_dir : rootbindir)
2449public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002450
2451executable('systemd-shutdown',
2452 systemd_shutdown_sources,
2453 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002454 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002455 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002456 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002457 install : true,
2458 install_dir : rootlibexecdir)
2459
2460executable('systemd-update-done',
2461 'src/update-done/update-done.c',
2462 include_directories : includes,
2463 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002464 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002465 install : true,
2466 install_dir : rootlibexecdir)
2467
2468executable('systemd-update-utmp',
2469 'src/update-utmp/update-utmp.c',
2470 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002471 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002472 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002473 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002474 install : true,
2475 install_dir : rootlibexecdir)
2476
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002477if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002478 executable('systemd-modules-load',
2479 'src/modules-load/modules-load.c',
2480 include_directories : includes,
2481 link_with : [libshared],
2482 dependencies : [libkmod],
2483 install_rpath : rootlibexecdir,
2484 install : true,
2485 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002486
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002487 meson.add_install_script('sh', '-c',
2488 mkdir_p.format(modulesloaddir))
2489 meson.add_install_script('sh', '-c',
2490 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002491endif
2492
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002493exe = executable('systemd-nspawn',
2494 systemd_nspawn_sources,
2495 'src/core/mount-setup.c', # FIXME: use a variable?
2496 'src/core/mount-setup.h',
2497 'src/core/loopback-setup.c',
2498 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002499 include_directories : includes,
2500 link_with : [libnspawn_core,
2501 libshared],
2502 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002503 install_rpath : rootlibexecdir,
2504 install : true)
2505public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002506
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002507if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002508 executable('systemd-networkd',
2509 systemd_networkd_sources,
2510 include_directories : includes,
2511 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002512 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002513 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002514 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002515 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002516 install_rpath : rootlibexecdir,
2517 install : true,
2518 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002519
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002520 executable('systemd-networkd-wait-online',
2521 systemd_networkd_wait_online_sources,
2522 include_directories : includes,
2523 link_with : [libnetworkd_core,
2524 libshared],
2525 install_rpath : rootlibexecdir,
2526 install : true,
2527 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002528
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002529 exe = executable('networkctl',
2530 networkctl_sources,
2531 include_directories : includes,
2532 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002533 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002534 install_rpath : rootlibexecdir,
2535 install : true,
2536 install_dir : rootbindir)
2537 public_programs += [exe]
2538endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002539
2540executable('systemd-sulogin-shell',
2541 ['src/sulogin-shell/sulogin-shell.c'],
2542 include_directories : includes,
2543 link_with : [libshared],
2544 install_rpath : rootlibexecdir,
2545 install : true,
2546 install_dir : rootlibexecdir)
2547
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002548############################################################
2549
2550foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002551 sources = tuple[0]
2552 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2553 dependencies = tuple[2]
2554 condition = tuple.length() >= 4 ? tuple[3] : ''
2555 type = tuple.length() >= 5 ? tuple[4] : ''
2556 defs = tuple.length() >= 6 ? tuple[5] : []
2557 incs = tuple.length() >= 7 ? tuple[6] : includes
2558 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002559
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002560 name = sources[0].split('/')[-1].split('.')[0]
2561 if type.startswith('timeout=')
2562 timeout = type.split('=')[1].to_int()
2563 type = ''
2564 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002565 if want_tests == 'false'
2566 message('Not compiling @0@ because tests is set to false'.format(name))
2567 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002568 exe = executable(
2569 name,
2570 sources,
2571 include_directories : incs,
2572 link_with : link_with,
2573 dependencies : dependencies,
2574 c_args : defs,
2575 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002576 install : install_tests,
2577 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002578
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002579 if type == 'manual'
2580 message('@0@ is a manual test'.format(name))
2581 elif type == 'unsafe' and want_tests != 'unsafe'
2582 message('@0@ is an unsafe test'.format(name))
2583 else
2584 test(name, exe,
2585 env : test_env,
2586 timeout : timeout)
2587 endif
2588 else
2589 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2590 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002591endforeach
2592
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002593exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002594 'test-libsystemd-sym',
2595 test_libsystemd_sym_c,
2596 include_directories : includes,
2597 link_with : [libsystemd],
2598 install : install_tests,
2599 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002600test('test-libsystemd-sym', exe)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002601
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002602exe = executable(
2603 'test-libsystemd-static-sym',
2604 test_libsystemd_sym_c,
2605 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002606 link_with : [install_libsystemd_static],
2607 dependencies : [threads], # threads is already included in dependencies on the library,
2608 # but does not seem to get propagated. Add here as a work-around.
Davide Cavalca20f3d322018-04-24 13:34:48 -07002609 build_by_default : static_libsystemd_pic,
2610 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002611 install_dir : testsdir)
Davide Cavalca20f3d322018-04-24 13:34:48 -07002612if static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002613 test('test-libsystemd-static-sym', exe)
2614endif
2615
2616exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002617 'test-libudev-sym',
2618 test_libudev_sym_c,
2619 include_directories : includes,
2620 c_args : ['-Wno-deprecated-declarations'],
2621 link_with : [libudev],
2622 install : install_tests,
2623 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002624test('test-libudev-sym', exe)
2625
2626exe = executable(
2627 'test-libudev-static-sym',
2628 test_libudev_sym_c,
2629 include_directories : includes,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002630 c_args : ['-Wno-deprecated-declarations'],
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002631 link_with : [install_libudev_static],
Davide Cavalca20f3d322018-04-24 13:34:48 -07002632 build_by_default : static_libudev_pic,
2633 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002634 install_dir : testsdir)
Davide Cavalca20f3d322018-04-24 13:34:48 -07002635if static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002636 test('test-libudev-static-sym', exe)
2637endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002638
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002639############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002640
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002641fuzzer_exes = []
2642
2643foreach tuple : fuzzers
2644 sources = tuple[0]
2645 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2646 dependencies = tuple[2]
2647 defs = tuple.length() >= 4 ? tuple[3] : []
2648 incs = tuple.length() >= 5 ? tuple[4] : includes
2649
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002650 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002651 dependencies += fuzzing_engine
2652 else
2653 sources += 'src/fuzz/fuzz-main.c'
2654 endif
2655
2656 name = sources[0].split('/')[-1].split('.')[0]
2657
2658 fuzzer_exes += executable(
2659 name,
2660 sources,
2661 include_directories : [incs, include_directories('src/fuzz')],
2662 link_with : link_with,
2663 dependencies : dependencies,
2664 c_args : defs,
2665 install : false)
2666endforeach
2667
2668run_target('fuzzers',
2669 depends : fuzzer_exes,
2670 command : ['true'])
2671
2672############################################################
2673
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002674make_directive_index_py = find_program('tools/make-directive-index.py')
2675make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002676xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002677hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002678
2679subdir('units')
2680subdir('sysctl.d')
2681subdir('sysusers.d')
2682subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002683subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002684subdir('hwdb')
2685subdir('network')
2686subdir('man')
2687subdir('shell-completion/bash')
2688subdir('shell-completion/zsh')
Lennart Poettering2d684e62018-03-28 16:58:37 +02002689subdir('doc/sysvinit')
2690subdir('doc/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002691
2692# FIXME: figure out if the warning is true:
2693# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2694install_subdir('factory/etc',
2695 install_dir : factorydir)
2696
2697
2698install_data('xorg/50-systemd-user.sh',
2699 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002700install_data('modprobe.d/systemd.conf',
2701 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002702install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002703 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002704 'NEWS',
2705 'README',
2706 'doc/CODING_STYLE',
2707 'doc/DISTRO_PORTING',
2708 'doc/ENVIRONMENT.md',
2709 'doc/HACKING',
2710 'doc/TRANSIENT-SETTINGS.md',
2711 'doc/TRANSLATORS',
2712 'doc/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002713 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2714 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002715
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002716meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2717meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2718
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002719############################################################
2720
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002721meson_check_help = find_program('tools/meson-check-help.sh')
2722
2723foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002724 name = exec.full_path().split('/')[-1]
2725 test('check-help-' + name,
2726 meson_check_help,
2727 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002728endforeach
2729
2730############################################################
2731
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002732# Enable tests for all supported sanitizers
2733foreach tuple : sanitizers
2734 sanitizer = tuple[0]
2735 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002736
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002737 have = run_command(check_compilation_sh,
2738 cc.cmd_array(), '-x', 'c',
2739 '-fsanitize=@0@'.format(sanitizer),
2740 '-include', link_test_c).returncode() == 0
2741 message('@0@ sanitizer supported: @1@'.format(sanitizer, have ? 'yes' : 'no'))
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002742
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002743 if have
2744 prev = ''
2745 foreach p : fuzz_regression_tests
2746 b = p.split('/')[-2]
2747 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002748
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002749 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002750
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002751 if name != prev
2752 if want_tests == 'false'
2753 message('Not compiling @0@ because tests is set to false'.format(name))
2754 elif slow_tests
2755 exe = custom_target(
2756 name,
2757 output : name,
2758 depends : build,
2759 command : [env, 'ln', '-fs',
2760 join_paths(build.full_path(), b),
2761 '@OUTPUT@'],
2762 build_by_default : true)
2763 else
2764 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2765 endif
2766 endif
2767 prev = name
2768
2769 if want_tests != 'false' and slow_tests
2770 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2771 env,
2772 args : [exe.full_path(),
2773 join_paths(meson.source_root(),
2774 'test/fuzz-regressions',
2775 p)])
2776 endif
2777 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002778 endif
2779endforeach
2780
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002781
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002782############################################################
2783
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002784if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002785 all_files = run_command(
2786 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002787 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002788 'ls-files',
2789 ':/*.[ch]'])
2790 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002791
userwithuide85a6902017-08-09 13:41:44 +00002792 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002793 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002794 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002795 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00002796 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002797 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002798 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002799endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002800
2801if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002802 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002803 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002804 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002805 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002806endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002807
2808if git.found()
2809 git_head = run_command(
2810 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002811 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002812 'rev-parse', 'HEAD']).stdout().strip()
2813 git_head_short = run_command(
2814 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002815 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002816 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2817
2818 run_target(
2819 'git-snapshot',
2820 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002821 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002822 git_head_short),
2823 '--prefix', 'systemd-@0@/'.format(git_head),
2824 'HEAD'])
2825endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002826
2827############################################################
2828
Lennart Poettering51b13862017-12-20 12:51:14 +01002829meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2830run_target(
2831 'check-api-docs',
2832 depends : [man, libsystemd, libudev],
2833 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2834
2835############################################################
2836
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002837status = [
2838 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2839
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002840 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002841 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002842 'prefix directory: @0@'.format(prefixdir),
2843 'rootprefix directory: @0@'.format(rootprefixdir),
2844 'sysconf directory: @0@'.format(sysconfdir),
2845 'include directory: @0@'.format(includedir),
2846 'lib directory: @0@'.format(libdir),
2847 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002848 'SysV init scripts: @0@'.format(sysvinit_path),
2849 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002850 'PAM modules directory: @0@'.format(pamlibdir),
2851 'PAM configuration directory: @0@'.format(pamconfdir),
2852 'RPM macros directory: @0@'.format(rpmmacrosdir),
2853 'modprobe.d directory: @0@'.format(modprobedir),
2854 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2855 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2856 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2857 'bash completions directory: @0@'.format(bashcompletiondir),
2858 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002859 'extra start script: @0@'.format(get_option('rc-local')),
2860 'extra stop script: @0@'.format(get_option('halt-local')),
2861 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2862 get_option('debug-tty')),
2863 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002864 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002865 'maximum system UID: @0@'.format(system_uid_max),
2866 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002867 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2868 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2869 'minimum container UID base: @0@'.format(container_uid_base_min),
2870 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002871 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002872 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002873 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002874 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002875 'nobody user name: @0@'.format(nobody_user),
2876 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002877 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002878 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002879
2880 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02002881 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002882 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2883 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2884
2885alt_dns_servers = '\n '.join(dns_servers.split(' '))
2886alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2887status += [
2888 'default DNS servers: @0@'.format(alt_dns_servers),
2889 'default NTP servers: @0@'.format(alt_ntp_servers)]
2890
2891alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2892 '@@0@'.format(time_epoch)).stdout().strip()
2893status += [
2894 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2895
2896# TODO:
2897# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2898# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2899# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2900
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002901if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002902 status += [
2903 'efi arch: @0@'.format(efi_arch)]
2904
2905 if have_gnu_efi
2906 status += [
2907 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2908 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002909 'EFI lib directory: @0@'.format(efi_libdir),
2910 'EFI lds directory: @0@'.format(efi_ldsdir),
2911 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002912 endif
2913endif
2914
2915found = []
2916missing = []
2917
2918foreach tuple : [
2919 ['libcryptsetup'],
2920 ['PAM'],
2921 ['AUDIT'],
2922 ['IMA'],
2923 ['AppArmor'],
2924 ['SELinux'],
2925 ['SECCOMP'],
2926 ['SMACK'],
2927 ['zlib'],
2928 ['xz'],
2929 ['lz4'],
2930 ['bzip2'],
2931 ['ACL'],
2932 ['gcrypt'],
2933 ['qrencode'],
2934 ['microhttpd'],
2935 ['gnutls'],
2936 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002937 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002938 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002939 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002940 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002941 ['libiptc'],
2942 ['elfutils'],
2943 ['binfmt'],
2944 ['vconsole'],
2945 ['quotacheck'],
2946 ['tmpfiles'],
2947 ['environment.d'],
2948 ['sysusers'],
2949 ['firstboot'],
2950 ['randomseed'],
2951 ['backlight'],
2952 ['rfkill'],
2953 ['logind'],
2954 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02002955 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002956 ['importd'],
2957 ['hostnamed'],
2958 ['timedated'],
2959 ['timesyncd'],
2960 ['localed'],
2961 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002962 ['resolve'],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09002963 ['DNS-over-TLS'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002964 ['coredump'],
2965 ['polkit'],
2966 ['legacy pkla', install_polkit_pkla],
2967 ['efi'],
2968 ['gnu-efi', have_gnu_efi],
2969 ['kmod'],
2970 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01002971 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002972 ['blkid'],
2973 ['dbus'],
2974 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002975 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002976 ['hwdb'],
2977 ['tpm'],
2978 ['man pages', want_man],
2979 ['html pages', want_html],
2980 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002981 ['SysV compat'],
2982 ['utmp'],
2983 ['ldconfig'],
2984 ['hibernate'],
2985 ['adm group', get_option('adm-group')],
2986 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002987 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002988 ['debug hashmap'],
2989 ['debug mmap cache'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02002990 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002991]
2992
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01002993 if tuple.length() >= 2
2994 cond = tuple[1]
2995 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002996 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2997 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002998 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002999 endif
3000 if cond
3001 found += [tuple[0]]
3002 else
3003 missing += [tuple[0]]
3004 endif
3005endforeach
3006
3007status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003008 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003009 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003010 '',
3011 'disabled features: @0@'.format(', '.join(missing)),
3012 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003013message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003014
3015if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003016 warning('\n' +
3017 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3018 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3019 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003020endif