blob: 5cf2fc266458a4abb4dbf3e81834e38535a42a51 [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 Poettering67bee562018-12-21 14:58:49 +01004 version : '240',
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 Poettering67bee562018-12-21 14:58:49 +010015libsystemd_version = '0.24.0'
16libudev_version = '1.6.12'
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()
Zbigniew Jędrzejewski-Szmeka67c3182018-12-19 11:23:42 +010023conf.set('PROJECT_VERSION', meson.project_version())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040024
25substs = configuration_data()
Zbigniew Jędrzejewski-Szmeka67c3182018-12-19 11:23:42 +010026substs.set('PROJECT_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
27substs.set('PROJECT_VERSION', meson.project_version())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040028
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020029want_ossfuzz = get_option('oss-fuzz')
30want_libfuzzer = get_option('llvm-fuzz')
31if want_ossfuzz and want_libfuzzer
32 error('only one of oss-fuzz and llvm-fuzz can be specified')
33endif
34fuzzer_build = want_ossfuzz or want_libfuzzer
35
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040036#####################################################################
37
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040038# Try to install the git pre-commit hook
39git_hook = run_command(join_paths(meson.source_root(), 'tools/add-git-hook.sh'))
40if git_hook.returncode() == 0
41 message(git_hook.stdout().strip())
42endif
43
44#####################################################################
45
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010046if get_option('split-usr') == 'auto'
47 split_usr = run_command('test', '-L', '/bin').returncode() != 0
48else
49 split_usr = get_option('split-usr') == 'true'
50endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010051conf.set10('HAVE_SPLIT_USR', split_usr,
52 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010053
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010054if get_option('split-bin') == 'auto'
55 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
56else
57 split_bin = get_option('split-bin') == 'true'
58endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010059conf.set10('HAVE_SPLIT_BIN', split_bin,
60 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010061
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010062rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010063# Unusual rootprefixdir values are used by some distros
64# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010065rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010066if rootprefixdir == ''
67 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010068endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040069
70sysvinit_path = get_option('sysvinit-path')
71sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090072conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020073 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040074
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020075conf.set10('BUMP_PROC_SYS_FS_FILE_MAX', get_option('bump-proc-sys-fs-file-max'))
76conf.set10('BUMP_PROC_SYS_FS_NR_OPEN', get_option('bump-proc-sys-fs-nr-open'))
Lennart Poettering09dad042018-11-15 09:50:42 +010077conf.set('HIGH_RLIMIT_NOFILE', 512*1024)
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020078
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'))
Lennart Poettering1d7579c2018-10-10 21:20:08 +0200229conf.set_quoted('SYSTEMD_IMPORT_FS_PATH', join_paths(rootlibexecdir, 'systemd-import-fs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400230conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
231conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
232conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
233conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek30538ff2018-10-17 14:36:09 +0200234conf.set10('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default)
Michal Koutný7f672e82018-03-09 18:27:13 +0100235conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400236
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400237substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400238substs.set('exec_prefix', prefixdir)
239substs.set('libdir', libdir)
240substs.set('rootlibdir', rootlibdir)
241substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400242substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400243substs.set('bindir', bindir)
244substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400245substs.set('rootlibexecdir', rootlibexecdir)
246substs.set('systemunitdir', systemunitdir)
247substs.set('userunitdir', userunitdir)
248substs.set('systempresetdir', systempresetdir)
249substs.set('userpresetdir', userpresetdir)
250substs.set('udevhwdbdir', udevhwdbdir)
251substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400252substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200253substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400254substs.set('catalogdir', catalogdir)
255substs.set('tmpfilesdir', tmpfilesdir)
256substs.set('sysusersdir', sysusersdir)
257substs.set('sysctldir', sysctldir)
258substs.set('binfmtdir', binfmtdir)
259substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200260substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400261substs.set('systemgeneratordir', systemgeneratordir)
262substs.set('usergeneratordir', usergeneratordir)
263substs.set('systemenvgeneratordir', systemenvgeneratordir)
264substs.set('userenvgeneratordir', userenvgeneratordir)
265substs.set('systemshutdowndir', systemshutdowndir)
266substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400267substs.set('VARLOGDIR', varlogdir)
268substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400269substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
270substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400271substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
272substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
273substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
274substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100275substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +0200276substs.set('HIGH_RLIMIT_NOFILE', conf.get('HIGH_RLIMIT_NOFILE'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400277
278#####################################################################
279
280cc = meson.get_compiler('c')
281pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400282check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100283meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400284
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200285want_tests = get_option('tests')
286slow_tests = want_tests != 'false' and get_option('slow-tests')
287install_tests = get_option('install-tests')
288
James Hilliard46e63a22018-12-27 09:16:20 +0800289if add_languages('cpp', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200290 # Used only for tests
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
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900362if cc.get_id() == 'clang'
363 possible_cc_flags += [
364 '-Wno-typedef-redefinition',
365 '-Wno-gnu-variable-sized-type-not-at-end',
366 ]
367endif
368
369if get_option('buildtype') != 'debug'
370 possible_cc_flags += [
371 '-ffunction-sections',
372 '-fdata-sections',
373 ]
374
375 possible_link_flags += '-Wl,--gc-sections'
376endif
377
378add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900379add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900380
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800381if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400382 #include <time.h>
383 #include <inttypes.h>
384 typedef uint64_t usec_t;
385 usec_t now(clockid_t clock);
386 int main(void) {
387 struct timespec now;
388 return 0;
389 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100390''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400391 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400392endif
393
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200394cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400395
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400396#####################################################################
397# compilation result tests
398
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400399conf.set('_GNU_SOURCE', true)
400conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400401
402conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
403conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
404conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
405conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
406conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
407conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
408conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
409
410decl_headers = '''
411#include <uchar.h>
412#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000413#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100414#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400415'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400416
417foreach decl : ['char16_t',
418 'char32_t',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000419 'struct fib_rule_uid_range',
Susant Sahani926062f2018-11-27 10:58:54 +0530420 'struct fib_rule_port_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100421 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400422 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400423
424 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200425 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
426
427 if decl == 'struct statx'
428 if have
429 want_linux_stat_h = false
430 else
431 have = cc.sizeof(decl,
432 prefix : decl_headers + '#include <linux/stat.h>',
433 args : '-D_GNU_SOURCE') > 0
434 want_linux_stat_h = have
435 endif
436 endif
437
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200438 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400439endforeach
440
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200441conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700442
Yu Watanabe9714c022018-12-02 16:27:02 +0100443foreach decl : [['ETHTOOL_LINK_MODE_10baseT_Half_BIT', 'linux/ethtool.h'],
Yu Watanabe8a716f22018-11-17 23:42:27 +0900444 ['ETHTOOL_LINK_MODE_25000baseCR_Full_BIT', 'linux/ethtool.h'],
445 ['ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT', 'linux/ethtool.h'],
446 ['ETHTOOL_LINK_MODE_1000baseX_Full_BIT', 'linux/ethtool.h'],
447 ['ETHTOOL_LINK_MODE_2500baseT_Full_BIT', 'linux/ethtool.h'],
448 ['ETHTOOL_LINK_MODE_FEC_NONE_BIT', 'linux/ethtool.h'],
Yu Watanabeb6459df2018-12-04 01:28:23 +0100449 ['FRA_TUN_ID', 'linux/fib_rules.h'],
450 ['FRA_SUPPRESS_PREFIXLEN', 'linux/fib_rules.h'],
Yu Watanabe9714c022018-12-02 16:27:02 +0100451 ['FRA_PAD', 'linux/fib_rules.h'],
452 ['FRA_L3MDEV', 'linux/fib_rules.h'],
453 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
454 ['FRA_DPORT_RANGE', 'linux/fib_rules.h'],
455 ['FOU_ATTR_REMCSUM_NOPARTIAL', 'linux/fou.h'],
456 ['FOU_CMD_GET', 'linux/fou.h'],
457 ['IFA_FLAGS', 'linux/if_addr.h'],
458 ['IFLA_BRIDGE_VLAN_TUNNEL_INFO', 'linux/if_bridge.h'],
459 ['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
460 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
461 ['IN6_ADDR_GEN_MODE_RANDOM', 'linux/if_link.h'],
462 ['IFLA_IPVLAN_MODE', 'linux/if_link.h'],
463 ['IPVLAN_MODE_L3S', 'linux/if_link.h'],
464 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
465 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
466 ['IFLA_CARRIER_CHANGES', 'linux/if_link.h'],
467 ['IFLA_PHYS_SWITCH_ID', 'linux/if_link.h'],
468 ['IFLA_LINK_NETNSID', 'linux/if_link.h'],
469 ['IFLA_PHYS_PORT_NAME', 'linux/if_link.h'],
470 ['IFLA_PROTO_DOWN', 'linux/if_link.h'],
471 ['IFLA_GSO_MAX_SIZE', 'linux/if_link.h'],
472 ['IFLA_PAD', 'linux/if_link.h'],
473 ['IFLA_XDP', 'linux/if_link.h'],
474 ['IFLA_EVENT', 'linux/if_link.h'],
475 ['IFLA_IF_NETNSID', 'linux/if_link.h'],
476 ['IFLA_TARGET_NETNSID', 'linux/if_link.h'],
477 ['IFLA_NEW_IFINDEX', 'linux/if_link.h'],
478 ['IFLA_MAX_MTU', 'linux/if_link.h'],
Fabrice Fontaine6a9eb112019-01-11 17:08:48 +0100479 ['IFLA_BOND_MODE', 'linux/if_link.h'],
Yu Watanabe9714c022018-12-02 16:27:02 +0100480 ['IFLA_BOND_ACTIVE_SLAVE', 'linux/if_link.h'],
481 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
482 ['IFLA_BOND_AD_ACTOR_SYSTEM', 'linux/if_link.h'],
483 ['IFLA_BOND_TLB_DYNAMIC_LB', 'linux/if_link.h'],
484 ['IFLA_VXLAN_UDP_ZERO_CSUM6_RX', 'linux/if_link.h'],
485 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
486 ['IFLA_VXLAN_COLLECT_METADATA', 'linux/if_link.h'],
487 ['IFLA_VXLAN_LABEL', 'linux/if_link.h'],
488 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
489 ['IFLA_VXLAN_TTL_INHERIT', 'linux/if_link.h'],
490 ['IFLA_GENEVE_TOS', 'linux/if_link.h'],
491 ['IFLA_GENEVE_COLLECT_METADATA', 'linux/if_link.h'],
492 ['IFLA_GENEVE_REMOTE6', 'linux/if_link.h'],
493 ['IFLA_GENEVE_UDP_ZERO_CSUM6_RX', 'linux/if_link.h'],
494 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
495 ['IFLA_GENEVE_TTL_INHERIT', 'linux/if_link.h'],
496 ['IFLA_BR_MAX_AGE', 'linux/if_link.h'],
497 ['IFLA_BR_PRIORITY', 'linux/if_link.h'],
498 ['IFLA_BR_VLAN_PROTOCOL', 'linux/if_link.h'],
499 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
500 ['IFLA_BR_VLAN_STATS_ENABLED', 'linux/if_link.h'],
501 ['IFLA_BR_MCAST_STATS_ENABLED', 'linux/if_link.h'],
502 ['IFLA_BR_MCAST_MLD_VERSION', 'linux/if_link.h'],
503 ['IFLA_BR_VLAN_STATS_PER_PORT', 'linux/if_link.h'],
504 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
505 ['IFLA_BRPORT_PROXYARP_WIFI', 'linux/if_link.h'],
506 ['IFLA_BRPORT_MULTICAST_ROUTER', 'linux/if_link.h'],
507 ['IFLA_BRPORT_PAD', 'linux/if_link.h'],
508 ['IFLA_BRPORT_MCAST_FLOOD', 'linux/if_link.h'],
509 ['IFLA_BRPORT_VLAN_TUNNEL', 'linux/if_link.h'],
510 ['IFLA_BRPORT_BCAST_FLOOD', 'linux/if_link.h'],
511 ['IFLA_BRPORT_NEIGH_SUPPRESS', 'linux/if_link.h'],
512 ['IFLA_BRPORT_ISOLATED', 'linux/if_link.h'],
513 ['IFLA_BRPORT_BACKUP_PORT', 'linux/if_link.h'],
514 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
515 # if_tunnel.h is buggy and cannot be included on its own
516 ['IFLA_VTI_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
517 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
518 ['IFLA_IPTUN_COLLECT_METADATA', 'linux/if_tunnel.h', '#include <net/if.h>'],
519 ['IFLA_IPTUN_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
520 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
521 ['IFLA_GRE_COLLECT_METADATA', 'linux/if_tunnel.h', '#include <net/if.h>'],
522 ['IFLA_GRE_IGNORE_DF', 'linux/if_tunnel.h', '#include <net/if.h>'],
523 ['IFLA_GRE_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
524 ['IFLA_GRE_ERSPAN_INDEX', 'linux/if_tunnel.h', '#include <net/if.h>'],
525 ['IFLA_GRE_ERSPAN_HWID', 'linux/if_tunnel.h', '#include <net/if.h>'],
526 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400527 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400528 prefix = decl.length() > 2 ? decl[2] : ''
529 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200530 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400531endforeach
532
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400533foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200534 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400535endforeach
536
537foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100538 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100539 ['gettid', '''#include <sys/types.h>
540 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100541 ['pivot_root', '''#include <stdlib.h>
542 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100543 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400544 #include <sys/stat.h>
545 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100546 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100547 ['renameat2', '''#include <stdio.h>
548 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400549 ['kcmp', '''#include <linux/kcmp.h>'''],
550 ['keyctl', '''#include <sys/types.h>
551 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100552 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400553 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200554 ['bpf', '''#include <sys/syscall.h>
555 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100556 ['statx', '''#include <sys/types.h>
557 #include <sys/stat.h>
558 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100559 ['explicit_bzero' , '''#include <string.h>'''],
560 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400561]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400562
Lennart Poettering85db59b2017-12-25 12:01:14 +0100563 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200564 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400565endforeach
566
Lennart Poettering85db59b2017-12-25 12:01:14 +0100567if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200568 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200569 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400570else
571 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200572 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200573 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400574endif
575
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400576#####################################################################
577
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100578vcs_tagger = [meson.source_root() + '/tools/meson-vcs-tag.sh',
Zbigniew Jędrzejewski-Szmeke4d57532018-12-19 13:25:07 +0100579 meson.source_root(),
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100580 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100581 meson.project_version()]
582
Louis Taylord1084aa2019-01-21 21:45:36 +0000583version_h = vcs_tag(
584 input : 'src/version/version.h.in',
585 output : 'version.h',
586 command: vcs_tagger)
587
588versiondep = declare_dependency(sources: version_h)
589
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400590sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400591awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400592m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400593stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400594git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100595env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100596perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400597
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400598meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400599mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400600test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
601splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400602
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400603# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
604# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500605progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400606 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400607 ['kmod', '/usr/bin/kmod' ],
608 ['kexec', '/usr/sbin/kexec' ],
609 ['sulogin', '/usr/sbin/sulogin' ],
610 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
611 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
612 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
613 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
614 ]
615foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400616 path = get_option(prog[0] + '-path')
617 if path != ''
618 message('Using @1@ for @0@'.format(prog[0], path))
619 else
620 exe = find_program(prog[0],
621 '/usr/sbin/' + prog[0],
622 '/sbin/' + prog[0],
623 required: false)
624 path = exe.found() ? exe.path() : prog[1]
625 endif
626 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
627 conf.set_quoted(name, path)
628 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400629endforeach
630
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500631conf.set_quoted('TELINIT', get_option('telinit-path'))
632
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400633if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100634 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400635endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400636
637############################################################
638
639gperf = find_program('gperf')
640
641gperf_test_format = '''
642#include <string.h>
643const char * in_word_set(const char *, @0@);
644@1@
645'''
646gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
647gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
648gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
649if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400650 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400651else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400652 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
653 if cc.compiles(gperf_test)
654 gperf_len_type = 'unsigned'
655 else
656 error('unable to determine gperf len type')
657 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400658endif
659message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400660conf.set('GPERF_LEN_TYPE', gperf_len_type,
661 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400662
663############################################################
664
665if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400666 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400667endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100668foreach header : ['crypt.h',
Yu Watanabeb9683ba2018-12-04 07:46:59 +0100669 'linux/btrfs_tree.h',
Yu Watanabe80df8f22018-10-21 18:35:46 +0900670 'linux/fou.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400671 'linux/memfd.h',
672 'linux/vm_sockets.h',
Yu Watanabe9714c022018-12-02 16:27:02 +0100673 'linux/can/vxcan.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200674 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400675 'valgrind/memcheck.h',
676 'valgrind/valgrind.h',
677 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400678
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200679 conf.set10('HAVE_' + header.underscorify().to_upper(),
680 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400681endforeach
682
683############################################################
684
685conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400686conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
687gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400688
689default_hierarchy = get_option('default-hierarchy')
690conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
691 description : 'default cgroup hierarchy as string')
692if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400693 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400694elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400695 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400696else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400697 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400698endif
699
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100700default_net_naming_scheme = get_option('default-net-naming-scheme')
701conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
702
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400703time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900704if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400705 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900706 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400707endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400708conf.set('TIME_EPOCH', time_epoch)
709
710system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900711if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400712 system_uid_max = run_command(
713 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800714 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
715 '/etc/login.defs').stdout().strip()
716 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900717 system_uid_max = 999
718 else
719 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800720 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400721endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400722conf.set('SYSTEM_UID_MAX', system_uid_max)
723substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400724
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400725system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900726if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400727 system_gid_max = run_command(
728 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800729 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
730 '/etc/login.defs').stdout().strip()
731 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900732 system_gid_max = 999
733 else
734 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800735 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400736endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400737conf.set('SYSTEM_GID_MAX', system_gid_max)
738substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400739
Yu Watanabeac093402018-05-10 16:04:16 +0900740dynamic_uid_min = get_option('dynamic-uid-min')
741dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100742conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
743conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
744substs.set('dynamicuidmin', dynamic_uid_min)
745substs.set('dynamicuidmax', dynamic_uid_max)
746
Yu Watanabeac093402018-05-10 16:04:16 +0900747container_uid_base_min = get_option('container-uid-base-min')
748container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100749conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
750conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
751substs.set('containeruidbasemin', container_uid_base_min)
752substs.set('containeruidbasemax', container_uid_base_max)
753
Lennart Poetteringafde4572017-12-05 11:00:24 +0100754nobody_user = get_option('nobody-user')
755nobody_group = get_option('nobody-group')
756
Chen Qi2484bff2018-07-23 14:53:09 +0800757if not meson.is_cross_build()
758 getent_result = run_command('getent', 'passwd', '65534')
759 if getent_result.returncode() == 0
760 name = getent_result.stdout().split(':')[0]
761 if name != nobody_user
762 warning('\n' +
763 '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) +
764 'Your build will result in an user table setup that is incompatible with the local system.')
765 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100766 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800767 id_result = run_command('id', '-u', nobody_user)
768 if id_result.returncode() == 0
769 id = id_result.stdout().to_int()
770 if id != 65534
771 warning('\n' +
772 '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) +
773 'Your build will result in an user table setup that is incompatible with the local system.')
774 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100775 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100776
Chen Qi2484bff2018-07-23 14:53:09 +0800777 getent_result = run_command('getent', 'group', '65534')
778 if getent_result.returncode() == 0
779 name = getent_result.stdout().split(':')[0]
780 if name != nobody_group
781 warning('\n' +
782 '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) +
783 'Your build will result in an group table setup that is incompatible with the local system.')
784 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100785 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800786 id_result = run_command('id', '-g', nobody_group)
787 if id_result.returncode() == 0
788 id = id_result.stdout().to_int()
789 if id != 65534
790 warning('\n' +
791 '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) +
792 'Your build will result in an group table setup that is incompatible with the local system.')
793 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100794 endif
795endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900796if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900797 warning('\n' +
798 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
799 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900800endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100801
802conf.set_quoted('NOBODY_USER_NAME', nobody_user)
803conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900804substs.set('NOBODY_USER_NAME', nobody_user)
805substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100806
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400807tty_gid = get_option('tty-gid')
808conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400809substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400810
Ikey Doherty84786b82017-12-03 12:28:23 +0000811# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900812users_gid = get_option('users-gid')
813substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000814
Yu Watanabe348b4432018-05-07 18:17:35 +0900815conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
816conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400817
Michael Bieblace5e312018-07-13 23:36:13 +0200818dev_kvm_mode = get_option('dev-kvm-mode')
819substs.set('DEV_KVM_MODE', dev_kvm_mode)
820conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Tom Stellard4e15a732017-10-31 08:46:24 -0700821substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400822
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400823kill_user_processes = get_option('default-kill-user-processes')
824conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100825conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400826substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400827
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400828dns_servers = get_option('dns-servers')
829conf.set_quoted('DNS_SERVERS', dns_servers)
830substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400831
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400832ntp_servers = get_option('ntp-servers')
833conf.set_quoted('NTP_SERVERS', ntp_servers)
834substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400835
Dave Reisner8ca9e922018-12-28 07:38:36 -0500836default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900837if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800838 if not meson.is_cross_build()
839 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
840 default_locale = run_command(choose_default_locale_sh).stdout().strip()
841 else
842 default_locale = 'C.UTF-8'
843 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900844endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500845conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
846
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400847conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
848
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400849substs.set('SUSHELL', get_option('debug-shell'))
850substs.set('DEBUGTTY', get_option('debug-tty'))
851
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200852enable_debug_hashmap = false
853enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900854enable_debug_siphash = false
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900855enable_debug_udev = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200856foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900857 if name == 'hashmap'
858 enable_debug_hashmap = true
859 elif name == 'mmap-cache'
860 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900861 elif name == 'siphash'
862 enable_debug_siphash = true
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900863 elif name == 'udev'
864 enable_debug_udev = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900865 else
866 message('unknown debug option "@0@", ignoring'.format(name))
867 endif
868endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200869conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
870conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900871conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900872conf.set10('ENABLE_DEBUG_UDEV', enable_debug_udev)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400873
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200874conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200875conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200876
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400877#####################################################################
878
879threads = dependency('threads')
880librt = cc.find_library('rt')
881libm = cc.find_library('m')
882libdl = cc.find_library('dl')
883libcrypt = cc.find_library('crypt')
884
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400885libcap = dependency('libcap', required : false)
886if not libcap.found()
887 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
888 libcap = cc.find_library('cap')
889endif
890
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400891libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100892 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400893
894want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500895if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400896 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400897 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400898 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200899 have = libseccomp.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 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400903endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200904conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400905
906want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500907if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400908 libselinux = dependency('libselinux',
909 version : '>= 2.1.9',
910 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200911 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400912else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200913 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400914 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400915endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200916conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400917
918want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500919if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400920 libapparmor = dependency('libapparmor',
921 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200922 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400923else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200924 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400925 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400926endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200927conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400928
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400929smack_run_label = get_option('smack-run-label')
930if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400931 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400932endif
933
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400934want_polkit = get_option('polkit')
935install_polkit = false
936install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500937if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400938 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400939
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400940 libpolkit = dependency('polkit-gobject-1',
941 required : false)
942 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
943 message('Old polkit detected, will install pkla files')
944 install_polkit_pkla = true
945 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400946endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200947conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400948
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400949want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500950if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400951 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200952 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400953else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200954 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400955 libacl = []
956endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200957conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400958
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400959want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500960if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400961 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200962 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400963else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200964 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400965 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400966endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200967conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400968
969want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500970if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400971 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200972 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400973else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200974 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400975 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400976endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200977conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400978
979want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500980if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400981 libkmod = dependency('libkmod',
982 version : '>= 15',
983 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200984 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400985else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200986 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400987 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400988endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200989conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400990
991want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500992if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400993 libpam = cc.find_library('pam', required : want_pam == 'true')
994 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200995 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400996else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200997 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400998 libpam = []
999 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001000endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001001conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001002
1003want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001004if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001005 libmicrohttpd = dependency('libmicrohttpd',
1006 version : '>= 0.9.33',
1007 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001008 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001009else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001010 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001011 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001012endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001013conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001014
1015want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001016if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001017 libcryptsetup = dependency('libcryptsetup',
1018 version : '>= 1.6.0',
1019 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001020 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001021 have_sector = cc.has_member(
1022 'struct crypt_params_plain',
1023 'sector_size',
1024 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001025else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001026 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001027 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001028 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001029endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001030conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001031conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001032
1033want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001034if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001035 libcurl = dependency('libcurl',
1036 version : '>= 7.32.0',
1037 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001038 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001039else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001040 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001041 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001042endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001043conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001044
1045want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001046want_libidn2 = get_option('libidn2')
1047if want_libidn == 'true' and want_libidn2 == 'true'
1048 error('libidn and libidn2 cannot be requested simultaneously')
1049endif
1050
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001051if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001052 libidn = dependency('libidn',
1053 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001054 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001055else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001056 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001057 libidn = []
1058endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001059conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001060if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001061 # libidn is used for both libidn and libidn2 objects
1062 libidn = dependency('libidn2',
1063 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001064 have = libidn.found()
1065else
1066 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001067endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001068conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001069
1070want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001071if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001072 libiptc = dependency('libiptc',
1073 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001074 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001075else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001076 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001077 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001078endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001079conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001080
1081want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001082if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001083 libqrencode = dependency('libqrencode',
1084 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001085 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001086else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001087 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001088 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001089endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001090conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001091
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001092want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001093if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001094 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1095 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001096 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001097else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001098 have = false
1099endif
1100if not have
1101 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001102 libgcrypt = []
1103 libgpg_error = []
1104endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001105conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001106
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001107want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001108if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001109 libgnutls = dependency('gnutls',
1110 version : '>= 3.1.4',
1111 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001112 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001113else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001114 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001115 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001116endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001117conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001118
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001119want_openssl = get_option('openssl')
1120if want_openssl != 'false' and not fuzzer_build
1121 libopenssl = dependency('openssl',
1122 version : '>= 1.1.0',
1123 required : want_openssl == 'true')
1124 have = libopenssl.found()
1125else
1126 have = false
1127 libopenssl = []
1128endif
1129conf.set10('HAVE_OPENSSL', have)
1130
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001131want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001132if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001133 libdw = dependency('libdw',
1134 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001135 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001136else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001137 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001138 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001139endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001140conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001141
1142want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001143if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001144 libz = dependency('zlib',
1145 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001146 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001147else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001148 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001149 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001150endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001151conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001152
1153want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001154if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001155 libbzip2 = cc.find_library('bz2',
1156 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001157 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001158else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001159 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001160 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001161endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001162conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001163
1164want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001165if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001166 libxz = dependency('liblzma',
1167 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001168 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001169else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001170 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001171 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001172endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001173conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001174
1175want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001176if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001177 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001178 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001179 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001180 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001181else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001182 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001183 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001184endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001185conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001186
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001187want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001188if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001189 libxkbcommon = dependency('xkbcommon',
1190 version : '>= 0.3.0',
1191 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001192 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001193else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001194 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001195 libxkbcommon = []
1196endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001197conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001198
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001199want_pcre2 = get_option('pcre2')
1200if want_pcre2 != 'false'
1201 libpcre2 = dependency('libpcre2-8',
1202 required : want_pcre2 == 'true')
1203 have = libpcre2.found()
1204else
1205 have = false
1206 libpcre2 = []
1207endif
1208conf.set10('HAVE_PCRE2', have)
1209
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001210want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001211if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001212 libglib = dependency('glib-2.0',
1213 version : '>= 2.22.0',
1214 required : want_glib == 'true')
1215 libgobject = dependency('gobject-2.0',
1216 version : '>= 2.22.0',
1217 required : want_glib == 'true')
1218 libgio = dependency('gio-2.0',
1219 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001220 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001221else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001222 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001223 libglib = []
1224 libgobject = []
1225 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001226endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001227conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001228
1229want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001230if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001231 libdbus = dependency('dbus-1',
1232 version : '>= 1.3.2',
1233 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001234 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001235else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001236 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001237 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001238endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001239conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001240
Yu Watanabe42303dc2017-06-18 05:22:32 +09001241default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001242if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001243 default_dnssec = 'no'
1244endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001245if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001246 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1247 default_dnssec = 'no'
1248endif
1249conf.set('DEFAULT_DNSSEC_MODE',
1250 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1251substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1252
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001253dns_over_tls = get_option('dns-over-tls')
1254if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001255 if dns_over_tls == 'openssl'
1256 have_gnutls = false
1257 else
1258 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1259 if dns_over_tls == 'gnutls' and not have_gnutls
1260 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1261 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001262 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001263 if dns_over_tls == 'gnutls' or have_gnutls
1264 have_openssl = false
1265 else
1266 have_openssl = conf.get('HAVE_OPENSSL') == 1
1267 if dns_over_tls != 'auto' and not have_openssl
1268 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
1269 error('DNS-over-TLS support was requested$0$, but dependencies are not available'.format(str))
1270 endif
1271 endif
1272 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001273else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001274 have = false
1275 have_gnutls = false
1276 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001277endif
1278conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001279conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1280conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001281
Iwan Timmerc9299be2018-06-13 20:26:24 +02001282default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001283if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001284 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001285endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001286if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1287 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 +02001288 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001289endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001290conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1291 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1292substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001293
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001294want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001295if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001296 have = (conf.get('HAVE_LIBCURL') == 1 and
1297 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001298 conf.get('HAVE_XZ') == 1 and
1299 conf.get('HAVE_GCRYPT') == 1)
1300 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001301 error('importd support was requested, but dependencies are not available')
1302 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001303else
1304 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001305endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001306conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001307
1308want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001309if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001310 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1311 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001312 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1313 # it's possible to build one without the other. Complain only if
1314 # support was explictly requested. The auxiliary files like sysusers
1315 # config should be installed when any of the programs are built.
1316 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1317 error('remote support was requested, but dependencies are not available')
1318 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001319 have = have_deps[0] or have_deps[1]
1320else
1321 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001322endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001323conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001324
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001325foreach term : ['utmp',
1326 'hibernate',
1327 'environment-d',
1328 'binfmt',
1329 'coredump',
1330 'resolve',
1331 'logind',
1332 'hostnamed',
1333 'localed',
1334 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001335 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001336 'networkd',
1337 'timedated',
1338 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001339 'firstboot',
1340 'randomseed',
1341 'backlight',
1342 'vconsole',
1343 'quotacheck',
1344 'sysusers',
1345 'tmpfiles',
1346 'hwdb',
1347 'rfkill',
1348 'ldconfig',
1349 'efi',
1350 'tpm',
1351 'ima',
1352 'smack',
1353 'gshadow',
1354 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001355 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001356 'nss-systemd']
1357 have = get_option(term)
1358 name = 'ENABLE_' + term.underscorify().to_upper()
1359 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001360endforeach
1361
Yu Watanabe08540a92018-07-18 09:25:57 +09001362foreach tuple : [['nss-mymachines', 'machined'],
1363 ['nss-resolve', 'resolve']]
1364 want = get_option(tuple[0])
1365 if want != 'false'
1366 have = get_option(tuple[1])
1367 if want == 'true' and not have
1368 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1369 endif
1370 else
1371 have = false
1372 endif
1373 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1374 conf.set10(name, have)
1375endforeach
1376
1377enable_nss = false
1378foreach term : ['ENABLE_NSS_MYHOSTNAME',
1379 'ENABLE_NSS_MYMACHINES',
1380 'ENABLE_NSS_RESOLVE',
1381 'ENABLE_NSS_SYSTEMD']
1382 if conf.get(term) == 1
1383 enable_nss = true
1384 endif
1385endforeach
1386conf.set10('ENABLE_NSS', enable_nss)
1387
Yu Watanabe348b4432018-05-07 18:17:35 +09001388conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001389
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001390tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001391fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001392
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001393conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001394
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001395#####################################################################
1396
1397if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001398 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001399
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001400 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001401 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001402 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001403 elif efi_arch == 'x86_64'
1404 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001405 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001406 elif efi_arch == 'arm'
1407 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001408 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001409 elif efi_arch == 'aarch64'
1410 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001411 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001412 else
1413 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001414 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001415 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001416
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001417 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001418 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001419
Yu Watanabeac093402018-05-10 16:04:16 +09001420 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001421else
1422 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001423endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001424conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001425
1426#####################################################################
1427
1428config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001429 output : 'config.h',
1430 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001431
Yu Watanabe348b4432018-05-07 18:17:35 +09001432meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1433
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001434includes = include_directories('src/basic',
1435 'src/shared',
1436 'src/systemd',
1437 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001438 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001439 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001440 'src/resolve',
1441 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001442 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001443 'src/login',
1444 'src/udev',
1445 'src/libudev',
1446 'src/core',
1447 'src/libsystemd/sd-bus',
1448 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001449 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001450 'src/libsystemd/sd-hwdb',
1451 'src/libsystemd/sd-id128',
1452 'src/libsystemd/sd-netlink',
1453 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001454 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001455 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001456 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001457
1458add_project_arguments('-include', 'config.h', language : 'c')
1459
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001460generate_gperfs = find_program('tools/generate-gperfs.py')
1461
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001462subdir('po')
1463subdir('catalog')
1464subdir('src/systemd')
1465subdir('src/basic')
1466subdir('src/libsystemd')
1467subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001468subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001469subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001470
1471libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001472 'journal-core',
1473 libjournal_core_sources,
1474 journald_gperf_c,
1475 include_directories : includes,
1476 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001477
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001478libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001479libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001480 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001481 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001482 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001483 include_directories : includes,
1484 link_args : ['-shared',
1485 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001486 link_with : [libbasic,
1487 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001488 link_whole : [libsystemd_static,
1489 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001490 dependencies : [threads,
1491 librt,
1492 libxz,
1493 liblz4],
1494 link_depends : libsystemd_sym,
1495 install : true,
1496 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001497
Davide Cavalca70848ec2018-04-09 02:43:35 -07001498static_libsystemd = get_option('static-libsystemd')
1499static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1500
1501install_libsystemd_static = static_library(
1502 'systemd',
1503 libsystemd_sources,
1504 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001505 basic_sources,
1506 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001507 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001508 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001509 build_by_default : static_libsystemd != 'false',
1510 install : static_libsystemd != 'false',
1511 install_dir : rootlibdir,
1512 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1513 dependencies : [threads,
1514 librt,
1515 libxz,
1516 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001517 libcap,
1518 libblkid,
1519 libmount,
1520 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001521 libgcrypt],
1522 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1523
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001524############################################################
1525
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001526# binaries that have --help and are intended for use by humans,
1527# usually, but not always, installed in /bin.
1528public_programs = []
1529
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001530subdir('src/libudev')
1531subdir('src/shared')
1532subdir('src/core')
1533subdir('src/udev')
1534subdir('src/network')
1535
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001536subdir('src/analyze')
1537subdir('src/journal-remote')
1538subdir('src/coredump')
1539subdir('src/hostname')
1540subdir('src/import')
1541subdir('src/kernel-install')
1542subdir('src/locale')
1543subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001544subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001545subdir('src/nspawn')
1546subdir('src/resolve')
1547subdir('src/timedate')
1548subdir('src/timesync')
1549subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001550subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001551
1552subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001553subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001554subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001555subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001556
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001557############################################################
1558
1559# only static linking apart from libdl, to make sure that the
1560# module is linked to all libraries that it uses.
1561test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001562 'test-dlopen',
1563 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001564 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001565 include_directories : includes,
1566 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001567 dependencies : [libdl],
1568 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001569
Yu Watanabe08540a92018-07-18 09:25:57 +09001570foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001571 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001572 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1573 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001574
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001575 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001576 if condition
1577 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001578
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001579 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001580 version_script_arg = join_paths(meson.source_root(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001581
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001582 nss = shared_library(
1583 'nss_' + module,
1584 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001585 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001586 version : '2',
1587 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001588 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1589 link_args : ['-Wl,-z,nodelete',
1590 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001591 '-Wl,--version-script=' + version_script_arg,
1592 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001593 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001594 libbasic],
1595 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001596 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001597 link_depends : sym,
1598 install : true,
1599 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001600
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001601 # We cannot use shared_module because it does not support version suffix.
1602 # Unfortunately shared_library insists on creating the symlink…
1603 meson.add_install_script('sh', '-c',
1604 'rm $DESTDIR@0@/libnss_@1@.so'
1605 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001606
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001607 if want_tests != 'false'
1608 test('dlopen-nss_' + module,
1609 test_dlopen,
1610 # path to dlopen must include a slash
1611 args : nss.full_path())
1612 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001613 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001614endforeach
1615
1616############################################################
1617
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001618executable('systemd',
1619 systemd_sources,
1620 include_directories : includes,
1621 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001622 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001623 dependencies : [threads,
1624 librt,
1625 libseccomp,
1626 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001627 libmount,
1628 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001629 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001630 install : true,
1631 install_dir : rootlibexecdir)
1632
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001633meson.add_install_script(meson_make_symlink,
1634 join_paths(rootlibexecdir, 'systemd'),
1635 join_paths(rootsbindir, 'init'))
1636
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001637exe = executable('systemd-analyze',
1638 systemd_analyze_sources,
1639 include_directories : includes,
1640 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001641 libshared],
1642 dependencies : [threads,
1643 librt,
1644 libseccomp,
1645 libselinux,
1646 libmount,
1647 libblkid],
1648 install_rpath : rootlibexecdir,
1649 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001650public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001651
1652executable('systemd-journald',
1653 systemd_journald_sources,
1654 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001655 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001656 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001657 dependencies : [threads,
1658 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001659 liblz4,
1660 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001661 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001662 install : true,
1663 install_dir : rootlibexecdir)
1664
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001665exe = executable('systemd-cat',
1666 systemd_cat_sources,
1667 include_directories : includes,
1668 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001669 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001670 dependencies : [threads],
1671 install_rpath : rootlibexecdir,
1672 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001673public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001674
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001675exe = executable('journalctl',
1676 journalctl_sources,
1677 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001678 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001679 dependencies : [threads,
1680 libqrencode,
1681 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001682 liblz4,
1683 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001684 install_rpath : rootlibexecdir,
1685 install : true,
1686 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001687public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001688
1689executable('systemd-getty-generator',
1690 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001691 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001692 link_with : [libshared],
1693 install_rpath : rootlibexecdir,
1694 install : true,
1695 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001696
1697executable('systemd-debug-generator',
1698 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001699 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001700 link_with : [libshared],
1701 install_rpath : rootlibexecdir,
1702 install : true,
1703 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001704
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001705executable('systemd-run-generator',
1706 'src/run-generator/run-generator.c',
1707 include_directories : includes,
1708 link_with : [libshared],
1709 install_rpath : rootlibexecdir,
1710 install : true,
1711 install_dir : systemgeneratordir)
1712
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001713executable('systemd-fstab-generator',
1714 'src/fstab-generator/fstab-generator.c',
1715 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001716 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001717 link_with : [libshared],
1718 install_rpath : rootlibexecdir,
1719 install : true,
1720 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001721
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001722if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001723 executable('30-systemd-environment-d-generator',
1724 'src/environment-d-generator/environment-d-generator.c',
1725 include_directories : includes,
1726 link_with : [libshared],
1727 install_rpath : rootlibexecdir,
1728 install : true,
1729 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001730
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001731 meson.add_install_script(meson_make_symlink,
1732 join_paths(sysconfdir, 'environment'),
1733 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001734endif
1735
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001736if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001737 executable('systemd-hibernate-resume-generator',
1738 'src/hibernate-resume/hibernate-resume-generator.c',
1739 include_directories : includes,
1740 link_with : [libshared],
1741 install_rpath : rootlibexecdir,
1742 install : true,
1743 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001744
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001745 executable('systemd-hibernate-resume',
1746 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001747 include_directories : includes,
1748 link_with : [libshared],
1749 install_rpath : rootlibexecdir,
1750 install : true,
1751 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001752endif
1753
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001754if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001755 executable('systemd-gpt-auto-generator',
1756 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001757 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001758 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001759 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001760 dependencies : libblkid,
1761 install_rpath : rootlibexecdir,
1762 install : true,
1763 install_dir : systemgeneratordir)
1764
1765 exe = executable('systemd-dissect',
1766 'src/dissect/dissect.c',
1767 include_directories : includes,
1768 link_with : [libshared],
1769 install_rpath : rootlibexecdir,
1770 install : true,
1771 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001772 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001773endif
1774
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001775if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001776 executable('systemd-resolved',
1777 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001778 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001779 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001780 libbasic_gcrypt,
1781 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001782 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001783 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001784 install : true,
1785 install_dir : rootlibexecdir)
1786
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001787 exe = executable('resolvectl',
1788 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001789 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001790 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001791 libbasic_gcrypt,
1792 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001793 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001794 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001795 libm,
1796 libidn],
1797 install_rpath : rootlibexecdir,
1798 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001799 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001800
1801 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001802 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001803 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001804
1805 meson.add_install_script(meson_make_symlink,
1806 join_paths(bindir, 'resolvectl'),
1807 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001808endif
1809
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001810if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001811 executable('systemd-logind',
1812 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001813 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001814 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001815 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001816 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001817 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001818 install_rpath : rootlibexecdir,
1819 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001820 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001821
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001822 exe = executable('loginctl',
1823 loginctl_sources,
1824 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001825 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001826 dependencies : [threads,
1827 liblz4,
1828 libxz],
1829 install_rpath : rootlibexecdir,
1830 install : true,
1831 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001832 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001833
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001834 exe = executable('systemd-inhibit',
1835 'src/login/inhibit.c',
1836 include_directories : includes,
1837 link_with : [libshared],
1838 install_rpath : rootlibexecdir,
1839 install : true,
1840 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001841 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001842
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001843 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001844 version_script_arg = join_paths(meson.source_root(), pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001845 pam_systemd = shared_library(
1846 'pam_systemd',
1847 pam_systemd_c,
1848 name_prefix : '',
1849 include_directories : includes,
1850 link_args : ['-shared',
1851 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001852 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001853 libshared_static],
1854 dependencies : [threads,
1855 libpam,
1856 libpam_misc],
1857 link_depends : pam_systemd_sym,
1858 install : true,
1859 install_dir : pamlibdir)
1860
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001861 if want_tests != 'false'
1862 test('dlopen-pam_systemd',
1863 test_dlopen,
1864 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001865 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001866 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001867 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001868
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001869 executable('systemd-user-runtime-dir',
1870 user_runtime_dir_sources,
1871 include_directories : includes,
1872 link_with : [libshared],
1873 install_rpath : rootlibexecdir,
1874 install : true,
1875 install_dir : rootlibexecdir)
1876endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001877
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001878if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001879 executable('systemd-user-sessions',
1880 'src/user-sessions/user-sessions.c',
1881 include_directories : includes,
1882 link_with : [libshared],
1883 install_rpath : rootlibexecdir,
1884 install : true,
1885 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001886endif
1887
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001888if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001889 exe = executable('bootctl',
1890 'src/boot/bootctl.c',
1891 include_directories : includes,
1892 link_with : [libshared],
1893 dependencies : [libblkid],
1894 install_rpath : rootlibexecdir,
1895 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001896 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001897
1898 executable('systemd-bless-boot',
1899 'src/boot/bless-boot.c',
1900 include_directories : includes,
1901 link_with : [libshared],
1902 dependencies : [libblkid],
1903 install_rpath : rootlibexecdir,
1904 install : true,
1905 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001906
1907 executable('systemd-bless-boot-generator',
1908 'src/boot/bless-boot-generator.c',
1909 include_directories : includes,
1910 link_with : [libshared],
1911 install_rpath : rootlibexecdir,
1912 install : true,
1913 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001914endif
1915
Lennart Poetteringf876f532018-06-25 16:07:33 +02001916executable('systemd-boot-check-no-failures',
1917 'src/boot/boot-check-no-failures.c',
1918 include_directories : includes,
1919 link_with : [libshared],
1920 dependencies : [libblkid],
1921 install_rpath : rootlibexecdir,
1922 install : true,
1923 install_dir : rootlibexecdir)
1924
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001925exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1926 include_directories : includes,
1927 link_with : [libshared],
1928 dependencies : [threads],
1929 install_rpath : rootlibexecdir,
1930 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001931public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001932
Felipe Satelerf3794362018-05-22 15:08:57 -04001933
1934if get_option('link-systemctl-shared')
1935 systemctl_link_with = [libshared]
1936else
1937 systemctl_link_with = [libsystemd_static,
1938 libshared_static,
1939 libjournal_client,
1940 libbasic_gcrypt]
1941endif
1942
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001943exe = executable('systemctl', 'src/systemctl/systemctl.c',
1944 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001945 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001946 dependencies : [threads,
1947 libcap,
1948 libselinux,
1949 libxz,
1950 liblz4],
1951 install_rpath : rootlibexecdir,
1952 install : true,
1953 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001954public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001955
Lennart Poettering61d05782018-04-16 21:41:40 +02001956if conf.get('ENABLE_PORTABLED') == 1
1957 executable('systemd-portabled',
1958 systemd_portabled_sources,
1959 include_directories : includes,
1960 link_with : [libshared],
1961 dependencies : [threads],
1962 install_rpath : rootlibexecdir,
1963 install : true,
1964 install_dir : rootlibexecdir)
1965
1966 exe = executable('portablectl', 'src/portable/portablectl.c',
1967 include_directories : includes,
1968 link_with : [libshared],
1969 dependencies : [threads],
1970 install_rpath : rootlibexecdir,
1971 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001972 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001973 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001974endif
1975
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001976foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1977 meson.add_install_script(meson_make_symlink,
1978 join_paths(rootbindir, 'systemctl'),
1979 join_paths(rootsbindir, alias))
1980endforeach
1981
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001982if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001983 executable('systemd-backlight',
1984 'src/backlight/backlight.c',
1985 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001986 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001987 install_rpath : rootlibexecdir,
1988 install : true,
1989 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001990endif
1991
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001992if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001993 executable('systemd-rfkill',
1994 'src/rfkill/rfkill.c',
1995 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001996 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001997 install_rpath : rootlibexecdir,
1998 install : true,
1999 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002000endif
2001
2002executable('systemd-system-update-generator',
2003 'src/system-update-generator/system-update-generator.c',
2004 include_directories : includes,
2005 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002006 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002007 install : true,
2008 install_dir : systemgeneratordir)
2009
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002010if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002011 executable('systemd-cryptsetup',
2012 'src/cryptsetup/cryptsetup.c',
2013 include_directories : includes,
2014 link_with : [libshared],
2015 dependencies : [libcryptsetup],
2016 install_rpath : rootlibexecdir,
2017 install : true,
2018 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002019
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002020 executable('systemd-cryptsetup-generator',
2021 'src/cryptsetup/cryptsetup-generator.c',
2022 include_directories : includes,
2023 link_with : [libshared],
2024 dependencies : [libcryptsetup],
2025 install_rpath : rootlibexecdir,
2026 install : true,
2027 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002028
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002029 executable('systemd-veritysetup',
2030 'src/veritysetup/veritysetup.c',
2031 include_directories : includes,
2032 link_with : [libshared],
2033 dependencies : [libcryptsetup],
2034 install_rpath : rootlibexecdir,
2035 install : true,
2036 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002037
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002038 executable('systemd-veritysetup-generator',
2039 'src/veritysetup/veritysetup-generator.c',
2040 include_directories : includes,
2041 link_with : [libshared],
2042 dependencies : [libcryptsetup],
2043 install_rpath : rootlibexecdir,
2044 install : true,
2045 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002046endif
2047
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002048if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002049 executable('systemd-sysv-generator',
2050 'src/sysv-generator/sysv-generator.c',
2051 include_directories : includes,
2052 link_with : [libshared],
2053 install_rpath : rootlibexecdir,
2054 install : true,
2055 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002056
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002057 executable('systemd-rc-local-generator',
2058 'src/rc-local-generator/rc-local-generator.c',
2059 include_directories : includes,
2060 link_with : [libshared],
2061 install_rpath : rootlibexecdir,
2062 install : true,
2063 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002064endif
2065
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002066if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002067 executable('systemd-hostnamed',
2068 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002069 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002070 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002071 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002072 install : true,
2073 install_dir : rootlibexecdir)
2074
2075 exe = executable('hostnamectl',
2076 'src/hostname/hostnamectl.c',
2077 include_directories : includes,
2078 link_with : [libshared],
2079 install_rpath : rootlibexecdir,
2080 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002081 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002082endif
2083
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002084if conf.get('ENABLE_LOCALED') == 1
2085 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002086 # logind will load libxkbcommon.so dynamically on its own
2087 deps = [libdl]
2088 else
2089 deps = []
2090 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002091
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002092 executable('systemd-localed',
2093 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002094 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002095 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002096 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002097 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002098 install : true,
2099 install_dir : rootlibexecdir)
2100
2101 exe = executable('localectl',
2102 localectl_sources,
2103 include_directories : includes,
2104 link_with : [libshared],
2105 install_rpath : rootlibexecdir,
2106 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002107 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002108endif
2109
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002110if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002111 executable('systemd-timedated',
2112 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002113 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002114 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002115 install_rpath : rootlibexecdir,
2116 install : true,
2117 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002118endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002119
Yu Watanabe6129ec82018-05-03 18:07:43 +09002120if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002121 exe = executable('timedatectl',
2122 'src/timedate/timedatectl.c',
2123 include_directories : includes,
2124 install_rpath : rootlibexecdir,
2125 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002126 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002127 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002128 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002129endif
2130
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002131if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002132 executable('systemd-timesyncd',
2133 systemd_timesyncd_sources,
2134 include_directories : includes,
2135 link_with : [libshared],
2136 dependencies : [threads,
2137 libm],
2138 install_rpath : rootlibexecdir,
2139 install : true,
2140 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002141
2142 executable('systemd-time-wait-sync',
2143 'src/time-wait-sync/time-wait-sync.c',
2144 include_directories : includes,
2145 link_with : [libshared],
2146 install_rpath : rootlibexecdir,
2147 install : true,
2148 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002149endif
2150
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002151if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002152 executable('systemd-machined',
2153 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002154 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002155 link_with : [libmachine_core,
2156 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002157 install_rpath : rootlibexecdir,
2158 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002159 install_dir : rootlibexecdir)
2160
2161 exe = executable('machinectl',
2162 'src/machine/machinectl.c',
2163 include_directories : includes,
2164 link_with : [libshared],
2165 dependencies : [threads,
2166 libxz,
2167 liblz4],
2168 install_rpath : rootlibexecdir,
2169 install : true,
2170 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002171 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002172endif
2173
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002174if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002175 executable('systemd-importd',
2176 systemd_importd_sources,
2177 include_directories : includes,
2178 link_with : [libshared],
2179 dependencies : [threads],
2180 install_rpath : rootlibexecdir,
2181 install : true,
2182 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002183
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002184 systemd_pull = executable('systemd-pull',
2185 systemd_pull_sources,
2186 include_directories : includes,
2187 link_with : [libshared],
2188 dependencies : [libcurl,
2189 libz,
2190 libbzip2,
2191 libxz,
2192 libgcrypt],
2193 install_rpath : rootlibexecdir,
2194 install : true,
2195 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002196
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002197 systemd_import = executable('systemd-import',
2198 systemd_import_sources,
2199 include_directories : includes,
2200 link_with : [libshared],
2201 dependencies : [libcurl,
2202 libz,
2203 libbzip2,
2204 libxz],
2205 install_rpath : rootlibexecdir,
2206 install : true,
2207 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002208
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002209 systemd_import_fs = executable('systemd-import-fs',
2210 systemd_import_fs_sources,
2211 include_directories : includes,
2212 link_with : [libshared],
2213 install_rpath : rootlibexecdir,
2214 install : true,
2215 install_dir : rootlibexecdir)
2216
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002217 systemd_export = executable('systemd-export',
2218 systemd_export_sources,
2219 include_directories : includes,
2220 link_with : [libshared],
2221 dependencies : [libcurl,
2222 libz,
2223 libbzip2,
2224 libxz],
2225 install_rpath : rootlibexecdir,
2226 install : true,
2227 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002228
2229 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002230endif
2231
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002232if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002233 exe = executable('systemd-journal-upload',
2234 systemd_journal_upload_sources,
2235 include_directories : includes,
2236 link_with : [libshared],
2237 dependencies : [threads,
2238 libcurl,
2239 libgnutls,
2240 libxz,
2241 liblz4],
2242 install_rpath : rootlibexecdir,
2243 install : true,
2244 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002245 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002246endif
2247
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002248if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002249 s_j_remote = executable('systemd-journal-remote',
2250 systemd_journal_remote_sources,
2251 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002252 link_with : [libshared,
2253 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002254 dependencies : [threads,
2255 libmicrohttpd,
2256 libgnutls,
2257 libxz,
2258 liblz4],
2259 install_rpath : rootlibexecdir,
2260 install : true,
2261 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002262
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002263 s_j_gatewayd = executable('systemd-journal-gatewayd',
2264 systemd_journal_gatewayd_sources,
2265 include_directories : includes,
2266 link_with : [libshared],
2267 dependencies : [threads,
2268 libmicrohttpd,
2269 libgnutls,
2270 libxz,
2271 liblz4],
2272 install_rpath : rootlibexecdir,
2273 install : true,
2274 install_dir : rootlibexecdir)
2275 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002276endif
2277
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002278if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002279 executable('systemd-coredump',
2280 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002281 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002282 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002283 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002284 libacl,
2285 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002286 libxz,
2287 liblz4],
2288 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002289 install : true,
2290 install_dir : rootlibexecdir)
2291
2292 exe = executable('coredumpctl',
2293 coredumpctl_sources,
2294 include_directories : includes,
2295 link_with : [libshared],
2296 dependencies : [threads,
2297 libxz,
2298 liblz4],
2299 install_rpath : rootlibexecdir,
2300 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002301 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002302endif
2303
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002304if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002305 exe = executable('systemd-binfmt',
2306 'src/binfmt/binfmt.c',
2307 include_directories : includes,
2308 link_with : [libshared],
2309 install_rpath : rootlibexecdir,
2310 install : true,
2311 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002312 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002313
2314 meson.add_install_script('sh', '-c',
2315 mkdir_p.format(binfmtdir))
2316 meson.add_install_script('sh', '-c',
2317 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2318endif
2319
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002320if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002321 executable('systemd-vconsole-setup',
2322 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002323 include_directories : includes,
2324 link_with : [libshared],
2325 install_rpath : rootlibexecdir,
2326 install : true,
2327 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002328endif
2329
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002330if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002331 executable('systemd-random-seed',
2332 'src/random-seed/random-seed.c',
2333 include_directories : includes,
2334 link_with : [libshared],
2335 install_rpath : rootlibexecdir,
2336 install : true,
2337 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002338endif
2339
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002340if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002341 executable('systemd-firstboot',
2342 'src/firstboot/firstboot.c',
2343 include_directories : includes,
2344 link_with : [libshared],
2345 dependencies : [libcrypt],
2346 install_rpath : rootlibexecdir,
2347 install : true,
2348 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002349endif
2350
2351executable('systemd-remount-fs',
2352 'src/remount-fs/remount-fs.c',
2353 'src/core/mount-setup.c',
2354 'src/core/mount-setup.h',
2355 include_directories : includes,
2356 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002357 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002358 install : true,
2359 install_dir : rootlibexecdir)
2360
2361executable('systemd-machine-id-setup',
2362 'src/machine-id-setup/machine-id-setup-main.c',
2363 'src/core/machine-id-setup.c',
2364 'src/core/machine-id-setup.h',
2365 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002366 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002367 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002368 install : true,
2369 install_dir : rootbindir)
2370
2371executable('systemd-fsck',
2372 'src/fsck/fsck.c',
2373 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002374 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002375 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002376 install : true,
2377 install_dir : rootlibexecdir)
2378
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002379executable('systemd-growfs',
2380 'src/partition/growfs.c',
2381 include_directories : includes,
2382 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002383 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002384 install_rpath : rootlibexecdir,
2385 install : true,
2386 install_dir : rootlibexecdir)
2387
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002388executable('systemd-makefs',
2389 'src/partition/makefs.c',
2390 include_directories : includes,
2391 link_with : [libshared],
2392 install_rpath : rootlibexecdir,
2393 install : true,
2394 install_dir : rootlibexecdir)
2395
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002396executable('systemd-sleep',
2397 'src/sleep/sleep.c',
2398 include_directories : includes,
2399 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002400 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002401 install : true,
2402 install_dir : rootlibexecdir)
2403
Yu Watanabed25e1272019-01-03 02:32:57 +09002404install_data('src/sleep/sleep.conf',
2405 install_dir : pkgsysconfdir)
2406
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002407exe = executable('systemd-sysctl',
2408 'src/sysctl/sysctl.c',
2409 include_directories : includes,
2410 link_with : [libshared],
2411 install_rpath : rootlibexecdir,
2412 install : true,
2413 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002414public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002415
2416executable('systemd-ac-power',
2417 'src/ac-power/ac-power.c',
2418 include_directories : includes,
2419 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002420 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002421 install : true,
2422 install_dir : rootlibexecdir)
2423
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002424exe = executable('systemd-detect-virt',
2425 'src/detect-virt/detect-virt.c',
2426 include_directories : includes,
2427 link_with : [libshared],
2428 install_rpath : rootlibexecdir,
2429 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002430public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002431
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002432exe = executable('systemd-delta',
2433 'src/delta/delta.c',
2434 include_directories : includes,
2435 link_with : [libshared],
2436 install_rpath : rootlibexecdir,
2437 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002438public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002439
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002440exe = executable('systemd-escape',
2441 'src/escape/escape.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 +02002447public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002448
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002449exe = executable('systemd-notify',
2450 'src/notify/notify.c',
2451 include_directories : includes,
2452 link_with : [libshared],
2453 install_rpath : rootlibexecdir,
2454 install : true,
2455 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002456public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002457
2458executable('systemd-volatile-root',
2459 'src/volatile-root/volatile-root.c',
2460 include_directories : includes,
2461 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002462 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002463 install : true,
2464 install_dir : rootlibexecdir)
2465
2466executable('systemd-cgroups-agent',
2467 'src/cgroups-agent/cgroups-agent.c',
2468 include_directories : includes,
2469 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002470 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002471 install : true,
2472 install_dir : rootlibexecdir)
2473
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002474exe = executable('systemd-id128',
2475 'src/id128/id128.c',
2476 include_directories : includes,
2477 link_with : [libshared],
2478 install_rpath : rootlibexecdir,
2479 install : true)
2480public_programs += exe
2481
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002482exe = executable('systemd-path',
2483 'src/path/path.c',
2484 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-Szmek5a8b1642018-07-31 09:44:11 +02002488public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002489
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002490exe = executable('systemd-ask-password',
2491 'src/ask-password/ask-password.c',
2492 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002493 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002494 install_rpath : rootlibexecdir,
2495 install : true,
2496 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002497public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002498
2499executable('systemd-reply-password',
2500 'src/reply-password/reply-password.c',
2501 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002502 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002503 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002504 install : true,
2505 install_dir : rootlibexecdir)
2506
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002507exe = executable('systemd-tty-ask-password-agent',
2508 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2509 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002510 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002511 install_rpath : rootlibexecdir,
2512 install : true,
2513 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002514public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002515
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002516exe = executable('systemd-cgls',
2517 'src/cgls/cgls.c',
2518 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002519 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002520 install_rpath : rootlibexecdir,
2521 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002522public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002523
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002524exe = executable('systemd-cgtop',
2525 'src/cgtop/cgtop.c',
2526 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002527 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002528 install_rpath : rootlibexecdir,
2529 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002530public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002531
2532executable('systemd-initctl',
2533 'src/initctl/initctl.c',
2534 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002535 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002536 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002537 install : true,
2538 install_dir : rootlibexecdir)
2539
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002540exe = executable('systemd-mount',
2541 'src/mount/mount-tool.c',
2542 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002543 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002544 install_rpath : rootlibexecdir,
2545 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002546public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002547
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002548meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002549 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002550
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002551exe = executable('systemd-run',
2552 'src/run/run.c',
2553 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002554 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002555 install_rpath : rootlibexecdir,
2556 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002557public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002558
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002559exe = executable('systemd-stdio-bridge',
2560 'src/stdio-bridge/stdio-bridge.c',
2561 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002562 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002563 install_rpath : rootlibexecdir,
2564 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002565public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002566
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002567exe = executable('busctl',
2568 'src/busctl/busctl.c',
2569 'src/busctl/busctl-introspect.c',
2570 'src/busctl/busctl-introspect.h',
2571 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002572 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002573 install_rpath : rootlibexecdir,
2574 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002575public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002576
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002577if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002578 exe = executable('systemd-sysusers',
2579 'src/sysusers/sysusers.c',
2580 include_directories : includes,
2581 link_with : [libshared],
2582 install_rpath : rootlibexecdir,
2583 install : true,
2584 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002585 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002586endif
2587
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002588if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002589 exe = executable('systemd-tmpfiles',
2590 'src/tmpfiles/tmpfiles.c',
2591 include_directories : includes,
2592 link_with : [libshared],
2593 dependencies : [libacl],
2594 install_rpath : rootlibexecdir,
2595 install : true,
2596 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002597 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002598
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002599 if want_tests != 'false'
2600 test('test-systemd-tmpfiles',
2601 test_systemd_tmpfiles_py,
2602 # https://github.com/mesonbuild/meson/issues/2681
2603 args : exe.full_path())
2604 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002605endif
2606
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002607if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002608 exe = executable('systemd-hwdb',
2609 'src/hwdb/hwdb.c',
2610 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2611 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002612 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002613 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002614 install : true,
2615 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002616 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002617endif
2618
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002619if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002620 executable('systemd-quotacheck',
2621 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002622 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002623 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002624 install_rpath : rootlibexecdir,
2625 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002626 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002627endif
2628
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002629exe = executable('systemd-socket-proxyd',
2630 'src/socket-proxy/socket-proxyd.c',
2631 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002632 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002633 dependencies : [threads],
2634 install_rpath : rootlibexecdir,
2635 install : true,
2636 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002637public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002638
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002639exe = executable('systemd-udevd',
2640 systemd_udevd_sources,
2641 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002642 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002643 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002644 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002645 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002646 dependencies : [threads,
2647 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002648 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002649 libacl,
2650 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002651 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002652 install : true,
2653 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002654public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002655
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002656exe = executable('udevadm',
2657 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002658 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002659 include_directories : includes,
2660 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002661 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002662 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002663 dependencies : [threads,
2664 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002665 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002666 libacl,
2667 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002668 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002669 install : true,
2670 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002671public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002672
2673executable('systemd-shutdown',
2674 systemd_shutdown_sources,
2675 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002676 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002677 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002678 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002679 install : true,
2680 install_dir : rootlibexecdir)
2681
2682executable('systemd-update-done',
2683 'src/update-done/update-done.c',
2684 include_directories : includes,
2685 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002686 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002687 install : true,
2688 install_dir : rootlibexecdir)
2689
2690executable('systemd-update-utmp',
2691 'src/update-utmp/update-utmp.c',
2692 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002693 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002694 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002695 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002696 install : true,
2697 install_dir : rootlibexecdir)
2698
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002699if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002700 executable('systemd-modules-load',
2701 'src/modules-load/modules-load.c',
2702 include_directories : includes,
2703 link_with : [libshared],
2704 dependencies : [libkmod],
2705 install_rpath : rootlibexecdir,
2706 install : true,
2707 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002708
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002709 meson.add_install_script('sh', '-c',
2710 mkdir_p.format(modulesloaddir))
2711 meson.add_install_script('sh', '-c',
2712 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002713endif
2714
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002715exe = executable('systemd-nspawn',
2716 systemd_nspawn_sources,
2717 'src/core/mount-setup.c', # FIXME: use a variable?
2718 'src/core/mount-setup.h',
2719 'src/core/loopback-setup.c',
2720 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002721 include_directories : includes,
2722 link_with : [libnspawn_core,
2723 libshared],
2724 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002725 install_rpath : rootlibexecdir,
2726 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002727public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002728
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002729if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002730 executable('systemd-networkd',
2731 systemd_networkd_sources,
2732 include_directories : includes,
2733 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002734 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002735 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002736 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002737 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002738 install_rpath : rootlibexecdir,
2739 install : true,
2740 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002741
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002742 executable('systemd-networkd-wait-online',
2743 systemd_networkd_wait_online_sources,
2744 include_directories : includes,
2745 link_with : [libnetworkd_core,
2746 libshared],
2747 install_rpath : rootlibexecdir,
2748 install : true,
2749 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002750
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002751 exe = executable('networkctl',
2752 networkctl_sources,
2753 include_directories : includes,
2754 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002755 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002756 install_rpath : rootlibexecdir,
2757 install : true,
2758 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002759 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002760endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002761
2762executable('systemd-sulogin-shell',
2763 ['src/sulogin-shell/sulogin-shell.c'],
2764 include_directories : includes,
2765 link_with : [libshared],
2766 install_rpath : rootlibexecdir,
2767 install : true,
2768 install_dir : rootlibexecdir)
2769
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002770############################################################
2771
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002772custom_target(
2773 'systemd-runtest.env',
2774 output : 'systemd-runtest.env',
2775 command : ['sh', '-c', '{ ' +
2776 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(meson.current_source_dir(), 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002777 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002778 '} >@OUTPUT@'],
2779 build_by_default : true)
2780
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002781foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002782 sources = tuple[0]
2783 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2784 dependencies = tuple[2]
2785 condition = tuple.length() >= 4 ? tuple[3] : ''
2786 type = tuple.length() >= 5 ? tuple[4] : ''
2787 defs = tuple.length() >= 6 ? tuple[5] : []
2788 incs = tuple.length() >= 7 ? tuple[6] : includes
2789 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002790
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002791 name = sources[0].split('/')[-1].split('.')[0]
2792 if type.startswith('timeout=')
2793 timeout = type.split('=')[1].to_int()
2794 type = ''
2795 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002796
2797 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002798 exe = executable(
2799 name,
2800 sources,
2801 include_directories : incs,
2802 link_with : link_with,
2803 dependencies : dependencies,
2804 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002805 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002806 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002807 install : install_tests,
2808 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002809
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002810 if type == 'manual'
2811 message('@0@ is a manual test'.format(name))
2812 elif type == 'unsafe' and want_tests != 'unsafe'
2813 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002814 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002815 test(name, exe,
2816 env : test_env,
2817 timeout : timeout)
2818 endif
2819 else
2820 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2821 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002822endforeach
2823
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002824exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002825 'test-libsystemd-sym',
2826 test_libsystemd_sym_c,
2827 include_directories : includes,
2828 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002829 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002830 install : install_tests,
2831 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002832if want_tests != 'false'
2833 test('test-libsystemd-sym', exe)
2834endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002835
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002836exe = executable(
2837 'test-libsystemd-static-sym',
2838 test_libsystemd_sym_c,
2839 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002840 link_with : [install_libsystemd_static],
2841 dependencies : [threads], # threads is already included in dependencies on the library,
2842 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002843 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002844 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002845 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002846if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002847 test('test-libsystemd-static-sym', exe)
2848endif
2849
2850exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002851 'test-libudev-sym',
2852 test_libudev_sym_c,
2853 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002854 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002855 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002856 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002857 install : install_tests,
2858 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002859if want_tests != 'false'
2860 test('test-libudev-sym', exe)
2861endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002862
2863exe = executable(
2864 'test-libudev-static-sym',
2865 test_libudev_sym_c,
2866 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002867 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002868 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002869 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002870 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002871 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002872if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002873 test('test-libudev-static-sym', exe)
2874endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002875
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002876############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002877
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002878fuzzer_exes = []
2879
Michael Olbrich59967402018-11-11 11:27:35 +01002880if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002881foreach tuple : fuzzers
2882 sources = tuple[0]
2883 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2884 dependencies = tuple[2]
2885 defs = tuple.length() >= 4 ? tuple[3] : []
2886 incs = tuple.length() >= 5 ? tuple[4] : includes
2887
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002888 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002889 dependencies += fuzzing_engine
2890 else
2891 sources += 'src/fuzz/fuzz-main.c'
2892 endif
2893
2894 name = sources[0].split('/')[-1].split('.')[0]
2895
2896 fuzzer_exes += executable(
2897 name,
2898 sources,
2899 include_directories : [incs, include_directories('src/fuzz')],
2900 link_with : link_with,
2901 dependencies : dependencies,
2902 c_args : defs,
2903 install : false)
2904endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002905endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002906
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01002907run_target('fuzzers',
2908 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002909 command : ['true'])
2910
2911############################################################
2912
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002913make_directive_index_py = find_program('tools/make-directive-index.py')
2914make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002915xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002916hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002917
2918subdir('units')
2919subdir('sysctl.d')
2920subdir('sysusers.d')
2921subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002922subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002923subdir('hwdb')
2924subdir('network')
2925subdir('man')
2926subdir('shell-completion/bash')
2927subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002928subdir('docs/sysvinit')
2929subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002930
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002931install_subdir('factory/etc',
2932 install_dir : factorydir)
2933
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002934install_data('xorg/50-systemd-user.sh',
2935 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002936install_data('modprobe.d/systemd.conf',
2937 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002938install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002939 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002940 'NEWS',
2941 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302942 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002943 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002944 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302945 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002946 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002947 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002948 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002949 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2950 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002951
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002952meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2953meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2954
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002955############################################################
2956
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002957meson_check_help = find_program('tools/meson-check-help.sh')
2958
2959foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002960 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002961 if want_tests != 'false'
2962 test('check-help-' + name,
2963 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002964 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002965 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002966endforeach
2967
2968############################################################
2969
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002970# Enable tests for all supported sanitizers
2971foreach tuple : sanitizers
2972 sanitizer = tuple[0]
2973 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002974
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002975 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002976 prev = ''
2977 foreach p : fuzz_regression_tests
2978 b = p.split('/')[-2]
2979 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002980
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002981 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002982
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002983 if name != prev
2984 if want_tests == 'false'
2985 message('Not compiling @0@ because tests is set to false'.format(name))
2986 elif slow_tests
2987 exe = custom_target(
2988 name,
2989 output : name,
2990 depends : build,
2991 command : [env, 'ln', '-fs',
2992 join_paths(build.full_path(), b),
2993 '@OUTPUT@'],
2994 build_by_default : true)
2995 else
2996 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2997 endif
2998 endif
2999 prev = name
3000
3001 if want_tests != 'false' and slow_tests
3002 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3003 env,
3004 args : [exe.full_path(),
Zbigniew Jędrzejewski-Szmeke6bad672018-08-10 17:15:05 +02003005 join_paths(meson.source_root(), p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003006 endif
3007 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003008 endif
3009endforeach
3010
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003011
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003012############################################################
3013
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003014if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003015 all_files = run_command(
3016 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003017 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003018 'ls-files',
3019 ':/*.[ch]'])
3020 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003021
userwithuide85a6902017-08-09 13:41:44 +00003022 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003023 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003024 output : 'tags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003025 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.source_root())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003026 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003027 'ctags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003028 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.source_root())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003029endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003030
3031if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003032 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003033 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003034 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003035 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003036endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003037
3038if git.found()
3039 git_head = run_command(
3040 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003041 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003042 'rev-parse', 'HEAD']).stdout().strip()
3043 git_head_short = run_command(
3044 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003045 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003046 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3047
3048 run_target(
3049 'git-snapshot',
3050 command : ['git', 'archive',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003051 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.source_root(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003052 git_head_short),
3053 '--prefix', 'systemd-@0@/'.format(git_head),
3054 'HEAD'])
3055endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003056
3057############################################################
3058
Lennart Poettering51b13862017-12-20 12:51:14 +01003059meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3060run_target(
3061 'check-api-docs',
3062 depends : [man, libsystemd, libudev],
3063 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3064
3065############################################################
3066
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003067status = [
3068 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3069
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003070 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003071 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003072 'prefix directory: @0@'.format(prefixdir),
3073 'rootprefix directory: @0@'.format(rootprefixdir),
3074 'sysconf directory: @0@'.format(sysconfdir),
3075 'include directory: @0@'.format(includedir),
3076 'lib directory: @0@'.format(libdir),
3077 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003078 'SysV init scripts: @0@'.format(sysvinit_path),
3079 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003080 'PAM modules directory: @0@'.format(pamlibdir),
3081 'PAM configuration directory: @0@'.format(pamconfdir),
3082 'RPM macros directory: @0@'.format(rpmmacrosdir),
3083 'modprobe.d directory: @0@'.format(modprobedir),
3084 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3085 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3086 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3087 'bash completions directory: @0@'.format(bashcompletiondir),
3088 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003089 'extra start script: @0@'.format(get_option('rc-local')),
3090 'extra stop script: @0@'.format(get_option('halt-local')),
3091 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3092 get_option('debug-tty')),
3093 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003094 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003095 'maximum system UID: @0@'.format(system_uid_max),
3096 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003097 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3098 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3099 'minimum container UID base: @0@'.format(container_uid_base_min),
3100 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003101 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003102 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003103 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003104 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003105 'nobody user name: @0@'.format(nobody_user),
3106 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003107 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003108 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003109
3110 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003111 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003112 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003113 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003114 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
3115 'default locale: @0@'.format(default_locale)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003116
3117alt_dns_servers = '\n '.join(dns_servers.split(' '))
3118alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3119status += [
3120 'default DNS servers: @0@'.format(alt_dns_servers),
3121 'default NTP servers: @0@'.format(alt_ntp_servers)]
3122
3123alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3124 '@@0@'.format(time_epoch)).stdout().strip()
3125status += [
3126 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3127
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003128status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003129 'static libsystemd: @0@'.format(static_libsystemd),
3130 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003131
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003132# TODO:
3133# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3134# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3135# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3136
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003137if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003138 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003139
3140 if have_gnu_efi
3141 status += [
3142 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003143 'EFI CC @0@'.format(' '.join(efi_cc)),
Yu Watanabe359b4962017-11-25 20:35:24 +09003144 'EFI lib directory: @0@'.format(efi_libdir),
3145 'EFI lds directory: @0@'.format(efi_ldsdir),
3146 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003147 endif
3148endif
3149
3150found = []
3151missing = []
3152
3153foreach tuple : [
3154 ['libcryptsetup'],
3155 ['PAM'],
3156 ['AUDIT'],
3157 ['IMA'],
3158 ['AppArmor'],
3159 ['SELinux'],
3160 ['SECCOMP'],
3161 ['SMACK'],
3162 ['zlib'],
3163 ['xz'],
3164 ['lz4'],
3165 ['bzip2'],
3166 ['ACL'],
3167 ['gcrypt'],
3168 ['qrencode'],
3169 ['microhttpd'],
3170 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003171 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003172 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003173 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003174 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003175 ['libidn'],
3176 ['libiptc'],
3177 ['elfutils'],
3178 ['binfmt'],
3179 ['vconsole'],
3180 ['quotacheck'],
3181 ['tmpfiles'],
3182 ['environment.d'],
3183 ['sysusers'],
3184 ['firstboot'],
3185 ['randomseed'],
3186 ['backlight'],
3187 ['rfkill'],
3188 ['logind'],
3189 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003190 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003191 ['importd'],
3192 ['hostnamed'],
3193 ['timedated'],
3194 ['timesyncd'],
3195 ['localed'],
3196 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003197 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003198 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3199 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003200 ['coredump'],
3201 ['polkit'],
3202 ['legacy pkla', install_polkit_pkla],
3203 ['efi'],
3204 ['gnu-efi', have_gnu_efi],
3205 ['kmod'],
3206 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003207 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003208 ['blkid'],
3209 ['dbus'],
3210 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003211 ['nss-myhostname'],
3212 ['nss-mymachines'],
3213 ['nss-resolve'],
3214 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003215 ['hwdb'],
3216 ['tpm'],
3217 ['man pages', want_man],
3218 ['html pages', want_html],
3219 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003220 ['SysV compat'],
3221 ['utmp'],
3222 ['ldconfig'],
3223 ['hibernate'],
3224 ['adm group', get_option('adm-group')],
3225 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003226 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003227 ['debug hashmap'],
3228 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003229 ['debug siphash'],
Yu Watanabe20e97dd2018-11-23 00:28:27 +09003230 ['debug udev'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003231 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003232 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003233 ['link-udev-shared', get_option('link-udev-shared')],
3234 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003235]
3236
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003237 if tuple.length() >= 2
3238 cond = tuple[1]
3239 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003240 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3241 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003242 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003243 endif
3244 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003245 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003246 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003247 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003248 endif
3249endforeach
3250
3251status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003252 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003253 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003254 '',
3255 'disabled features: @0@'.format(', '.join(missing)),
3256 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003257message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003258
3259if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003260 warning('\n' +
3261 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3262 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3263 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003264endif