blob: ee8ab1ae295d563b4b65824e2a1b9bd36dede948 [file] [log] [blame]
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01001# SPDX-License-Identifier: LGPL-2.1+
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01002
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003project('systemd', 'c',
Lennart Poetteringde7436b2018-06-22 13:03:47 +02004 version : '239',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04005 license : 'LGPLv2+',
6 default_options: [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04007 'c_std=gnu99',
8 'prefix=/usr',
9 'sysconfdir=/etc',
10 'localstatedir=/var',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040011 ],
Yu Watanabe7a6397d2018-05-15 20:18:24 +090012 meson_version : '>= 0.46',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040013 )
14
Lennart Poetteringde7436b2018-06-22 13:03:47 +020015libsystemd_version = '0.23.0'
16libudev_version = '1.6.11'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020017
Yu Watanabe348b4432018-05-07 18:17:35 +090018# We need the same data in two different formats, ugh!
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040019# Also, for hysterical reasons, we use different variable
20# names, sometimes. Not all variables are included in every
21# set. Ugh, ugh, ugh!
22conf = configuration_data()
23conf.set_quoted('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version())
24conf.set_quoted('PACKAGE_VERSION', meson.project_version())
25
26substs = configuration_data()
27substs.set('PACKAGE_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
28substs.set('PACKAGE_VERSION', meson.project_version())
29
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020030want_ossfuzz = get_option('oss-fuzz')
31want_libfuzzer = get_option('llvm-fuzz')
32if want_ossfuzz and want_libfuzzer
33 error('only one of oss-fuzz and llvm-fuzz can be specified')
34endif
35fuzzer_build = want_ossfuzz or want_libfuzzer
36
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040037#####################################################################
38
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040039# Try to install the git pre-commit hook
40git_hook = run_command(join_paths(meson.source_root(), 'tools/add-git-hook.sh'))
41if git_hook.returncode() == 0
42 message(git_hook.stdout().strip())
43endif
44
45#####################################################################
46
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010047if get_option('split-usr') == 'auto'
48 split_usr = run_command('test', '-L', '/bin').returncode() != 0
49else
50 split_usr = get_option('split-usr') == 'true'
51endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010052conf.set10('HAVE_SPLIT_USR', split_usr,
53 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010054
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010055if get_option('split-bin') == 'auto'
56 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
57else
58 split_bin = get_option('split-bin') == 'true'
59endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010060conf.set10('HAVE_SPLIT_BIN', split_bin,
61 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010062
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010063rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010064# Unusual rootprefixdir values are used by some distros
65# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010066rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010067if rootprefixdir == ''
68 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010069endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040070
71sysvinit_path = get_option('sysvinit-path')
72sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090073conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020074 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040075
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020076conf.set10('BUMP_PROC_SYS_FS_FILE_MAX', get_option('bump-proc-sys-fs-file-max'))
77conf.set10('BUMP_PROC_SYS_FS_NR_OPEN', get_option('bump-proc-sys-fs-nr-open'))
78
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040079# join_paths ignore the preceding arguments if an absolute component is
80# encountered, so this should canonicalize various paths when they are
81# absolute or relative.
82prefixdir = get_option('prefix')
83if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040084 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040085endif
86bindir = join_paths(prefixdir, get_option('bindir'))
87libdir = join_paths(prefixdir, get_option('libdir'))
88sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
89includedir = join_paths(prefixdir, get_option('includedir'))
90datadir = join_paths(prefixdir, get_option('datadir'))
91localstatedir = join_paths('/', get_option('localstatedir'))
92
93rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010094rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040095rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
96
97rootlibdir = get_option('rootlibdir')
98if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040099 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400100endif
101
102# Dirs of external packages
Benedikt Morbacha95696e2018-08-10 04:59:54 +0200103pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
104pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400105polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
106polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
107polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
108varlogdir = join_paths(localstatedir, 'log')
109xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900110rpmmacrosdir = get_option('rpmmacrosdir')
111if rpmmacrosdir != 'no'
112 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
113endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200114modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400115
116# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400117pkgdatadir = join_paths(datadir, 'systemd')
118environmentdir = join_paths(prefixdir, 'lib/environment.d')
119pkgsysconfdir = join_paths(sysconfdir, 'systemd')
120userunitdir = join_paths(prefixdir, 'lib/systemd/user')
121userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
122tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
123sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
124sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
125binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
126modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
127networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
128pkgincludedir = join_paths(includedir, 'systemd')
129systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
130usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
131systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
132userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
133systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
134systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
135systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
136systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
137udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
138udevhomedir = udevlibexecdir
139udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
140udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
141catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
142kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
143factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400144bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
145testsdir = join_paths(prefixdir, 'lib/systemd/tests')
146systemdstatedir = join_paths(localstatedir, 'lib/systemd')
147catalogstatedir = join_paths(systemdstatedir, 'catalog')
148randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200149profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400150
tblume75aaade2018-02-01 22:46:15 +0100151docdir = get_option('docdir')
152if docdir == ''
153 docdir = join_paths(datadir, 'doc/systemd')
154endif
155
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400156dbuspolicydir = get_option('dbuspolicydir')
157if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400158 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400159endif
160
161dbussessionservicedir = get_option('dbussessionservicedir')
162if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400163 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400164endif
165
166dbussystemservicedir = get_option('dbussystemservicedir')
167if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400168 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400169endif
170
171pamlibdir = get_option('pamlibdir')
172if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400173 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400174endif
175
176pamconfdir = get_option('pamconfdir')
177if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400178 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400179endif
180
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100181memory_accounting_default = get_option('memory-accounting-default')
182
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400183conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400184conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400185conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
186conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
187conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400188conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
189conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100190
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100191conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100192
Michael Bieble17e5ba2017-04-13 10:30:56 -0400193conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400194conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
195conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400196conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
197conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
198conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
199conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100200conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100201conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400202conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
203conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
204conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
205conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
206conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100207conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400208conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400209conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
210conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400211conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
212conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
213conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
214conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
215conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
216conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400217conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
218conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Filipe Brandenburgere2d41372018-09-11 23:55:02 -0700219conf.set_quoted('SYSTEMD_TEST_DATA', join_paths(testsdir, 'testdata'))
Filipe Brandenburger49cdae62018-09-12 00:23:40 -0700220conf.set_quoted('SYSTEMD_CATALOG_DIR', catalogdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400221conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400222conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400223conf.set_quoted('LIBDIR', libdir)
224conf.set_quoted('ROOTLIBDIR', rootlibdir)
225conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
226conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400227conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
228conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
229conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
230conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
231conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
232conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100233conf.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'true' : 'false')
Michal Koutný7f672e82018-03-09 18:27:13 +0100234conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400235
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400236substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400237substs.set('exec_prefix', prefixdir)
238substs.set('libdir', libdir)
239substs.set('rootlibdir', rootlibdir)
240substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400241substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400242substs.set('bindir', bindir)
243substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400244substs.set('rootlibexecdir', rootlibexecdir)
245substs.set('systemunitdir', systemunitdir)
246substs.set('userunitdir', userunitdir)
247substs.set('systempresetdir', systempresetdir)
248substs.set('userpresetdir', userpresetdir)
249substs.set('udevhwdbdir', udevhwdbdir)
250substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400251substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200252substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400253substs.set('catalogdir', catalogdir)
254substs.set('tmpfilesdir', tmpfilesdir)
255substs.set('sysusersdir', sysusersdir)
256substs.set('sysctldir', sysctldir)
257substs.set('binfmtdir', binfmtdir)
258substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200259substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400260substs.set('systemgeneratordir', systemgeneratordir)
261substs.set('usergeneratordir', usergeneratordir)
262substs.set('systemenvgeneratordir', systemenvgeneratordir)
263substs.set('userenvgeneratordir', userenvgeneratordir)
264substs.set('systemshutdowndir', systemshutdowndir)
265substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400266substs.set('VARLOGDIR', varlogdir)
267substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400268substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
269substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400270substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
271substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
272substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
273substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100274substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400275
276#####################################################################
277
278cc = meson.get_compiler('c')
279pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400280check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100281meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400282
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200283want_tests = get_option('tests')
284slow_tests = want_tests != 'false' and get_option('slow-tests')
285install_tests = get_option('install-tests')
286
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200287cxx = find_program('c++', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200288if cxx.found()
289 # Used only for tests
290 add_languages('cpp')
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200291 cxx_cmd = ' '.join(meson.get_compiler('cpp').cmd_array())
Zbigniew Jędrzejewski-Szmek1b2acaa2018-10-09 18:48:09 +0200292else
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200293 cxx_cmd = ''
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400294endif
295
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500296if want_libfuzzer
297 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200298elif want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500299 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
300endif
301
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900302possible_cc_flags = [
303 '-Wextra',
304 '-Werror=undef',
305 '-Wlogical-op',
306 '-Wmissing-include-dirs',
307 '-Wold-style-definition',
308 '-Wpointer-arith',
309 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900310 '-Wfloat-equal',
311 '-Wsuggest-attribute=noreturn',
312 '-Werror=missing-prototypes',
313 '-Werror=implicit-function-declaration',
314 '-Werror=missing-declarations',
315 '-Werror=return-type',
316 '-Werror=incompatible-pointer-types',
317 '-Werror=format=2',
318 '-Wstrict-prototypes',
319 '-Wredundant-decls',
320 '-Wmissing-noreturn',
321 '-Wimplicit-fallthrough=5',
322 '-Wshadow',
323 '-Wendif-labels',
324 '-Wstrict-aliasing=2',
325 '-Wwrite-strings',
326 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200327 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200328 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900329 '-Wdate-time',
330 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700331
332 # negative arguments are correctly detected starting with meson 0.46.
333 '-Wno-unused-parameter',
334 '-Wno-missing-field-initializers',
335 '-Wno-unused-result',
336 '-Wno-format-signedness',
337
338 # work-around for gcc 7.1 turning this on on its own.
339 '-Wno-error=nonnull',
340
341 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
342 # optimizations enabled, producing essentially false positives.
343 '-Wno-maybe-uninitialized',
344
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900345 '-ffast-math',
346 '-fno-common',
347 '-fdiagnostics-show-option',
348 '-fno-strict-aliasing',
349 '-fvisibility=hidden',
350 '-fstack-protector',
351 '-fstack-protector-strong',
352 '--param=ssp-buffer-size=4',
353]
354
355# --as-needed and --no-undefined are provided by meson by default,
356# run mesonconf to see what is enabled
357possible_link_flags = [
358 '-Wl,-z,relro',
359 '-Wl,-z,now',
360]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400361
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500362# the oss-fuzz fuzzers are not built with -fPIE, so don't
363# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500364if not fuzzer_build
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900365 possible_cc_flags += '-fPIE'
366 possible_link_flags += '-pie'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500367endif
368
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900369if cc.get_id() == 'clang'
370 possible_cc_flags += [
371 '-Wno-typedef-redefinition',
372 '-Wno-gnu-variable-sized-type-not-at-end',
373 ]
374endif
375
376if get_option('buildtype') != 'debug'
377 possible_cc_flags += [
378 '-ffunction-sections',
379 '-fdata-sections',
380 ]
381
382 possible_link_flags += '-Wl,--gc-sections'
383endif
384
385add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900386add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900387
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800388if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400389 #include <time.h>
390 #include <inttypes.h>
391 typedef uint64_t usec_t;
392 usec_t now(clockid_t clock);
393 int main(void) {
394 struct timespec now;
395 return 0;
396 }
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800397''', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400398 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400399endif
400
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200401cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400402
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400403#####################################################################
404# compilation result tests
405
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400406conf.set('_GNU_SOURCE', true)
407conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400408
409conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
410conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
411conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
412conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
413conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
414conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
415conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
416
417decl_headers = '''
418#include <uchar.h>
419#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000420#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100421#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400422'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400423
424foreach decl : ['char16_t',
425 'char32_t',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400426 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000427 'struct fib_rule_uid_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100428 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400429 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400430
431 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200432 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
433
434 if decl == 'struct statx'
435 if have
436 want_linux_stat_h = false
437 else
438 have = cc.sizeof(decl,
439 prefix : decl_headers + '#include <linux/stat.h>',
440 args : '-D_GNU_SOURCE') > 0
441 want_linux_stat_h = have
442 endif
443 endif
444
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200445 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400446endforeach
447
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200448conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700449
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400450foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
451 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
452 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
453 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530454 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400455 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
456 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
457 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
458 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
459 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530460 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400461 # if_tunnel.h is buggy and cannot be included on its own
462 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
463 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
464 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
465 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
466 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
467 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
468 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530469 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400470 ['NDA_IFINDEX', 'linux/neighbour.h'],
471 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000472 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400473 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530474 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Susant Sahani53cb5012018-06-03 12:37:41 +0530475 ['FOU_ATTR_REMCSUM_NOPARTIAL', 'linux/fou.h'],
476 ['FOU_CMD_GET', 'linux/fou.h'],
477 ['FOU_ENCAP_GUE', 'linux/fou.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400478 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400479 prefix = decl.length() > 2 ? decl[2] : ''
480 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200481 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400482endforeach
483
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400484foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200485 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400486endforeach
487
488foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100489 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100490 ['gettid', '''#include <sys/types.h>
491 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100492 ['pivot_root', '''#include <stdlib.h>
493 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100494 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400495 #include <sys/stat.h>
496 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100497 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100498 ['renameat2', '''#include <stdio.h>
499 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400500 ['kcmp', '''#include <linux/kcmp.h>'''],
501 ['keyctl', '''#include <sys/types.h>
502 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100503 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400504 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200505 ['bpf', '''#include <sys/syscall.h>
506 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100507 ['statx', '''#include <sys/types.h>
508 #include <sys/stat.h>
509 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100510 ['explicit_bzero' , '''#include <string.h>'''],
511 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400512]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400513
Lennart Poettering85db59b2017-12-25 12:01:14 +0100514 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200515 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400516endforeach
517
Lennart Poettering85db59b2017-12-25 12:01:14 +0100518if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200519 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200520 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400521else
522 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200523 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200524 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400525endif
526
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400527#####################################################################
528
529sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400530awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400531m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400532stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400533git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100534env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100535perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400536
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400537meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400538mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400539test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
540splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400541
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400542# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
543# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500544progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400545 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400546 ['kmod', '/usr/bin/kmod' ],
547 ['kexec', '/usr/sbin/kexec' ],
548 ['sulogin', '/usr/sbin/sulogin' ],
549 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
550 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
551 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
552 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
553 ]
554foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400555 path = get_option(prog[0] + '-path')
556 if path != ''
557 message('Using @1@ for @0@'.format(prog[0], path))
558 else
559 exe = find_program(prog[0],
560 '/usr/sbin/' + prog[0],
561 '/sbin/' + prog[0],
562 required: false)
563 path = exe.found() ? exe.path() : prog[1]
564 endif
565 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
566 conf.set_quoted(name, path)
567 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400568endforeach
569
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500570conf.set_quoted('TELINIT', get_option('telinit-path'))
571
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400572if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100573 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400574endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400575
576############################################################
577
578gperf = find_program('gperf')
579
580gperf_test_format = '''
581#include <string.h>
582const char * in_word_set(const char *, @0@);
583@1@
584'''
585gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
586gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
587gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
588if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400589 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400590else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400591 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
592 if cc.compiles(gperf_test)
593 gperf_len_type = 'unsigned'
594 else
595 error('unable to determine gperf len type')
596 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400597endif
598message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400599conf.set('GPERF_LEN_TYPE', gperf_len_type,
600 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400601
602############################################################
603
604if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400605 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400606endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100607foreach header : ['crypt.h',
608 'linux/btrfs.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400609 'linux/memfd.h',
610 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200611 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400612 'valgrind/memcheck.h',
613 'valgrind/valgrind.h',
614 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400615
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200616 conf.set10('HAVE_' + header.underscorify().to_upper(),
617 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400618endforeach
619
620############################################################
621
622conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400623conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
624gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400625
626default_hierarchy = get_option('default-hierarchy')
627conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
628 description : 'default cgroup hierarchy as string')
629if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400630 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400631elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400632 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400633else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400634 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400635endif
636
637time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900638if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400639 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900640 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400641endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400642conf.set('TIME_EPOCH', time_epoch)
643
644system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900645if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400646 system_uid_max = run_command(
647 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800648 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
649 '/etc/login.defs').stdout().strip()
650 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900651 system_uid_max = 999
652 else
653 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800654 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400655endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400656conf.set('SYSTEM_UID_MAX', system_uid_max)
657substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400658
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400659system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900660if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400661 system_gid_max = run_command(
662 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800663 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
664 '/etc/login.defs').stdout().strip()
665 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900666 system_gid_max = 999
667 else
668 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800669 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400670endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400671conf.set('SYSTEM_GID_MAX', system_gid_max)
672substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400673
Yu Watanabeac093402018-05-10 16:04:16 +0900674dynamic_uid_min = get_option('dynamic-uid-min')
675dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100676conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
677conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
678substs.set('dynamicuidmin', dynamic_uid_min)
679substs.set('dynamicuidmax', dynamic_uid_max)
680
Yu Watanabeac093402018-05-10 16:04:16 +0900681container_uid_base_min = get_option('container-uid-base-min')
682container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100683conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
684conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
685substs.set('containeruidbasemin', container_uid_base_min)
686substs.set('containeruidbasemax', container_uid_base_max)
687
Lennart Poetteringafde4572017-12-05 11:00:24 +0100688nobody_user = get_option('nobody-user')
689nobody_group = get_option('nobody-group')
690
Chen Qi2484bff2018-07-23 14:53:09 +0800691if not meson.is_cross_build()
692 getent_result = run_command('getent', 'passwd', '65534')
693 if getent_result.returncode() == 0
694 name = getent_result.stdout().split(':')[0]
695 if name != nobody_user
696 warning('\n' +
697 '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) +
698 'Your build will result in an user table setup that is incompatible with the local system.')
699 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100700 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800701 id_result = run_command('id', '-u', nobody_user)
702 if id_result.returncode() == 0
703 id = id_result.stdout().to_int()
704 if id != 65534
705 warning('\n' +
706 '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) +
707 'Your build will result in an user table setup that is incompatible with the local system.')
708 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100709 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100710
Chen Qi2484bff2018-07-23 14:53:09 +0800711 getent_result = run_command('getent', 'group', '65534')
712 if getent_result.returncode() == 0
713 name = getent_result.stdout().split(':')[0]
714 if name != nobody_group
715 warning('\n' +
716 '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) +
717 'Your build will result in an group table setup that is incompatible with the local system.')
718 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100719 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800720 id_result = run_command('id', '-g', nobody_group)
721 if id_result.returncode() == 0
722 id = id_result.stdout().to_int()
723 if id != 65534
724 warning('\n' +
725 '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) +
726 'Your build will result in an group table setup that is incompatible with the local system.')
727 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100728 endif
729endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900730if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900731 warning('\n' +
732 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
733 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900734endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100735
736conf.set_quoted('NOBODY_USER_NAME', nobody_user)
737conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900738substs.set('NOBODY_USER_NAME', nobody_user)
739substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100740
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400741tty_gid = get_option('tty-gid')
742conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400743substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400744
Ikey Doherty84786b82017-12-03 12:28:23 +0000745# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900746users_gid = get_option('users-gid')
747substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000748
Yu Watanabe348b4432018-05-07 18:17:35 +0900749conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
750conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400751
Michael Bieblace5e312018-07-13 23:36:13 +0200752dev_kvm_mode = get_option('dev-kvm-mode')
753substs.set('DEV_KVM_MODE', dev_kvm_mode)
754conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Tom Stellard4e15a732017-10-31 08:46:24 -0700755substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400756
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400757kill_user_processes = get_option('default-kill-user-processes')
758conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100759conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400760substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400761
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400762dns_servers = get_option('dns-servers')
763conf.set_quoted('DNS_SERVERS', dns_servers)
764substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400765
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400766ntp_servers = get_option('ntp-servers')
767conf.set_quoted('NTP_SERVERS', ntp_servers)
768substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400769
770conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
771
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400772substs.set('SUSHELL', get_option('debug-shell'))
773substs.set('DEBUGTTY', get_option('debug-tty'))
774
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200775enable_debug_hashmap = false
776enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200777foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900778 if name == 'hashmap'
779 enable_debug_hashmap = true
780 elif name == 'mmap-cache'
781 enable_debug_mmap_cache = true
782 else
783 message('unknown debug option "@0@", ignoring'.format(name))
784 endif
785endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200786conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
787conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400788
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200789conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200790conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200791
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400792#####################################################################
793
794threads = dependency('threads')
795librt = cc.find_library('rt')
796libm = cc.find_library('m')
797libdl = cc.find_library('dl')
798libcrypt = cc.find_library('crypt')
799
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400800libcap = dependency('libcap', required : false)
801if not libcap.found()
802 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
803 libcap = cc.find_library('cap')
804endif
805
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400806libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100807 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400808
809want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500810if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400811 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400812 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400813 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200814 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400815else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200816 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400817 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400818endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200819conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400820
821want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500822if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400823 libselinux = dependency('libselinux',
824 version : '>= 2.1.9',
825 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200826 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400827else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200828 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400829 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400830endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200831conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400832
833want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500834if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400835 libapparmor = dependency('libapparmor',
836 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200837 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400838else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200839 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400840 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400841endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200842conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400843
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400844smack_run_label = get_option('smack-run-label')
845if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400846 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400847endif
848
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400849want_polkit = get_option('polkit')
850install_polkit = false
851install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500852if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400853 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400854
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400855 libpolkit = dependency('polkit-gobject-1',
856 required : false)
857 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
858 message('Old polkit detected, will install pkla files')
859 install_polkit_pkla = true
860 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400861endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200862conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400863
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400864want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500865if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400866 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200867 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400868else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200869 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400870 libacl = []
871endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200872conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400873
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400874want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500875if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400876 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200877 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400878else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200879 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400880 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400881endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200882conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400883
884want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500885if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400886 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200887 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400888else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200889 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400890 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400891endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200892conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400893
894want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500895if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400896 libkmod = dependency('libkmod',
897 version : '>= 15',
898 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200899 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400900else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200901 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400902 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400903endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200904conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400905
906want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500907if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400908 libpam = cc.find_library('pam', required : want_pam == 'true')
909 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200910 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400911else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200912 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400913 libpam = []
914 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400915endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200916conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400917
918want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500919if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400920 libmicrohttpd = dependency('libmicrohttpd',
921 version : '>= 0.9.33',
922 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200923 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400924else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200925 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400926 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400927endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200928conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400929
930want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500931if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400932 libcryptsetup = dependency('libcryptsetup',
933 version : '>= 1.6.0',
934 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200935 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100936 have_sector = cc.has_member(
937 'struct crypt_params_plain',
938 'sector_size',
939 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400940else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200941 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100942 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400943 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400944endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200945conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100946conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400947
948want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500949if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400950 libcurl = dependency('libcurl',
951 version : '>= 7.32.0',
952 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200953 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400954else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200955 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400956 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400957endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200958conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400959
960want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400961want_libidn2 = get_option('libidn2')
962if want_libidn == 'true' and want_libidn2 == 'true'
963 error('libidn and libidn2 cannot be requested simultaneously')
964endif
965
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500966if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400967 libidn = dependency('libidn',
968 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200969 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400970else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200971 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400972 libidn = []
973endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200974conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500975if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400976 # libidn is used for both libidn and libidn2 objects
977 libidn = dependency('libidn2',
978 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200979 have = libidn.found()
980else
981 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400982endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200983conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400984
985want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500986if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400987 libiptc = dependency('libiptc',
988 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200989 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400990else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200991 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400992 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400993endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200994conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400995
996want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500997if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400998 libqrencode = dependency('libqrencode',
999 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001000 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001001else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001002 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001003 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001004endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001005conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001006
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001007want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001008if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001009 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1010 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001011 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001012else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001013 have = false
1014endif
1015if not have
1016 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001017 libgcrypt = []
1018 libgpg_error = []
1019endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001020conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001021
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001022want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001023if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001024 libgnutls = dependency('gnutls',
1025 version : '>= 3.1.4',
1026 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001027 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001028else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001029 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001030 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001031endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001032conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001033
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001034want_openssl = get_option('openssl')
1035if want_openssl != 'false' and not fuzzer_build
1036 libopenssl = dependency('openssl',
1037 version : '>= 1.1.0',
1038 required : want_openssl == 'true')
1039 have = libopenssl.found()
1040else
1041 have = false
1042 libopenssl = []
1043endif
1044conf.set10('HAVE_OPENSSL', have)
1045
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001046want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001047if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001048 libdw = dependency('libdw',
1049 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001050 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001051else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001052 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001053 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001054endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001055conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001056
1057want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001058if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001059 libz = dependency('zlib',
1060 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001061 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001062else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001063 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001064 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001065endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001066conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001067
1068want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001069if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001070 libbzip2 = cc.find_library('bz2',
1071 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001072 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001073else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001074 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001075 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001076endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001077conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001078
1079want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001080if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001081 libxz = dependency('liblzma',
1082 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001083 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001084else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001085 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001086 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001087endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001088conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001089
1090want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001091if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001092 liblz4 = dependency('liblz4',
1093 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001094 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001095else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001096 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001097 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001098endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001099conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001100
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001101want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001102if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001103 libxkbcommon = dependency('xkbcommon',
1104 version : '>= 0.3.0',
1105 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001106 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001107else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001108 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001109 libxkbcommon = []
1110endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001111conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001112
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001113want_pcre2 = get_option('pcre2')
1114if want_pcre2 != 'false'
1115 libpcre2 = dependency('libpcre2-8',
1116 required : want_pcre2 == 'true')
1117 have = libpcre2.found()
1118else
1119 have = false
1120 libpcre2 = []
1121endif
1122conf.set10('HAVE_PCRE2', have)
1123
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001124want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001125if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001126 libglib = dependency('glib-2.0',
1127 version : '>= 2.22.0',
1128 required : want_glib == 'true')
1129 libgobject = dependency('gobject-2.0',
1130 version : '>= 2.22.0',
1131 required : want_glib == 'true')
1132 libgio = dependency('gio-2.0',
1133 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001134 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001135else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001136 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001137 libglib = []
1138 libgobject = []
1139 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001140endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001141conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001142
1143want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001144if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001145 libdbus = dependency('dbus-1',
1146 version : '>= 1.3.2',
1147 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001148 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001149else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001150 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001151 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001152endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001153conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001154
Yu Watanabe42303dc2017-06-18 05:22:32 +09001155default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001156if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001157 default_dnssec = 'no'
1158endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001159if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001160 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1161 default_dnssec = 'no'
1162endif
1163conf.set('DEFAULT_DNSSEC_MODE',
1164 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1165substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1166
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001167dns_over_tls = get_option('dns-over-tls')
1168if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001169 if dns_over_tls == 'openssl'
1170 have_gnutls = false
1171 else
1172 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1173 if dns_over_tls == 'gnutls' and not have_gnutls
1174 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1175 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001176 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001177 if dns_over_tls == 'gnutls' or have_gnutls
1178 have_openssl = false
1179 else
1180 have_openssl = conf.get('HAVE_OPENSSL') == 1
1181 if dns_over_tls != 'auto' and not have_openssl
1182 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
1183 error('DNS-over-TLS support was requested$0$, but dependencies are not available'.format(str))
1184 endif
1185 endif
1186 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001187else
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001188 have = have_gnutls = have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001189endif
1190conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001191conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1192conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001193
Iwan Timmerc9299be2018-06-13 20:26:24 +02001194default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001195if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001196 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001197endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001198if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1199 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 +02001200 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001201endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001202conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1203 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1204substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001205
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001206want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001207if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001208 have = (conf.get('HAVE_LIBCURL') == 1 and
1209 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001210 conf.get('HAVE_XZ') == 1 and
1211 conf.get('HAVE_GCRYPT') == 1)
1212 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001213 error('importd support was requested, but dependencies are not available')
1214 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001215else
1216 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001217endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001218conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001219
1220want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001221if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001222 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1223 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001224 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1225 # it's possible to build one without the other. Complain only if
1226 # support was explictly requested. The auxiliary files like sysusers
1227 # config should be installed when any of the programs are built.
1228 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1229 error('remote support was requested, but dependencies are not available')
1230 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001231 have = have_deps[0] or have_deps[1]
1232else
1233 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001234endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001235conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001236
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001237foreach term : ['utmp',
1238 'hibernate',
1239 'environment-d',
1240 'binfmt',
1241 'coredump',
1242 'resolve',
1243 'logind',
1244 'hostnamed',
1245 'localed',
1246 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001247 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001248 'networkd',
1249 'timedated',
1250 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001251 'firstboot',
1252 'randomseed',
1253 'backlight',
1254 'vconsole',
1255 'quotacheck',
1256 'sysusers',
1257 'tmpfiles',
1258 'hwdb',
1259 'rfkill',
1260 'ldconfig',
1261 'efi',
1262 'tpm',
1263 'ima',
1264 'smack',
1265 'gshadow',
1266 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001267 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001268 'nss-systemd']
1269 have = get_option(term)
1270 name = 'ENABLE_' + term.underscorify().to_upper()
1271 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001272endforeach
1273
Yu Watanabe08540a92018-07-18 09:25:57 +09001274foreach tuple : [['nss-mymachines', 'machined'],
1275 ['nss-resolve', 'resolve']]
1276 want = get_option(tuple[0])
1277 if want != 'false'
1278 have = get_option(tuple[1])
1279 if want == 'true' and not have
1280 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1281 endif
1282 else
1283 have = false
1284 endif
1285 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1286 conf.set10(name, have)
1287endforeach
1288
1289enable_nss = false
1290foreach term : ['ENABLE_NSS_MYHOSTNAME',
1291 'ENABLE_NSS_MYMACHINES',
1292 'ENABLE_NSS_RESOLVE',
1293 'ENABLE_NSS_SYSTEMD']
1294 if conf.get(term) == 1
1295 enable_nss = true
1296 endif
1297endforeach
1298conf.set10('ENABLE_NSS', enable_nss)
1299
Yu Watanabe348b4432018-05-07 18:17:35 +09001300conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001301
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001302tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001303fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001304
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001305conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001306
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001307#####################################################################
1308
1309if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001310 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001311
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001312 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001313 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001314 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001315 elif efi_arch == 'x86_64'
1316 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001317 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001318 elif efi_arch == 'arm'
1319 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001320 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001321 elif efi_arch == 'aarch64'
1322 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001323 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001324 else
1325 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001326 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001327 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001328
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001329 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001330 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001331
Yu Watanabeac093402018-05-10 16:04:16 +09001332 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001333else
1334 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001335endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001336conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001337
1338#####################################################################
1339
1340config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001341 output : 'config.h',
1342 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001343
Yu Watanabe348b4432018-05-07 18:17:35 +09001344meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1345
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001346includes = include_directories('src/basic',
1347 'src/shared',
1348 'src/systemd',
1349 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001350 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001351 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001352 'src/resolve',
1353 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001354 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001355 'src/login',
1356 'src/udev',
1357 'src/libudev',
1358 'src/core',
1359 'src/libsystemd/sd-bus',
1360 'src/libsystemd/sd-device',
1361 'src/libsystemd/sd-hwdb',
1362 'src/libsystemd/sd-id128',
1363 'src/libsystemd/sd-netlink',
1364 'src/libsystemd/sd-network',
1365 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001366 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001367
1368add_project_arguments('-include', 'config.h', language : 'c')
1369
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001370subdir('po')
1371subdir('catalog')
1372subdir('src/systemd')
1373subdir('src/basic')
1374subdir('src/libsystemd')
1375subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001376subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001377subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001378
1379libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001380 'journal-core',
1381 libjournal_core_sources,
1382 journald_gperf_c,
1383 include_directories : includes,
1384 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001385
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001386libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001387libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001388 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001389 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001390 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001391 include_directories : includes,
1392 link_args : ['-shared',
1393 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001394 link_with : [libbasic,
1395 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001396 link_whole : [libsystemd_static,
1397 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001398 dependencies : [threads,
1399 librt,
1400 libxz,
1401 liblz4],
1402 link_depends : libsystemd_sym,
1403 install : true,
1404 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001405
Davide Cavalca70848ec2018-04-09 02:43:35 -07001406static_libsystemd = get_option('static-libsystemd')
1407static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1408
1409install_libsystemd_static = static_library(
1410 'systemd',
1411 libsystemd_sources,
1412 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001413 basic_sources,
1414 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001415 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001416 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001417 build_by_default : static_libsystemd != 'false',
1418 install : static_libsystemd != 'false',
1419 install_dir : rootlibdir,
1420 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1421 dependencies : [threads,
1422 librt,
1423 libxz,
1424 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001425 libcap,
1426 libblkid,
1427 libmount,
1428 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001429 libgcrypt],
1430 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1431
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001432############################################################
1433
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001434# binaries that have --help and are intended for use by humans,
1435# usually, but not always, installed in /bin.
1436public_programs = []
1437
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001438subdir('src/libudev')
1439subdir('src/shared')
1440subdir('src/core')
1441subdir('src/udev')
1442subdir('src/network')
1443
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001444subdir('src/analyze')
1445subdir('src/journal-remote')
1446subdir('src/coredump')
1447subdir('src/hostname')
1448subdir('src/import')
1449subdir('src/kernel-install')
1450subdir('src/locale')
1451subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001452subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001453subdir('src/nspawn')
1454subdir('src/resolve')
1455subdir('src/timedate')
1456subdir('src/timesync')
1457subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001458subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001459
1460subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001461subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001462subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001463subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001464
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001465############################################################
1466
1467# only static linking apart from libdl, to make sure that the
1468# module is linked to all libraries that it uses.
1469test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001470 'test-dlopen',
1471 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001472 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001473 include_directories : includes,
1474 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001475 dependencies : [libdl],
1476 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001477
Yu Watanabe08540a92018-07-18 09:25:57 +09001478foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001479 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001480 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1481 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001482
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001483 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001484 if condition
1485 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001486
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001487 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001488 version_script_arg = join_paths(meson.source_root(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001489
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001490 nss = shared_library(
1491 'nss_' + module,
1492 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001493 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001494 version : '2',
1495 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001496 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1497 link_args : ['-Wl,-z,nodelete',
1498 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001499 '-Wl,--version-script=' + version_script_arg,
1500 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001501 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001502 libbasic],
1503 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001504 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001505 link_depends : sym,
1506 install : true,
1507 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001508
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001509 # We cannot use shared_module because it does not support version suffix.
1510 # Unfortunately shared_library insists on creating the symlink…
1511 meson.add_install_script('sh', '-c',
1512 'rm $DESTDIR@0@/libnss_@1@.so'
1513 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001514
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001515 if want_tests != 'false'
1516 test('dlopen-nss_' + module,
1517 test_dlopen,
1518 # path to dlopen must include a slash
1519 args : nss.full_path())
1520 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001521 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001522endforeach
1523
1524############################################################
1525
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001526executable('systemd',
1527 systemd_sources,
1528 include_directories : includes,
1529 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001530 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001531 dependencies : [threads,
1532 librt,
1533 libseccomp,
1534 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001535 libmount,
1536 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001537 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001538 install : true,
1539 install_dir : rootlibexecdir)
1540
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001541meson.add_install_script(meson_make_symlink,
1542 join_paths(rootlibexecdir, 'systemd'),
1543 join_paths(rootsbindir, 'init'))
1544
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001545exe = executable('systemd-analyze',
1546 systemd_analyze_sources,
1547 include_directories : includes,
1548 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001549 libshared],
1550 dependencies : [threads,
1551 librt,
1552 libseccomp,
1553 libselinux,
1554 libmount,
1555 libblkid],
1556 install_rpath : rootlibexecdir,
1557 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001558public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001559
1560executable('systemd-journald',
1561 systemd_journald_sources,
1562 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001563 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001564 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001565 dependencies : [threads,
1566 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001567 liblz4,
1568 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001569 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001570 install : true,
1571 install_dir : rootlibexecdir)
1572
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001573exe = executable('systemd-cat',
1574 systemd_cat_sources,
1575 include_directories : includes,
1576 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001577 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001578 dependencies : [threads],
1579 install_rpath : rootlibexecdir,
1580 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001581public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001582
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001583exe = executable('journalctl',
1584 journalctl_sources,
1585 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001586 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001587 dependencies : [threads,
1588 libqrencode,
1589 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001590 liblz4,
1591 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001592 install_rpath : rootlibexecdir,
1593 install : true,
1594 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001595public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001596
1597executable('systemd-getty-generator',
1598 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001599 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001600 link_with : [libshared],
1601 install_rpath : rootlibexecdir,
1602 install : true,
1603 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001604
1605executable('systemd-debug-generator',
1606 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001607 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001608 link_with : [libshared],
1609 install_rpath : rootlibexecdir,
1610 install : true,
1611 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001612
1613executable('systemd-fstab-generator',
1614 'src/fstab-generator/fstab-generator.c',
1615 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001616 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001617 link_with : [libshared],
1618 install_rpath : rootlibexecdir,
1619 install : true,
1620 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001621
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001622if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001623 executable('30-systemd-environment-d-generator',
1624 'src/environment-d-generator/environment-d-generator.c',
1625 include_directories : includes,
1626 link_with : [libshared],
1627 install_rpath : rootlibexecdir,
1628 install : true,
1629 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001630
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001631 meson.add_install_script(meson_make_symlink,
1632 join_paths(sysconfdir, 'environment'),
1633 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001634endif
1635
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001636if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001637 executable('systemd-hibernate-resume-generator',
1638 'src/hibernate-resume/hibernate-resume-generator.c',
1639 include_directories : includes,
1640 link_with : [libshared],
1641 install_rpath : rootlibexecdir,
1642 install : true,
1643 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001644
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001645 executable('systemd-hibernate-resume',
1646 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001647 include_directories : includes,
1648 link_with : [libshared],
1649 install_rpath : rootlibexecdir,
1650 install : true,
1651 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001652endif
1653
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001654if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001655 executable('systemd-gpt-auto-generator',
1656 'src/gpt-auto-generator/gpt-auto-generator.c',
1657 'src/basic/blkid-util.h',
1658 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001659 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001660 dependencies : libblkid,
1661 install_rpath : rootlibexecdir,
1662 install : true,
1663 install_dir : systemgeneratordir)
1664
1665 exe = executable('systemd-dissect',
1666 'src/dissect/dissect.c',
1667 include_directories : includes,
1668 link_with : [libshared],
1669 install_rpath : rootlibexecdir,
1670 install : true,
1671 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001672 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001673endif
1674
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001675if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001676 executable('systemd-resolved',
1677 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001678 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001679 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001680 libbasic_gcrypt,
1681 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001682 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001683 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001684 install : true,
1685 install_dir : rootlibexecdir)
1686
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001687 exe = executable('resolvectl',
1688 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001689 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001690 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001691 libbasic_gcrypt,
1692 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001693 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001694 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001695 libm,
1696 libidn],
1697 install_rpath : rootlibexecdir,
1698 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001699 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001700
1701 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001702 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001703 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001704
1705 meson.add_install_script(meson_make_symlink,
1706 join_paths(bindir, 'resolvectl'),
1707 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001708endif
1709
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001710if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001711 executable('systemd-logind',
1712 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001713 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001714 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001715 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001716 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001717 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001718 install_rpath : rootlibexecdir,
1719 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001720 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001721
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001722 exe = executable('loginctl',
1723 loginctl_sources,
1724 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001725 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001726 dependencies : [threads,
1727 liblz4,
1728 libxz],
1729 install_rpath : rootlibexecdir,
1730 install : true,
1731 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001732 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001733
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001734 exe = executable('systemd-inhibit',
1735 'src/login/inhibit.c',
1736 include_directories : includes,
1737 link_with : [libshared],
1738 install_rpath : rootlibexecdir,
1739 install : true,
1740 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001741 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001742
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001743 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001744 version_script_arg = join_paths(meson.source_root(), pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001745 pam_systemd = shared_library(
1746 'pam_systemd',
1747 pam_systemd_c,
1748 name_prefix : '',
1749 include_directories : includes,
1750 link_args : ['-shared',
1751 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001752 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001753 libshared_static],
1754 dependencies : [threads,
1755 libpam,
1756 libpam_misc],
1757 link_depends : pam_systemd_sym,
1758 install : true,
1759 install_dir : pamlibdir)
1760
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001761 if want_tests != 'false'
1762 test('dlopen-pam_systemd',
1763 test_dlopen,
1764 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001765 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001766 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001767 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001768
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001769 executable('systemd-user-runtime-dir',
1770 user_runtime_dir_sources,
1771 include_directories : includes,
1772 link_with : [libshared],
1773 install_rpath : rootlibexecdir,
1774 install : true,
1775 install_dir : rootlibexecdir)
1776endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001777
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001778if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001779 executable('systemd-user-sessions',
1780 'src/user-sessions/user-sessions.c',
1781 include_directories : includes,
1782 link_with : [libshared],
1783 install_rpath : rootlibexecdir,
1784 install : true,
1785 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001786endif
1787
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001788if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001789 exe = executable('bootctl',
1790 'src/boot/bootctl.c',
1791 include_directories : includes,
1792 link_with : [libshared],
1793 dependencies : [libblkid],
1794 install_rpath : rootlibexecdir,
1795 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001796 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001797endif
1798
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001799exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1800 include_directories : includes,
1801 link_with : [libshared],
1802 dependencies : [threads],
1803 install_rpath : rootlibexecdir,
1804 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001805public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001806
Felipe Satelerf3794362018-05-22 15:08:57 -04001807
1808if get_option('link-systemctl-shared')
1809 systemctl_link_with = [libshared]
1810else
1811 systemctl_link_with = [libsystemd_static,
1812 libshared_static,
1813 libjournal_client,
1814 libbasic_gcrypt]
1815endif
1816
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001817exe = executable('systemctl', 'src/systemctl/systemctl.c',
1818 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001819 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001820 dependencies : [threads,
1821 libcap,
1822 libselinux,
1823 libxz,
1824 liblz4],
1825 install_rpath : rootlibexecdir,
1826 install : true,
1827 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001828public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001829
Lennart Poettering61d05782018-04-16 21:41:40 +02001830if conf.get('ENABLE_PORTABLED') == 1
1831 executable('systemd-portabled',
1832 systemd_portabled_sources,
1833 include_directories : includes,
1834 link_with : [libshared],
1835 dependencies : [threads],
1836 install_rpath : rootlibexecdir,
1837 install : true,
1838 install_dir : rootlibexecdir)
1839
1840 exe = executable('portablectl', 'src/portable/portablectl.c',
1841 include_directories : includes,
1842 link_with : [libshared],
1843 dependencies : [threads],
1844 install_rpath : rootlibexecdir,
1845 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001846 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001847 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001848endif
1849
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001850foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1851 meson.add_install_script(meson_make_symlink,
1852 join_paths(rootbindir, 'systemctl'),
1853 join_paths(rootsbindir, alias))
1854endforeach
1855
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001856if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001857 executable('systemd-backlight',
1858 'src/backlight/backlight.c',
1859 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001860 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001861 install_rpath : rootlibexecdir,
1862 install : true,
1863 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001864endif
1865
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001866if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001867 executable('systemd-rfkill',
1868 'src/rfkill/rfkill.c',
1869 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001870 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001871 install_rpath : rootlibexecdir,
1872 install : true,
1873 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001874endif
1875
1876executable('systemd-system-update-generator',
1877 'src/system-update-generator/system-update-generator.c',
1878 include_directories : includes,
1879 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001880 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001881 install : true,
1882 install_dir : systemgeneratordir)
1883
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001884if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001885 executable('systemd-cryptsetup',
1886 'src/cryptsetup/cryptsetup.c',
1887 include_directories : includes,
1888 link_with : [libshared],
1889 dependencies : [libcryptsetup],
1890 install_rpath : rootlibexecdir,
1891 install : true,
1892 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001893
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001894 executable('systemd-cryptsetup-generator',
1895 'src/cryptsetup/cryptsetup-generator.c',
1896 include_directories : includes,
1897 link_with : [libshared],
1898 dependencies : [libcryptsetup],
1899 install_rpath : rootlibexecdir,
1900 install : true,
1901 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001902
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001903 executable('systemd-veritysetup',
1904 'src/veritysetup/veritysetup.c',
1905 include_directories : includes,
1906 link_with : [libshared],
1907 dependencies : [libcryptsetup],
1908 install_rpath : rootlibexecdir,
1909 install : true,
1910 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001911
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001912 executable('systemd-veritysetup-generator',
1913 'src/veritysetup/veritysetup-generator.c',
1914 include_directories : includes,
1915 link_with : [libshared],
1916 dependencies : [libcryptsetup],
1917 install_rpath : rootlibexecdir,
1918 install : true,
1919 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001920endif
1921
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001922if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001923 executable('systemd-sysv-generator',
1924 'src/sysv-generator/sysv-generator.c',
1925 include_directories : includes,
1926 link_with : [libshared],
1927 install_rpath : rootlibexecdir,
1928 install : true,
1929 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001930
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001931 executable('systemd-rc-local-generator',
1932 'src/rc-local-generator/rc-local-generator.c',
1933 include_directories : includes,
1934 link_with : [libshared],
1935 install_rpath : rootlibexecdir,
1936 install : true,
1937 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001938endif
1939
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001940if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001941 executable('systemd-hostnamed',
1942 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001943 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001944 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001945 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001946 install : true,
1947 install_dir : rootlibexecdir)
1948
1949 exe = executable('hostnamectl',
1950 'src/hostname/hostnamectl.c',
1951 include_directories : includes,
1952 link_with : [libshared],
1953 install_rpath : rootlibexecdir,
1954 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001955 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001956endif
1957
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001958if conf.get('ENABLE_LOCALED') == 1
1959 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001960 # logind will load libxkbcommon.so dynamically on its own
1961 deps = [libdl]
1962 else
1963 deps = []
1964 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001965
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001966 executable('systemd-localed',
1967 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001968 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001969 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001970 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001971 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001972 install : true,
1973 install_dir : rootlibexecdir)
1974
1975 exe = executable('localectl',
1976 localectl_sources,
1977 include_directories : includes,
1978 link_with : [libshared],
1979 install_rpath : rootlibexecdir,
1980 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001981 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001982endif
1983
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001984if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001985 executable('systemd-timedated',
1986 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001987 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001988 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001989 install_rpath : rootlibexecdir,
1990 install : true,
1991 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09001992endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001993
Yu Watanabe6129ec82018-05-03 18:07:43 +09001994if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001995 exe = executable('timedatectl',
1996 'src/timedate/timedatectl.c',
1997 include_directories : includes,
1998 install_rpath : rootlibexecdir,
1999 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002000 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002001 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002002 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002003endif
2004
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002005if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002006 executable('systemd-timesyncd',
2007 systemd_timesyncd_sources,
2008 include_directories : includes,
2009 link_with : [libshared],
2010 dependencies : [threads,
2011 libm],
2012 install_rpath : rootlibexecdir,
2013 install : true,
2014 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002015
2016 executable('systemd-time-wait-sync',
2017 'src/time-wait-sync/time-wait-sync.c',
2018 include_directories : includes,
2019 link_with : [libshared],
2020 install_rpath : rootlibexecdir,
2021 install : true,
2022 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002023endif
2024
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002025if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002026 executable('systemd-machined',
2027 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002028 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002029 link_with : [libmachine_core,
2030 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002031 install_rpath : rootlibexecdir,
2032 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002033 install_dir : rootlibexecdir)
2034
2035 exe = executable('machinectl',
2036 'src/machine/machinectl.c',
2037 include_directories : includes,
2038 link_with : [libshared],
2039 dependencies : [threads,
2040 libxz,
2041 liblz4],
2042 install_rpath : rootlibexecdir,
2043 install : true,
2044 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002045 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002046endif
2047
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002048if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002049 executable('systemd-importd',
2050 systemd_importd_sources,
2051 include_directories : includes,
2052 link_with : [libshared],
2053 dependencies : [threads],
2054 install_rpath : rootlibexecdir,
2055 install : true,
2056 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002057
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002058 systemd_pull = executable('systemd-pull',
2059 systemd_pull_sources,
2060 include_directories : includes,
2061 link_with : [libshared],
2062 dependencies : [libcurl,
2063 libz,
2064 libbzip2,
2065 libxz,
2066 libgcrypt],
2067 install_rpath : rootlibexecdir,
2068 install : true,
2069 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002070
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002071 systemd_import = executable('systemd-import',
2072 systemd_import_sources,
2073 include_directories : includes,
2074 link_with : [libshared],
2075 dependencies : [libcurl,
2076 libz,
2077 libbzip2,
2078 libxz],
2079 install_rpath : rootlibexecdir,
2080 install : true,
2081 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002082
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002083 systemd_export = executable('systemd-export',
2084 systemd_export_sources,
2085 include_directories : includes,
2086 link_with : [libshared],
2087 dependencies : [libcurl,
2088 libz,
2089 libbzip2,
2090 libxz],
2091 install_rpath : rootlibexecdir,
2092 install : true,
2093 install_dir : rootlibexecdir)
2094 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002095endif
2096
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002097if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002098 exe = executable('systemd-journal-upload',
2099 systemd_journal_upload_sources,
2100 include_directories : includes,
2101 link_with : [libshared],
2102 dependencies : [threads,
2103 libcurl,
2104 libgnutls,
2105 libxz,
2106 liblz4],
2107 install_rpath : rootlibexecdir,
2108 install : true,
2109 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002110 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002111endif
2112
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002113if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002114 s_j_remote = executable('systemd-journal-remote',
2115 systemd_journal_remote_sources,
2116 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002117 link_with : [libshared,
2118 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002119 dependencies : [threads,
2120 libmicrohttpd,
2121 libgnutls,
2122 libxz,
2123 liblz4],
2124 install_rpath : rootlibexecdir,
2125 install : true,
2126 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002127
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002128 s_j_gatewayd = executable('systemd-journal-gatewayd',
2129 systemd_journal_gatewayd_sources,
2130 include_directories : includes,
2131 link_with : [libshared],
2132 dependencies : [threads,
2133 libmicrohttpd,
2134 libgnutls,
2135 libxz,
2136 liblz4],
2137 install_rpath : rootlibexecdir,
2138 install : true,
2139 install_dir : rootlibexecdir)
2140 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002141endif
2142
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002143if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002144 executable('systemd-coredump',
2145 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002146 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002147 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002148 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002149 libacl,
2150 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002151 libxz,
2152 liblz4],
2153 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002154 install : true,
2155 install_dir : rootlibexecdir)
2156
2157 exe = executable('coredumpctl',
2158 coredumpctl_sources,
2159 include_directories : includes,
2160 link_with : [libshared],
2161 dependencies : [threads,
2162 libxz,
2163 liblz4],
2164 install_rpath : rootlibexecdir,
2165 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002166 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002167endif
2168
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002169if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002170 exe = executable('systemd-binfmt',
2171 'src/binfmt/binfmt.c',
2172 include_directories : includes,
2173 link_with : [libshared],
2174 install_rpath : rootlibexecdir,
2175 install : true,
2176 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002177 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002178
2179 meson.add_install_script('sh', '-c',
2180 mkdir_p.format(binfmtdir))
2181 meson.add_install_script('sh', '-c',
2182 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2183endif
2184
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002185if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002186 executable('systemd-vconsole-setup',
2187 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002188 include_directories : includes,
2189 link_with : [libshared],
2190 install_rpath : rootlibexecdir,
2191 install : true,
2192 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002193endif
2194
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002195if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002196 executable('systemd-random-seed',
2197 'src/random-seed/random-seed.c',
2198 include_directories : includes,
2199 link_with : [libshared],
2200 install_rpath : rootlibexecdir,
2201 install : true,
2202 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002203endif
2204
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002205if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002206 executable('systemd-firstboot',
2207 'src/firstboot/firstboot.c',
2208 include_directories : includes,
2209 link_with : [libshared],
2210 dependencies : [libcrypt],
2211 install_rpath : rootlibexecdir,
2212 install : true,
2213 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002214endif
2215
2216executable('systemd-remount-fs',
2217 'src/remount-fs/remount-fs.c',
2218 'src/core/mount-setup.c',
2219 'src/core/mount-setup.h',
2220 include_directories : includes,
2221 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002222 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002223 install : true,
2224 install_dir : rootlibexecdir)
2225
2226executable('systemd-machine-id-setup',
2227 'src/machine-id-setup/machine-id-setup-main.c',
2228 'src/core/machine-id-setup.c',
2229 'src/core/machine-id-setup.h',
2230 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002231 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002232 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002233 install : true,
2234 install_dir : rootbindir)
2235
2236executable('systemd-fsck',
2237 'src/fsck/fsck.c',
2238 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002239 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002240 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002241 install : true,
2242 install_dir : rootlibexecdir)
2243
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002244executable('systemd-growfs',
2245 'src/partition/growfs.c',
2246 include_directories : includes,
2247 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002248 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002249 install_rpath : rootlibexecdir,
2250 install : true,
2251 install_dir : rootlibexecdir)
2252
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002253executable('systemd-makefs',
2254 'src/partition/makefs.c',
2255 include_directories : includes,
2256 link_with : [libshared],
2257 install_rpath : rootlibexecdir,
2258 install : true,
2259 install_dir : rootlibexecdir)
2260
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002261executable('systemd-sleep',
2262 'src/sleep/sleep.c',
2263 include_directories : includes,
2264 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002265 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002266 install : true,
2267 install_dir : rootlibexecdir)
2268
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002269exe = executable('systemd-sysctl',
2270 'src/sysctl/sysctl.c',
2271 include_directories : includes,
2272 link_with : [libshared],
2273 install_rpath : rootlibexecdir,
2274 install : true,
2275 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002276public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002277
2278executable('systemd-ac-power',
2279 'src/ac-power/ac-power.c',
2280 include_directories : includes,
2281 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002282 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002283 install : true,
2284 install_dir : rootlibexecdir)
2285
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002286exe = executable('systemd-detect-virt',
2287 'src/detect-virt/detect-virt.c',
2288 include_directories : includes,
2289 link_with : [libshared],
2290 install_rpath : rootlibexecdir,
2291 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002292public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002293
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002294exe = executable('systemd-delta',
2295 'src/delta/delta.c',
2296 include_directories : includes,
2297 link_with : [libshared],
2298 install_rpath : rootlibexecdir,
2299 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002300public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002301
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002302exe = executable('systemd-escape',
2303 'src/escape/escape.c',
2304 include_directories : includes,
2305 link_with : [libshared],
2306 install_rpath : rootlibexecdir,
2307 install : true,
2308 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002309public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002310
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002311exe = executable('systemd-notify',
2312 'src/notify/notify.c',
2313 include_directories : includes,
2314 link_with : [libshared],
2315 install_rpath : rootlibexecdir,
2316 install : true,
2317 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002318public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002319
2320executable('systemd-volatile-root',
2321 'src/volatile-root/volatile-root.c',
2322 include_directories : includes,
2323 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002324 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002325 install : true,
2326 install_dir : rootlibexecdir)
2327
2328executable('systemd-cgroups-agent',
2329 'src/cgroups-agent/cgroups-agent.c',
2330 include_directories : includes,
2331 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002332 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002333 install : true,
2334 install_dir : rootlibexecdir)
2335
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002336exe = executable('systemd-id128',
2337 'src/id128/id128.c',
2338 include_directories : includes,
2339 link_with : [libshared],
2340 install_rpath : rootlibexecdir,
2341 install : true)
2342public_programs += exe
2343
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002344exe = executable('systemd-path',
2345 'src/path/path.c',
2346 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002347 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002348 install_rpath : rootlibexecdir,
2349 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002350public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002351
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002352exe = executable('systemd-ask-password',
2353 'src/ask-password/ask-password.c',
2354 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002355 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002356 install_rpath : rootlibexecdir,
2357 install : true,
2358 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002359public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002360
2361executable('systemd-reply-password',
2362 'src/reply-password/reply-password.c',
2363 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002364 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002365 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002366 install : true,
2367 install_dir : rootlibexecdir)
2368
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002369exe = executable('systemd-tty-ask-password-agent',
2370 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2371 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002372 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002373 install_rpath : rootlibexecdir,
2374 install : true,
2375 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002376public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002377
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002378exe = executable('systemd-cgls',
2379 'src/cgls/cgls.c',
2380 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002381 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002382 install_rpath : rootlibexecdir,
2383 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002384public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002385
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002386exe = executable('systemd-cgtop',
2387 'src/cgtop/cgtop.c',
2388 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002389 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002390 install_rpath : rootlibexecdir,
2391 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002392public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002393
2394executable('systemd-initctl',
2395 'src/initctl/initctl.c',
2396 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002397 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002398 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002399 install : true,
2400 install_dir : rootlibexecdir)
2401
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002402exe = executable('systemd-mount',
2403 'src/mount/mount-tool.c',
2404 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002405 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002406 install_rpath : rootlibexecdir,
2407 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002408public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002409
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002410meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002411 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002412
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002413exe = executable('systemd-run',
2414 'src/run/run.c',
2415 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002416 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002417 install_rpath : rootlibexecdir,
2418 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002419public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002420
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002421exe = executable('systemd-stdio-bridge',
2422 'src/stdio-bridge/stdio-bridge.c',
2423 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002424 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002425 install_rpath : rootlibexecdir,
2426 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002427public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002428
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002429exe = executable('busctl',
2430 'src/busctl/busctl.c',
2431 'src/busctl/busctl-introspect.c',
2432 'src/busctl/busctl-introspect.h',
2433 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002434 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002435 install_rpath : rootlibexecdir,
2436 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002437public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002438
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002439if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002440 exe = executable('systemd-sysusers',
2441 'src/sysusers/sysusers.c',
2442 include_directories : includes,
2443 link_with : [libshared],
2444 install_rpath : rootlibexecdir,
2445 install : true,
2446 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002447 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002448endif
2449
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002450if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002451 exe = executable('systemd-tmpfiles',
2452 'src/tmpfiles/tmpfiles.c',
2453 include_directories : includes,
2454 link_with : [libshared],
2455 dependencies : [libacl],
2456 install_rpath : rootlibexecdir,
2457 install : true,
2458 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002459 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002460
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002461 if want_tests != 'false'
2462 test('test-systemd-tmpfiles',
2463 test_systemd_tmpfiles_py,
2464 # https://github.com/mesonbuild/meson/issues/2681
2465 args : exe.full_path())
2466 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002467endif
2468
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002469if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002470 exe = executable('systemd-hwdb',
2471 'src/hwdb/hwdb.c',
2472 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2473 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002474 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002475 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002476 install : true,
2477 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002478 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002479endif
2480
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002481if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002482 executable('systemd-quotacheck',
2483 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002484 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002485 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002486 install_rpath : rootlibexecdir,
2487 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002488 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002489endif
2490
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002491exe = executable('systemd-socket-proxyd',
2492 'src/socket-proxy/socket-proxyd.c',
2493 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002494 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002495 dependencies : [threads],
2496 install_rpath : rootlibexecdir,
2497 install : true,
2498 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002499public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002500
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002501exe = executable('systemd-udevd',
2502 systemd_udevd_sources,
2503 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002504 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002505 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002506 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002507 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002508 dependencies : [threads,
2509 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002510 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002511 libacl,
2512 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002513 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002514 install : true,
2515 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002516public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002517
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002518exe = executable('udevadm',
2519 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002520 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002521 include_directories : includes,
2522 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002523 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002524 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002525 dependencies : [threads,
2526 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002527 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002528 libacl,
2529 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002530 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002531 install : true,
2532 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002533public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002534
2535executable('systemd-shutdown',
2536 systemd_shutdown_sources,
2537 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002538 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002539 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002540 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002541 install : true,
2542 install_dir : rootlibexecdir)
2543
2544executable('systemd-update-done',
2545 'src/update-done/update-done.c',
2546 include_directories : includes,
2547 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002548 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002549 install : true,
2550 install_dir : rootlibexecdir)
2551
2552executable('systemd-update-utmp',
2553 'src/update-utmp/update-utmp.c',
2554 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002555 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002556 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002557 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002558 install : true,
2559 install_dir : rootlibexecdir)
2560
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002561if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002562 executable('systemd-modules-load',
2563 'src/modules-load/modules-load.c',
2564 include_directories : includes,
2565 link_with : [libshared],
2566 dependencies : [libkmod],
2567 install_rpath : rootlibexecdir,
2568 install : true,
2569 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002570
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002571 meson.add_install_script('sh', '-c',
2572 mkdir_p.format(modulesloaddir))
2573 meson.add_install_script('sh', '-c',
2574 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002575endif
2576
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002577exe = executable('systemd-nspawn',
2578 systemd_nspawn_sources,
2579 'src/core/mount-setup.c', # FIXME: use a variable?
2580 'src/core/mount-setup.h',
2581 'src/core/loopback-setup.c',
2582 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002583 include_directories : includes,
2584 link_with : [libnspawn_core,
2585 libshared],
2586 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002587 install_rpath : rootlibexecdir,
2588 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002589public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002590
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002591if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002592 executable('systemd-networkd',
2593 systemd_networkd_sources,
2594 include_directories : includes,
2595 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002596 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002597 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002598 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002599 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002600 install_rpath : rootlibexecdir,
2601 install : true,
2602 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002603
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002604 executable('systemd-networkd-wait-online',
2605 systemd_networkd_wait_online_sources,
2606 include_directories : includes,
2607 link_with : [libnetworkd_core,
2608 libshared],
2609 install_rpath : rootlibexecdir,
2610 install : true,
2611 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002612
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002613 exe = executable('networkctl',
2614 networkctl_sources,
2615 include_directories : includes,
2616 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002617 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002618 install_rpath : rootlibexecdir,
2619 install : true,
2620 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002621 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002622endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002623
2624executable('systemd-sulogin-shell',
2625 ['src/sulogin-shell/sulogin-shell.c'],
2626 include_directories : includes,
2627 link_with : [libshared],
2628 install_rpath : rootlibexecdir,
2629 install : true,
2630 install_dir : rootlibexecdir)
2631
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002632############################################################
2633
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002634custom_target(
2635 'systemd-runtest.env',
2636 output : 'systemd-runtest.env',
2637 command : ['sh', '-c', '{ ' +
2638 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(meson.current_source_dir(), 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002639 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002640 '} >@OUTPUT@'],
2641 build_by_default : true)
2642
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002643foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002644 sources = tuple[0]
2645 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2646 dependencies = tuple[2]
2647 condition = tuple.length() >= 4 ? tuple[3] : ''
2648 type = tuple.length() >= 5 ? tuple[4] : ''
2649 defs = tuple.length() >= 6 ? tuple[5] : []
2650 incs = tuple.length() >= 7 ? tuple[6] : includes
2651 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002652
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002653 name = sources[0].split('/')[-1].split('.')[0]
2654 if type.startswith('timeout=')
2655 timeout = type.split('=')[1].to_int()
2656 type = ''
2657 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002658
2659 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002660 exe = executable(
2661 name,
2662 sources,
2663 include_directories : incs,
2664 link_with : link_with,
2665 dependencies : dependencies,
2666 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002667 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002668 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002669 install : install_tests,
2670 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002671
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002672 if type == 'manual'
2673 message('@0@ is a manual test'.format(name))
2674 elif type == 'unsafe' and want_tests != 'unsafe'
2675 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002676 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002677 test(name, exe,
2678 env : test_env,
2679 timeout : timeout)
2680 endif
2681 else
2682 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2683 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002684endforeach
2685
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002686exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002687 'test-libsystemd-sym',
2688 test_libsystemd_sym_c,
2689 include_directories : includes,
2690 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002691 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002692 install : install_tests,
2693 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002694if want_tests != 'false'
2695 test('test-libsystemd-sym', exe)
2696endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002697
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002698exe = executable(
2699 'test-libsystemd-static-sym',
2700 test_libsystemd_sym_c,
2701 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002702 link_with : [install_libsystemd_static],
2703 dependencies : [threads], # threads is already included in dependencies on the library,
2704 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002705 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002706 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002707 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002708if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002709 test('test-libsystemd-static-sym', exe)
2710endif
2711
2712exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002713 'test-libudev-sym',
2714 test_libudev_sym_c,
2715 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002716 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002717 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002718 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002719 install : install_tests,
2720 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002721if want_tests != 'false'
2722 test('test-libudev-sym', exe)
2723endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002724
2725exe = executable(
2726 'test-libudev-static-sym',
2727 test_libudev_sym_c,
2728 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002729 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002730 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002731 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002732 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002733 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002734if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002735 test('test-libudev-static-sym', exe)
2736endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002737
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002738############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002739
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002740fuzzer_exes = []
2741
2742foreach tuple : fuzzers
2743 sources = tuple[0]
2744 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2745 dependencies = tuple[2]
2746 defs = tuple.length() >= 4 ? tuple[3] : []
2747 incs = tuple.length() >= 5 ? tuple[4] : includes
2748
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002749 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002750 dependencies += fuzzing_engine
2751 else
2752 sources += 'src/fuzz/fuzz-main.c'
2753 endif
2754
2755 name = sources[0].split('/')[-1].split('.')[0]
2756
2757 fuzzer_exes += executable(
2758 name,
2759 sources,
2760 include_directories : [incs, include_directories('src/fuzz')],
2761 link_with : link_with,
2762 dependencies : dependencies,
2763 c_args : defs,
2764 install : false)
2765endforeach
2766
2767run_target('fuzzers',
2768 depends : fuzzer_exes,
2769 command : ['true'])
2770
2771############################################################
2772
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002773make_directive_index_py = find_program('tools/make-directive-index.py')
2774make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002775xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002776hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002777
2778subdir('units')
2779subdir('sysctl.d')
2780subdir('sysusers.d')
2781subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002782subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002783subdir('hwdb')
2784subdir('network')
2785subdir('man')
2786subdir('shell-completion/bash')
2787subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002788subdir('docs/sysvinit')
2789subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002790
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002791install_subdir('factory/etc',
2792 install_dir : factorydir)
2793
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002794install_data('xorg/50-systemd-user.sh',
2795 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002796install_data('modprobe.d/systemd.conf',
2797 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002798install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002799 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002800 'NEWS',
2801 'README',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002802 'docs/CODING_STYLE',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002803 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002804 'docs/ENVIRONMENT.md',
2805 'docs/HACKING',
2806 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002807 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002808 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002809 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2810 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002811
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002812meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2813meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2814
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002815############################################################
2816
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002817meson_check_help = find_program('tools/meson-check-help.sh')
2818
2819foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002820 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002821 if want_tests != 'false'
2822 test('check-help-' + name,
2823 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002824 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002825 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002826endforeach
2827
2828############################################################
2829
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002830# Enable tests for all supported sanitizers
2831foreach tuple : sanitizers
2832 sanitizer = tuple[0]
2833 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002834
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002835 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002836 prev = ''
2837 foreach p : fuzz_regression_tests
2838 b = p.split('/')[-2]
2839 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002840
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002841 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002842
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002843 if name != prev
2844 if want_tests == 'false'
2845 message('Not compiling @0@ because tests is set to false'.format(name))
2846 elif slow_tests
2847 exe = custom_target(
2848 name,
2849 output : name,
2850 depends : build,
2851 command : [env, 'ln', '-fs',
2852 join_paths(build.full_path(), b),
2853 '@OUTPUT@'],
2854 build_by_default : true)
2855 else
2856 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2857 endif
2858 endif
2859 prev = name
2860
2861 if want_tests != 'false' and slow_tests
2862 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2863 env,
2864 args : [exe.full_path(),
Zbigniew Jędrzejewski-Szmeke6bad672018-08-10 17:15:05 +02002865 join_paths(meson.source_root(), p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002866 endif
2867 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002868 endif
2869endforeach
2870
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002871
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002872############################################################
2873
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002874if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002875 all_files = run_command(
2876 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002877 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002878 'ls-files',
2879 ':/*.[ch]'])
2880 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002881
userwithuide85a6902017-08-09 13:41:44 +00002882 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002883 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002884 output : 'tags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002885 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.source_root())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00002886 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002887 'ctags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002888 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.source_root())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002889endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002890
2891if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002892 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002893 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002894 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002895 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002896endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002897
2898if git.found()
2899 git_head = run_command(
2900 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002901 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002902 'rev-parse', 'HEAD']).stdout().strip()
2903 git_head_short = run_command(
2904 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002905 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002906 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2907
2908 run_target(
2909 'git-snapshot',
2910 command : ['git', 'archive',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002911 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.source_root(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002912 git_head_short),
2913 '--prefix', 'systemd-@0@/'.format(git_head),
2914 'HEAD'])
2915endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002916
2917############################################################
2918
Lennart Poettering51b13862017-12-20 12:51:14 +01002919meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2920run_target(
2921 'check-api-docs',
2922 depends : [man, libsystemd, libudev],
2923 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2924
Lennart Poettering0bc7a222018-10-02 09:53:05 +02002925run_target(
2926 'make-index-md',
2927 command : ['sh', '@0@/tools/make-index-md.sh'.format(meson.source_root()), meson.source_root()])
2928
Lennart Poettering51b13862017-12-20 12:51:14 +01002929############################################################
2930
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002931status = [
2932 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2933
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002934 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002935 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002936 'prefix directory: @0@'.format(prefixdir),
2937 'rootprefix directory: @0@'.format(rootprefixdir),
2938 'sysconf directory: @0@'.format(sysconfdir),
2939 'include directory: @0@'.format(includedir),
2940 'lib directory: @0@'.format(libdir),
2941 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002942 'SysV init scripts: @0@'.format(sysvinit_path),
2943 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002944 'PAM modules directory: @0@'.format(pamlibdir),
2945 'PAM configuration directory: @0@'.format(pamconfdir),
2946 'RPM macros directory: @0@'.format(rpmmacrosdir),
2947 'modprobe.d directory: @0@'.format(modprobedir),
2948 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2949 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2950 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2951 'bash completions directory: @0@'.format(bashcompletiondir),
2952 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002953 'extra start script: @0@'.format(get_option('rc-local')),
2954 'extra stop script: @0@'.format(get_option('halt-local')),
2955 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2956 get_option('debug-tty')),
2957 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09002958 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002959 'maximum system UID: @0@'.format(system_uid_max),
2960 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002961 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2962 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2963 'minimum container UID base: @0@'.format(container_uid_base_min),
2964 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002965 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002966 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002967 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002968 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002969 'nobody user name: @0@'.format(nobody_user),
2970 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002971 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002972 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002973
2974 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02002975 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002976 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2977 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2978
2979alt_dns_servers = '\n '.join(dns_servers.split(' '))
2980alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2981status += [
2982 'default DNS servers: @0@'.format(alt_dns_servers),
2983 'default NTP servers: @0@'.format(alt_ntp_servers)]
2984
2985alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2986 '@@0@'.format(time_epoch)).stdout().strip()
2987status += [
2988 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2989
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02002990status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02002991 'static libsystemd: @0@'.format(static_libsystemd),
2992 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02002993
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002994# TODO:
2995# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2996# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2997# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2998
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002999if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003000 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003001
3002 if have_gnu_efi
3003 status += [
3004 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
3005 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09003006 'EFI lib directory: @0@'.format(efi_libdir),
3007 'EFI lds directory: @0@'.format(efi_ldsdir),
3008 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003009 endif
3010endif
3011
3012found = []
3013missing = []
3014
3015foreach tuple : [
3016 ['libcryptsetup'],
3017 ['PAM'],
3018 ['AUDIT'],
3019 ['IMA'],
3020 ['AppArmor'],
3021 ['SELinux'],
3022 ['SECCOMP'],
3023 ['SMACK'],
3024 ['zlib'],
3025 ['xz'],
3026 ['lz4'],
3027 ['bzip2'],
3028 ['ACL'],
3029 ['gcrypt'],
3030 ['qrencode'],
3031 ['microhttpd'],
3032 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003033 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003034 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003035 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003036 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003037 ['libidn'],
3038 ['libiptc'],
3039 ['elfutils'],
3040 ['binfmt'],
3041 ['vconsole'],
3042 ['quotacheck'],
3043 ['tmpfiles'],
3044 ['environment.d'],
3045 ['sysusers'],
3046 ['firstboot'],
3047 ['randomseed'],
3048 ['backlight'],
3049 ['rfkill'],
3050 ['logind'],
3051 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003052 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003053 ['importd'],
3054 ['hostnamed'],
3055 ['timedated'],
3056 ['timesyncd'],
3057 ['localed'],
3058 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003059 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003060 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3061 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003062 ['coredump'],
3063 ['polkit'],
3064 ['legacy pkla', install_polkit_pkla],
3065 ['efi'],
3066 ['gnu-efi', have_gnu_efi],
3067 ['kmod'],
3068 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003069 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003070 ['blkid'],
3071 ['dbus'],
3072 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003073 ['nss-myhostname'],
3074 ['nss-mymachines'],
3075 ['nss-resolve'],
3076 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003077 ['hwdb'],
3078 ['tpm'],
3079 ['man pages', want_man],
3080 ['html pages', want_html],
3081 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003082 ['SysV compat'],
3083 ['utmp'],
3084 ['ldconfig'],
3085 ['hibernate'],
3086 ['adm group', get_option('adm-group')],
3087 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003088 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003089 ['debug hashmap'],
3090 ['debug mmap cache'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003091 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003092 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003093 ['link-udev-shared', get_option('link-udev-shared')],
3094 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003095]
3096
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003097 if tuple.length() >= 2
3098 cond = tuple[1]
3099 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003100 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3101 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003102 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003103 endif
3104 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003105 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003106 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003107 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003108 endif
3109endforeach
3110
3111status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003112 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003113 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003114 '',
3115 'disabled features: @0@'.format(', '.join(missing)),
3116 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003117message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003118
3119if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003120 warning('\n' +
3121 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3122 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3123 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003124endif