blob: 011e449806e320b906fbf1b1a9afeca153d2ccfa [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
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400583sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400584awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400585m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400586stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400587git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100588env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100589perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400590
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400591meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400592mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400593test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
594splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400595
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400596# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
597# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500598progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400599 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400600 ['kmod', '/usr/bin/kmod' ],
601 ['kexec', '/usr/sbin/kexec' ],
602 ['sulogin', '/usr/sbin/sulogin' ],
603 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
604 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
605 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
606 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
607 ]
608foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400609 path = get_option(prog[0] + '-path')
610 if path != ''
611 message('Using @1@ for @0@'.format(prog[0], path))
612 else
613 exe = find_program(prog[0],
614 '/usr/sbin/' + prog[0],
615 '/sbin/' + prog[0],
616 required: false)
617 path = exe.found() ? exe.path() : prog[1]
618 endif
619 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
620 conf.set_quoted(name, path)
621 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400622endforeach
623
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500624conf.set_quoted('TELINIT', get_option('telinit-path'))
625
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400626if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100627 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400628endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400629
630############################################################
631
632gperf = find_program('gperf')
633
634gperf_test_format = '''
635#include <string.h>
636const char * in_word_set(const char *, @0@);
637@1@
638'''
639gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
640gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
641gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
642if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400643 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400644else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400645 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
646 if cc.compiles(gperf_test)
647 gperf_len_type = 'unsigned'
648 else
649 error('unable to determine gperf len type')
650 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400651endif
652message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400653conf.set('GPERF_LEN_TYPE', gperf_len_type,
654 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400655
656############################################################
657
658if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400659 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400660endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100661foreach header : ['crypt.h',
Yu Watanabeb9683ba2018-12-04 07:46:59 +0100662 'linux/btrfs_tree.h',
Yu Watanabe80df8f22018-10-21 18:35:46 +0900663 'linux/fou.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400664 'linux/memfd.h',
665 'linux/vm_sockets.h',
Yu Watanabe9714c022018-12-02 16:27:02 +0100666 'linux/can/vxcan.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200667 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400668 'valgrind/memcheck.h',
669 'valgrind/valgrind.h',
670 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400671
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200672 conf.set10('HAVE_' + header.underscorify().to_upper(),
673 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400674endforeach
675
676############################################################
677
678conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400679conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
680gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400681
682default_hierarchy = get_option('default-hierarchy')
683conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
684 description : 'default cgroup hierarchy as string')
685if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400686 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400687elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400688 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400689else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400690 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400691endif
692
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100693default_net_naming_scheme = get_option('default-net-naming-scheme')
694conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
695
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400696time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900697if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400698 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900699 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400700endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400701conf.set('TIME_EPOCH', time_epoch)
702
703system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900704if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400705 system_uid_max = run_command(
706 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800707 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
708 '/etc/login.defs').stdout().strip()
709 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900710 system_uid_max = 999
711 else
712 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800713 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400714endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400715conf.set('SYSTEM_UID_MAX', system_uid_max)
716substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400717
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400718system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900719if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400720 system_gid_max = run_command(
721 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800722 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
723 '/etc/login.defs').stdout().strip()
724 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900725 system_gid_max = 999
726 else
727 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800728 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400729endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400730conf.set('SYSTEM_GID_MAX', system_gid_max)
731substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400732
Yu Watanabeac093402018-05-10 16:04:16 +0900733dynamic_uid_min = get_option('dynamic-uid-min')
734dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100735conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
736conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
737substs.set('dynamicuidmin', dynamic_uid_min)
738substs.set('dynamicuidmax', dynamic_uid_max)
739
Yu Watanabeac093402018-05-10 16:04:16 +0900740container_uid_base_min = get_option('container-uid-base-min')
741container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100742conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
743conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
744substs.set('containeruidbasemin', container_uid_base_min)
745substs.set('containeruidbasemax', container_uid_base_max)
746
Lennart Poetteringafde4572017-12-05 11:00:24 +0100747nobody_user = get_option('nobody-user')
748nobody_group = get_option('nobody-group')
749
Chen Qi2484bff2018-07-23 14:53:09 +0800750if not meson.is_cross_build()
751 getent_result = run_command('getent', 'passwd', '65534')
752 if getent_result.returncode() == 0
753 name = getent_result.stdout().split(':')[0]
754 if name != nobody_user
755 warning('\n' +
756 '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) +
757 'Your build will result in an user table setup that is incompatible with the local system.')
758 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100759 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800760 id_result = run_command('id', '-u', nobody_user)
761 if id_result.returncode() == 0
762 id = id_result.stdout().to_int()
763 if id != 65534
764 warning('\n' +
765 '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) +
766 'Your build will result in an user table setup that is incompatible with the local system.')
767 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100768 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100769
Chen Qi2484bff2018-07-23 14:53:09 +0800770 getent_result = run_command('getent', 'group', '65534')
771 if getent_result.returncode() == 0
772 name = getent_result.stdout().split(':')[0]
773 if name != nobody_group
774 warning('\n' +
775 '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) +
776 'Your build will result in an group table setup that is incompatible with the local system.')
777 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100778 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800779 id_result = run_command('id', '-g', nobody_group)
780 if id_result.returncode() == 0
781 id = id_result.stdout().to_int()
782 if id != 65534
783 warning('\n' +
784 '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) +
785 'Your build will result in an group table setup that is incompatible with the local system.')
786 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100787 endif
788endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900789if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900790 warning('\n' +
791 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
792 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900793endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100794
795conf.set_quoted('NOBODY_USER_NAME', nobody_user)
796conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900797substs.set('NOBODY_USER_NAME', nobody_user)
798substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100799
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400800tty_gid = get_option('tty-gid')
801conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400802substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400803
Ikey Doherty84786b82017-12-03 12:28:23 +0000804# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900805users_gid = get_option('users-gid')
806substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000807
Yu Watanabe348b4432018-05-07 18:17:35 +0900808conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
809conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400810
Michael Bieblace5e312018-07-13 23:36:13 +0200811dev_kvm_mode = get_option('dev-kvm-mode')
812substs.set('DEV_KVM_MODE', dev_kvm_mode)
813conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Tom Stellard4e15a732017-10-31 08:46:24 -0700814substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400815
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400816kill_user_processes = get_option('default-kill-user-processes')
817conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100818conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400819substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400820
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400821dns_servers = get_option('dns-servers')
822conf.set_quoted('DNS_SERVERS', dns_servers)
823substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400824
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400825ntp_servers = get_option('ntp-servers')
826conf.set_quoted('NTP_SERVERS', ntp_servers)
827substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400828
Dave Reisner8ca9e922018-12-28 07:38:36 -0500829default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900830if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800831 if not meson.is_cross_build()
832 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
833 default_locale = run_command(choose_default_locale_sh).stdout().strip()
834 else
835 default_locale = 'C.UTF-8'
836 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900837endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500838conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
839
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400840conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
841
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400842substs.set('SUSHELL', get_option('debug-shell'))
843substs.set('DEBUGTTY', get_option('debug-tty'))
844
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200845enable_debug_hashmap = false
846enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900847enable_debug_siphash = false
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900848enable_debug_udev = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200849foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900850 if name == 'hashmap'
851 enable_debug_hashmap = true
852 elif name == 'mmap-cache'
853 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900854 elif name == 'siphash'
855 enable_debug_siphash = true
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900856 elif name == 'udev'
857 enable_debug_udev = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900858 else
859 message('unknown debug option "@0@", ignoring'.format(name))
860 endif
861endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200862conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
863conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900864conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900865conf.set10('ENABLE_DEBUG_UDEV', enable_debug_udev)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400866
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200867conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200868conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200869
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400870#####################################################################
871
872threads = dependency('threads')
873librt = cc.find_library('rt')
874libm = cc.find_library('m')
875libdl = cc.find_library('dl')
876libcrypt = cc.find_library('crypt')
877
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400878libcap = dependency('libcap', required : false)
879if not libcap.found()
880 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
881 libcap = cc.find_library('cap')
882endif
883
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400884libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100885 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400886
887want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500888if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400889 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400890 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400891 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200892 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400893else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200894 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400895 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400896endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200897conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400898
899want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500900if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400901 libselinux = dependency('libselinux',
902 version : '>= 2.1.9',
903 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200904 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400905else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200906 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400907 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400908endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200909conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400910
911want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500912if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400913 libapparmor = dependency('libapparmor',
914 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200915 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400916else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200917 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400918 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400919endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200920conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400921
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400922smack_run_label = get_option('smack-run-label')
923if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400924 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400925endif
926
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400927want_polkit = get_option('polkit')
928install_polkit = false
929install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500930if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400931 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400932
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400933 libpolkit = dependency('polkit-gobject-1',
934 required : false)
935 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
936 message('Old polkit detected, will install pkla files')
937 install_polkit_pkla = true
938 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400939endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200940conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400941
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400942want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500943if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400944 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200945 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400946else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200947 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400948 libacl = []
949endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200950conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400951
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400952want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500953if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400954 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200955 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400956else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200957 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400958 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400959endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200960conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400961
962want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500963if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400964 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200965 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400966else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200967 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400968 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400969endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200970conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400971
972want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500973if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400974 libkmod = dependency('libkmod',
975 version : '>= 15',
976 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200977 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400978else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200979 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400980 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400981endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200982conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400983
984want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500985if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400986 libpam = cc.find_library('pam', required : want_pam == 'true')
987 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200988 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400989else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200990 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400991 libpam = []
992 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400993endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200994conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400995
996want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500997if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400998 libmicrohttpd = dependency('libmicrohttpd',
999 version : '>= 0.9.33',
1000 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001001 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001002else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001003 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001004 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001005endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001006conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001007
1008want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001009if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001010 libcryptsetup = dependency('libcryptsetup',
1011 version : '>= 1.6.0',
1012 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001013 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001014 have_sector = cc.has_member(
1015 'struct crypt_params_plain',
1016 'sector_size',
1017 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001018else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001019 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001020 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001021 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001022endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001023conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001024conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001025
1026want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001027if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001028 libcurl = dependency('libcurl',
1029 version : '>= 7.32.0',
1030 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001031 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001032else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001033 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001034 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001035endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001036conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001037
1038want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001039want_libidn2 = get_option('libidn2')
1040if want_libidn == 'true' and want_libidn2 == 'true'
1041 error('libidn and libidn2 cannot be requested simultaneously')
1042endif
1043
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001044if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001045 libidn = dependency('libidn',
1046 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001047 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001048else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001049 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001050 libidn = []
1051endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001052conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001053if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001054 # libidn is used for both libidn and libidn2 objects
1055 libidn = dependency('libidn2',
1056 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001057 have = libidn.found()
1058else
1059 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001060endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001061conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001062
1063want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001064if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001065 libiptc = dependency('libiptc',
1066 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001067 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001068else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001069 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001070 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001071endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001072conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001073
1074want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001075if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001076 libqrencode = dependency('libqrencode',
1077 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001078 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001079else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001080 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001081 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001082endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001083conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001084
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001085want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001086if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001087 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1088 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001089 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001090else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001091 have = false
1092endif
1093if not have
1094 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001095 libgcrypt = []
1096 libgpg_error = []
1097endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001098conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001099
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001100want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001101if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001102 libgnutls = dependency('gnutls',
1103 version : '>= 3.1.4',
1104 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001105 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001106else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001107 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001108 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001109endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001110conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001111
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001112want_openssl = get_option('openssl')
1113if want_openssl != 'false' and not fuzzer_build
1114 libopenssl = dependency('openssl',
1115 version : '>= 1.1.0',
1116 required : want_openssl == 'true')
1117 have = libopenssl.found()
1118else
1119 have = false
1120 libopenssl = []
1121endif
1122conf.set10('HAVE_OPENSSL', have)
1123
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001124want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001125if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001126 libdw = dependency('libdw',
1127 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001128 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001129else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001130 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001131 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001132endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001133conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001134
1135want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001136if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001137 libz = dependency('zlib',
1138 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001139 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001140else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001141 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001142 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001143endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001144conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001145
1146want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001147if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001148 libbzip2 = cc.find_library('bz2',
1149 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001150 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001151else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001152 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001153 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001154endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001155conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001156
1157want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001158if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001159 libxz = dependency('liblzma',
1160 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001161 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001162else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001163 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001164 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001165endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001166conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001167
1168want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001169if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001170 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001171 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001172 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001173 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001174else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001175 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001176 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001177endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001178conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001179
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001180want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001181if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001182 libxkbcommon = dependency('xkbcommon',
1183 version : '>= 0.3.0',
1184 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001185 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001186else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001187 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001188 libxkbcommon = []
1189endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001190conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001191
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001192want_pcre2 = get_option('pcre2')
1193if want_pcre2 != 'false'
1194 libpcre2 = dependency('libpcre2-8',
1195 required : want_pcre2 == 'true')
1196 have = libpcre2.found()
1197else
1198 have = false
1199 libpcre2 = []
1200endif
1201conf.set10('HAVE_PCRE2', have)
1202
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001203want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001204if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001205 libglib = dependency('glib-2.0',
1206 version : '>= 2.22.0',
1207 required : want_glib == 'true')
1208 libgobject = dependency('gobject-2.0',
1209 version : '>= 2.22.0',
1210 required : want_glib == 'true')
1211 libgio = dependency('gio-2.0',
1212 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001213 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001214else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001215 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001216 libglib = []
1217 libgobject = []
1218 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001219endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001220conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001221
1222want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001223if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001224 libdbus = dependency('dbus-1',
1225 version : '>= 1.3.2',
1226 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001227 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001228else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001229 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001230 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001231endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001232conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001233
Yu Watanabe42303dc2017-06-18 05:22:32 +09001234default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001235if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001236 default_dnssec = 'no'
1237endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001238if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001239 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1240 default_dnssec = 'no'
1241endif
1242conf.set('DEFAULT_DNSSEC_MODE',
1243 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1244substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1245
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001246dns_over_tls = get_option('dns-over-tls')
1247if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001248 if dns_over_tls == 'openssl'
1249 have_gnutls = false
1250 else
1251 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1252 if dns_over_tls == 'gnutls' and not have_gnutls
1253 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1254 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001255 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001256 if dns_over_tls == 'gnutls' or have_gnutls
1257 have_openssl = false
1258 else
1259 have_openssl = conf.get('HAVE_OPENSSL') == 1
1260 if dns_over_tls != 'auto' and not have_openssl
1261 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
1262 error('DNS-over-TLS support was requested$0$, but dependencies are not available'.format(str))
1263 endif
1264 endif
1265 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001266else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001267 have = false
1268 have_gnutls = false
1269 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001270endif
1271conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001272conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1273conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001274
Iwan Timmerc9299be2018-06-13 20:26:24 +02001275default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001276if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001277 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001278endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001279if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1280 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 +02001281 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001282endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001283conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1284 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1285substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001286
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001287want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001288if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001289 have = (conf.get('HAVE_LIBCURL') == 1 and
1290 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001291 conf.get('HAVE_XZ') == 1 and
1292 conf.get('HAVE_GCRYPT') == 1)
1293 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001294 error('importd support was requested, but dependencies are not available')
1295 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001296else
1297 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001298endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001299conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001300
1301want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001302if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001303 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1304 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001305 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1306 # it's possible to build one without the other. Complain only if
1307 # support was explictly requested. The auxiliary files like sysusers
1308 # config should be installed when any of the programs are built.
1309 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1310 error('remote support was requested, but dependencies are not available')
1311 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001312 have = have_deps[0] or have_deps[1]
1313else
1314 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001315endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001316conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001317
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001318foreach term : ['utmp',
1319 'hibernate',
1320 'environment-d',
1321 'binfmt',
1322 'coredump',
1323 'resolve',
1324 'logind',
1325 'hostnamed',
1326 'localed',
1327 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001328 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001329 'networkd',
1330 'timedated',
1331 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001332 'firstboot',
1333 'randomseed',
1334 'backlight',
1335 'vconsole',
1336 'quotacheck',
1337 'sysusers',
1338 'tmpfiles',
1339 'hwdb',
1340 'rfkill',
1341 'ldconfig',
1342 'efi',
1343 'tpm',
1344 'ima',
1345 'smack',
1346 'gshadow',
1347 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001348 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001349 'nss-systemd']
1350 have = get_option(term)
1351 name = 'ENABLE_' + term.underscorify().to_upper()
1352 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001353endforeach
1354
Yu Watanabe08540a92018-07-18 09:25:57 +09001355foreach tuple : [['nss-mymachines', 'machined'],
1356 ['nss-resolve', 'resolve']]
1357 want = get_option(tuple[0])
1358 if want != 'false'
1359 have = get_option(tuple[1])
1360 if want == 'true' and not have
1361 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1362 endif
1363 else
1364 have = false
1365 endif
1366 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1367 conf.set10(name, have)
1368endforeach
1369
1370enable_nss = false
1371foreach term : ['ENABLE_NSS_MYHOSTNAME',
1372 'ENABLE_NSS_MYMACHINES',
1373 'ENABLE_NSS_RESOLVE',
1374 'ENABLE_NSS_SYSTEMD']
1375 if conf.get(term) == 1
1376 enable_nss = true
1377 endif
1378endforeach
1379conf.set10('ENABLE_NSS', enable_nss)
1380
Yu Watanabe348b4432018-05-07 18:17:35 +09001381conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001382
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001383tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001384fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001385
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001386conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001387
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001388#####################################################################
1389
1390if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001391 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001392
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001393 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001394 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001395 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001396 elif efi_arch == 'x86_64'
1397 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001398 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001399 elif efi_arch == 'arm'
1400 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001401 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001402 elif efi_arch == 'aarch64'
1403 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001404 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001405 else
1406 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001407 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001408 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001409
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001410 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001411 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001412
Yu Watanabeac093402018-05-10 16:04:16 +09001413 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001414else
1415 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001416endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001417conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001418
1419#####################################################################
1420
1421config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001422 output : 'config.h',
1423 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001424
Yu Watanabe348b4432018-05-07 18:17:35 +09001425meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1426
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001427includes = include_directories('src/basic',
1428 'src/shared',
1429 'src/systemd',
1430 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001431 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001432 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001433 'src/resolve',
1434 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001435 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001436 'src/login',
1437 'src/udev',
1438 'src/libudev',
1439 'src/core',
1440 'src/libsystemd/sd-bus',
1441 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001442 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001443 'src/libsystemd/sd-hwdb',
1444 'src/libsystemd/sd-id128',
1445 'src/libsystemd/sd-netlink',
1446 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001447 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001448 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001449 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001450
1451add_project_arguments('-include', 'config.h', language : 'c')
1452
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001453generate_gperfs = find_program('tools/generate-gperfs.py')
1454
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001455subdir('po')
1456subdir('catalog')
1457subdir('src/systemd')
1458subdir('src/basic')
1459subdir('src/libsystemd')
1460subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001461subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001462subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001463
1464libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001465 'journal-core',
1466 libjournal_core_sources,
1467 journald_gperf_c,
1468 include_directories : includes,
1469 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001470
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001471libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001472libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001473 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001474 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001475 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001476 include_directories : includes,
1477 link_args : ['-shared',
1478 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001479 link_with : [libbasic,
1480 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001481 link_whole : [libsystemd_static,
1482 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001483 dependencies : [threads,
1484 librt,
1485 libxz,
1486 liblz4],
1487 link_depends : libsystemd_sym,
1488 install : true,
1489 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001490
Davide Cavalca70848ec2018-04-09 02:43:35 -07001491static_libsystemd = get_option('static-libsystemd')
1492static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1493
1494install_libsystemd_static = static_library(
1495 'systemd',
1496 libsystemd_sources,
1497 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001498 basic_sources,
1499 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001500 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001501 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001502 build_by_default : static_libsystemd != 'false',
1503 install : static_libsystemd != 'false',
1504 install_dir : rootlibdir,
1505 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1506 dependencies : [threads,
1507 librt,
1508 libxz,
1509 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001510 libcap,
1511 libblkid,
1512 libmount,
1513 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001514 libgcrypt],
1515 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1516
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001517############################################################
1518
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001519# binaries that have --help and are intended for use by humans,
1520# usually, but not always, installed in /bin.
1521public_programs = []
1522
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001523subdir('src/libudev')
1524subdir('src/shared')
1525subdir('src/core')
1526subdir('src/udev')
1527subdir('src/network')
1528
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001529subdir('src/analyze')
1530subdir('src/journal-remote')
1531subdir('src/coredump')
1532subdir('src/hostname')
1533subdir('src/import')
1534subdir('src/kernel-install')
1535subdir('src/locale')
1536subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001537subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001538subdir('src/nspawn')
1539subdir('src/resolve')
1540subdir('src/timedate')
1541subdir('src/timesync')
1542subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001543subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001544
1545subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001546subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001547subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001548subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001549
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001550############################################################
1551
1552# only static linking apart from libdl, to make sure that the
1553# module is linked to all libraries that it uses.
1554test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001555 'test-dlopen',
1556 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001557 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001558 include_directories : includes,
1559 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001560 dependencies : [libdl],
1561 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001562
Yu Watanabe08540a92018-07-18 09:25:57 +09001563foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001564 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001565 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1566 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001567
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001568 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001569 if condition
1570 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001571
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001572 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001573 version_script_arg = join_paths(meson.source_root(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001574
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001575 nss = shared_library(
1576 'nss_' + module,
1577 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001578 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001579 version : '2',
1580 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001581 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1582 link_args : ['-Wl,-z,nodelete',
1583 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001584 '-Wl,--version-script=' + version_script_arg,
1585 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001586 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001587 libbasic],
1588 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001589 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001590 link_depends : sym,
1591 install : true,
1592 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001593
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001594 # We cannot use shared_module because it does not support version suffix.
1595 # Unfortunately shared_library insists on creating the symlink…
1596 meson.add_install_script('sh', '-c',
1597 'rm $DESTDIR@0@/libnss_@1@.so'
1598 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001599
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001600 if want_tests != 'false'
1601 test('dlopen-nss_' + module,
1602 test_dlopen,
1603 # path to dlopen must include a slash
1604 args : nss.full_path())
1605 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001606 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001607endforeach
1608
1609############################################################
1610
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001611executable('systemd',
1612 systemd_sources,
1613 include_directories : includes,
1614 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001615 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001616 dependencies : [threads,
1617 librt,
1618 libseccomp,
1619 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001620 libmount,
1621 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001622 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001623 install : true,
1624 install_dir : rootlibexecdir)
1625
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001626meson.add_install_script(meson_make_symlink,
1627 join_paths(rootlibexecdir, 'systemd'),
1628 join_paths(rootsbindir, 'init'))
1629
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001630exe = executable('systemd-analyze',
1631 systemd_analyze_sources,
1632 include_directories : includes,
1633 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001634 libshared],
1635 dependencies : [threads,
1636 librt,
1637 libseccomp,
1638 libselinux,
1639 libmount,
1640 libblkid],
1641 install_rpath : rootlibexecdir,
1642 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001643public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001644
1645executable('systemd-journald',
1646 systemd_journald_sources,
1647 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001648 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001649 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001650 dependencies : [threads,
1651 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001652 liblz4,
1653 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001654 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001655 install : true,
1656 install_dir : rootlibexecdir)
1657
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001658exe = executable('systemd-cat',
1659 systemd_cat_sources,
1660 include_directories : includes,
1661 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001662 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001663 dependencies : [threads],
1664 install_rpath : rootlibexecdir,
1665 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001666public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001667
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001668exe = executable('journalctl',
1669 journalctl_sources,
1670 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001671 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001672 dependencies : [threads,
1673 libqrencode,
1674 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001675 liblz4,
1676 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001677 install_rpath : rootlibexecdir,
1678 install : true,
1679 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001680public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001681
1682executable('systemd-getty-generator',
1683 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001684 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001685 link_with : [libshared],
1686 install_rpath : rootlibexecdir,
1687 install : true,
1688 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001689
1690executable('systemd-debug-generator',
1691 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001692 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001693 link_with : [libshared],
1694 install_rpath : rootlibexecdir,
1695 install : true,
1696 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001697
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001698executable('systemd-run-generator',
1699 'src/run-generator/run-generator.c',
1700 include_directories : includes,
1701 link_with : [libshared],
1702 install_rpath : rootlibexecdir,
1703 install : true,
1704 install_dir : systemgeneratordir)
1705
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001706executable('systemd-fstab-generator',
1707 'src/fstab-generator/fstab-generator.c',
1708 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001709 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001710 link_with : [libshared],
1711 install_rpath : rootlibexecdir,
1712 install : true,
1713 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001714
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001715if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001716 executable('30-systemd-environment-d-generator',
1717 'src/environment-d-generator/environment-d-generator.c',
1718 include_directories : includes,
1719 link_with : [libshared],
1720 install_rpath : rootlibexecdir,
1721 install : true,
1722 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001723
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001724 meson.add_install_script(meson_make_symlink,
1725 join_paths(sysconfdir, 'environment'),
1726 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001727endif
1728
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001729if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001730 executable('systemd-hibernate-resume-generator',
1731 'src/hibernate-resume/hibernate-resume-generator.c',
1732 include_directories : includes,
1733 link_with : [libshared],
1734 install_rpath : rootlibexecdir,
1735 install : true,
1736 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001737
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001738 executable('systemd-hibernate-resume',
1739 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001740 include_directories : includes,
1741 link_with : [libshared],
1742 install_rpath : rootlibexecdir,
1743 install : true,
1744 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001745endif
1746
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001747if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001748 executable('systemd-gpt-auto-generator',
1749 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001750 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001751 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001752 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001753 dependencies : libblkid,
1754 install_rpath : rootlibexecdir,
1755 install : true,
1756 install_dir : systemgeneratordir)
1757
1758 exe = executable('systemd-dissect',
1759 'src/dissect/dissect.c',
1760 include_directories : includes,
1761 link_with : [libshared],
1762 install_rpath : rootlibexecdir,
1763 install : true,
1764 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001765 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001766endif
1767
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001768if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001769 executable('systemd-resolved',
1770 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001771 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001772 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001773 libbasic_gcrypt,
1774 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001775 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001776 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001777 install : true,
1778 install_dir : rootlibexecdir)
1779
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001780 exe = executable('resolvectl',
1781 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001782 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001783 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001784 libbasic_gcrypt,
1785 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001786 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001787 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001788 libm,
1789 libidn],
1790 install_rpath : rootlibexecdir,
1791 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001792 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001793
1794 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001795 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001796 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001797
1798 meson.add_install_script(meson_make_symlink,
1799 join_paths(bindir, 'resolvectl'),
1800 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001801endif
1802
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001803if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001804 executable('systemd-logind',
1805 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001806 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001807 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001808 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001809 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001810 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001811 install_rpath : rootlibexecdir,
1812 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001813 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001814
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001815 exe = executable('loginctl',
1816 loginctl_sources,
1817 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001818 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001819 dependencies : [threads,
1820 liblz4,
1821 libxz],
1822 install_rpath : rootlibexecdir,
1823 install : true,
1824 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001825 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001826
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001827 exe = executable('systemd-inhibit',
1828 'src/login/inhibit.c',
1829 include_directories : includes,
1830 link_with : [libshared],
1831 install_rpath : rootlibexecdir,
1832 install : true,
1833 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001834 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001835
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001836 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001837 version_script_arg = join_paths(meson.source_root(), pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001838 pam_systemd = shared_library(
1839 'pam_systemd',
1840 pam_systemd_c,
1841 name_prefix : '',
1842 include_directories : includes,
1843 link_args : ['-shared',
1844 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001845 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001846 libshared_static],
1847 dependencies : [threads,
1848 libpam,
1849 libpam_misc],
1850 link_depends : pam_systemd_sym,
1851 install : true,
1852 install_dir : pamlibdir)
1853
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001854 if want_tests != 'false'
1855 test('dlopen-pam_systemd',
1856 test_dlopen,
1857 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001858 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001859 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001860 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001861
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001862 executable('systemd-user-runtime-dir',
1863 user_runtime_dir_sources,
1864 include_directories : includes,
1865 link_with : [libshared],
1866 install_rpath : rootlibexecdir,
1867 install : true,
1868 install_dir : rootlibexecdir)
1869endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001870
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001871if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001872 executable('systemd-user-sessions',
1873 'src/user-sessions/user-sessions.c',
1874 include_directories : includes,
1875 link_with : [libshared],
1876 install_rpath : rootlibexecdir,
1877 install : true,
1878 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001879endif
1880
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001881if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001882 exe = executable('bootctl',
1883 'src/boot/bootctl.c',
1884 include_directories : includes,
1885 link_with : [libshared],
1886 dependencies : [libblkid],
1887 install_rpath : rootlibexecdir,
1888 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001889 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001890
1891 executable('systemd-bless-boot',
1892 'src/boot/bless-boot.c',
1893 include_directories : includes,
1894 link_with : [libshared],
1895 dependencies : [libblkid],
1896 install_rpath : rootlibexecdir,
1897 install : true,
1898 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001899
1900 executable('systemd-bless-boot-generator',
1901 'src/boot/bless-boot-generator.c',
1902 include_directories : includes,
1903 link_with : [libshared],
1904 install_rpath : rootlibexecdir,
1905 install : true,
1906 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001907endif
1908
Lennart Poetteringf876f532018-06-25 16:07:33 +02001909executable('systemd-boot-check-no-failures',
1910 'src/boot/boot-check-no-failures.c',
1911 include_directories : includes,
1912 link_with : [libshared],
1913 dependencies : [libblkid],
1914 install_rpath : rootlibexecdir,
1915 install : true,
1916 install_dir : rootlibexecdir)
1917
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001918exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1919 include_directories : includes,
1920 link_with : [libshared],
1921 dependencies : [threads],
1922 install_rpath : rootlibexecdir,
1923 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001924public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001925
Felipe Satelerf3794362018-05-22 15:08:57 -04001926
1927if get_option('link-systemctl-shared')
1928 systemctl_link_with = [libshared]
1929else
1930 systemctl_link_with = [libsystemd_static,
1931 libshared_static,
1932 libjournal_client,
1933 libbasic_gcrypt]
1934endif
1935
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001936exe = executable('systemctl', 'src/systemctl/systemctl.c',
1937 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001938 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001939 dependencies : [threads,
1940 libcap,
1941 libselinux,
1942 libxz,
1943 liblz4],
1944 install_rpath : rootlibexecdir,
1945 install : true,
1946 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001947public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001948
Lennart Poettering61d05782018-04-16 21:41:40 +02001949if conf.get('ENABLE_PORTABLED') == 1
1950 executable('systemd-portabled',
1951 systemd_portabled_sources,
1952 include_directories : includes,
1953 link_with : [libshared],
1954 dependencies : [threads],
1955 install_rpath : rootlibexecdir,
1956 install : true,
1957 install_dir : rootlibexecdir)
1958
1959 exe = executable('portablectl', 'src/portable/portablectl.c',
1960 include_directories : includes,
1961 link_with : [libshared],
1962 dependencies : [threads],
1963 install_rpath : rootlibexecdir,
1964 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001965 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001966 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001967endif
1968
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001969foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1970 meson.add_install_script(meson_make_symlink,
1971 join_paths(rootbindir, 'systemctl'),
1972 join_paths(rootsbindir, alias))
1973endforeach
1974
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001975if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001976 executable('systemd-backlight',
1977 'src/backlight/backlight.c',
1978 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001979 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001980 install_rpath : rootlibexecdir,
1981 install : true,
1982 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001983endif
1984
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001985if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001986 executable('systemd-rfkill',
1987 'src/rfkill/rfkill.c',
1988 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001989 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001990 install_rpath : rootlibexecdir,
1991 install : true,
1992 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001993endif
1994
1995executable('systemd-system-update-generator',
1996 'src/system-update-generator/system-update-generator.c',
1997 include_directories : includes,
1998 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001999 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002000 install : true,
2001 install_dir : systemgeneratordir)
2002
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002003if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002004 executable('systemd-cryptsetup',
2005 'src/cryptsetup/cryptsetup.c',
2006 include_directories : includes,
2007 link_with : [libshared],
2008 dependencies : [libcryptsetup],
2009 install_rpath : rootlibexecdir,
2010 install : true,
2011 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002012
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002013 executable('systemd-cryptsetup-generator',
2014 'src/cryptsetup/cryptsetup-generator.c',
2015 include_directories : includes,
2016 link_with : [libshared],
2017 dependencies : [libcryptsetup],
2018 install_rpath : rootlibexecdir,
2019 install : true,
2020 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002021
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002022 executable('systemd-veritysetup',
2023 'src/veritysetup/veritysetup.c',
2024 include_directories : includes,
2025 link_with : [libshared],
2026 dependencies : [libcryptsetup],
2027 install_rpath : rootlibexecdir,
2028 install : true,
2029 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002030
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002031 executable('systemd-veritysetup-generator',
2032 'src/veritysetup/veritysetup-generator.c',
2033 include_directories : includes,
2034 link_with : [libshared],
2035 dependencies : [libcryptsetup],
2036 install_rpath : rootlibexecdir,
2037 install : true,
2038 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002039endif
2040
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002041if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002042 executable('systemd-sysv-generator',
2043 'src/sysv-generator/sysv-generator.c',
2044 include_directories : includes,
2045 link_with : [libshared],
2046 install_rpath : rootlibexecdir,
2047 install : true,
2048 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002049
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002050 executable('systemd-rc-local-generator',
2051 'src/rc-local-generator/rc-local-generator.c',
2052 include_directories : includes,
2053 link_with : [libshared],
2054 install_rpath : rootlibexecdir,
2055 install : true,
2056 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002057endif
2058
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002059if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002060 executable('systemd-hostnamed',
2061 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002062 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002063 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002064 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002065 install : true,
2066 install_dir : rootlibexecdir)
2067
2068 exe = executable('hostnamectl',
2069 'src/hostname/hostnamectl.c',
2070 include_directories : includes,
2071 link_with : [libshared],
2072 install_rpath : rootlibexecdir,
2073 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002074 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002075endif
2076
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002077if conf.get('ENABLE_LOCALED') == 1
2078 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002079 # logind will load libxkbcommon.so dynamically on its own
2080 deps = [libdl]
2081 else
2082 deps = []
2083 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002084
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002085 executable('systemd-localed',
2086 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002087 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002088 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002089 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002090 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002091 install : true,
2092 install_dir : rootlibexecdir)
2093
2094 exe = executable('localectl',
2095 localectl_sources,
2096 include_directories : includes,
2097 link_with : [libshared],
2098 install_rpath : rootlibexecdir,
2099 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002100 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002101endif
2102
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002103if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002104 executable('systemd-timedated',
2105 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002106 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002107 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002108 install_rpath : rootlibexecdir,
2109 install : true,
2110 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002111endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002112
Yu Watanabe6129ec82018-05-03 18:07:43 +09002113if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002114 exe = executable('timedatectl',
2115 'src/timedate/timedatectl.c',
2116 include_directories : includes,
2117 install_rpath : rootlibexecdir,
2118 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002119 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002120 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002121 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002122endif
2123
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002124if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002125 executable('systemd-timesyncd',
2126 systemd_timesyncd_sources,
2127 include_directories : includes,
2128 link_with : [libshared],
2129 dependencies : [threads,
2130 libm],
2131 install_rpath : rootlibexecdir,
2132 install : true,
2133 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002134
2135 executable('systemd-time-wait-sync',
2136 'src/time-wait-sync/time-wait-sync.c',
2137 include_directories : includes,
2138 link_with : [libshared],
2139 install_rpath : rootlibexecdir,
2140 install : true,
2141 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002142endif
2143
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002144if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002145 executable('systemd-machined',
2146 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002147 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002148 link_with : [libmachine_core,
2149 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002150 install_rpath : rootlibexecdir,
2151 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002152 install_dir : rootlibexecdir)
2153
2154 exe = executable('machinectl',
2155 'src/machine/machinectl.c',
2156 include_directories : includes,
2157 link_with : [libshared],
2158 dependencies : [threads,
2159 libxz,
2160 liblz4],
2161 install_rpath : rootlibexecdir,
2162 install : true,
2163 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002164 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002165endif
2166
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002167if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002168 executable('systemd-importd',
2169 systemd_importd_sources,
2170 include_directories : includes,
2171 link_with : [libshared],
2172 dependencies : [threads],
2173 install_rpath : rootlibexecdir,
2174 install : true,
2175 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002176
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002177 systemd_pull = executable('systemd-pull',
2178 systemd_pull_sources,
2179 include_directories : includes,
2180 link_with : [libshared],
2181 dependencies : [libcurl,
2182 libz,
2183 libbzip2,
2184 libxz,
2185 libgcrypt],
2186 install_rpath : rootlibexecdir,
2187 install : true,
2188 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002189
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002190 systemd_import = executable('systemd-import',
2191 systemd_import_sources,
2192 include_directories : includes,
2193 link_with : [libshared],
2194 dependencies : [libcurl,
2195 libz,
2196 libbzip2,
2197 libxz],
2198 install_rpath : rootlibexecdir,
2199 install : true,
2200 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002201
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002202 systemd_import_fs = executable('systemd-import-fs',
2203 systemd_import_fs_sources,
2204 include_directories : includes,
2205 link_with : [libshared],
2206 install_rpath : rootlibexecdir,
2207 install : true,
2208 install_dir : rootlibexecdir)
2209
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002210 systemd_export = executable('systemd-export',
2211 systemd_export_sources,
2212 include_directories : includes,
2213 link_with : [libshared],
2214 dependencies : [libcurl,
2215 libz,
2216 libbzip2,
2217 libxz],
2218 install_rpath : rootlibexecdir,
2219 install : true,
2220 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002221
2222 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002223endif
2224
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002225if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002226 exe = executable('systemd-journal-upload',
2227 systemd_journal_upload_sources,
2228 include_directories : includes,
2229 link_with : [libshared],
2230 dependencies : [threads,
2231 libcurl,
2232 libgnutls,
2233 libxz,
2234 liblz4],
2235 install_rpath : rootlibexecdir,
2236 install : true,
2237 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002238 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002239endif
2240
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002241if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002242 s_j_remote = executable('systemd-journal-remote',
2243 systemd_journal_remote_sources,
2244 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002245 link_with : [libshared,
2246 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002247 dependencies : [threads,
2248 libmicrohttpd,
2249 libgnutls,
2250 libxz,
2251 liblz4],
2252 install_rpath : rootlibexecdir,
2253 install : true,
2254 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002255
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002256 s_j_gatewayd = executable('systemd-journal-gatewayd',
2257 systemd_journal_gatewayd_sources,
2258 include_directories : includes,
2259 link_with : [libshared],
2260 dependencies : [threads,
2261 libmicrohttpd,
2262 libgnutls,
2263 libxz,
2264 liblz4],
2265 install_rpath : rootlibexecdir,
2266 install : true,
2267 install_dir : rootlibexecdir)
2268 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002269endif
2270
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002271if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002272 executable('systemd-coredump',
2273 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002274 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002275 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002276 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002277 libacl,
2278 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002279 libxz,
2280 liblz4],
2281 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002282 install : true,
2283 install_dir : rootlibexecdir)
2284
2285 exe = executable('coredumpctl',
2286 coredumpctl_sources,
2287 include_directories : includes,
2288 link_with : [libshared],
2289 dependencies : [threads,
2290 libxz,
2291 liblz4],
2292 install_rpath : rootlibexecdir,
2293 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002294 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002295endif
2296
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002297if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002298 exe = executable('systemd-binfmt',
2299 'src/binfmt/binfmt.c',
2300 include_directories : includes,
2301 link_with : [libshared],
2302 install_rpath : rootlibexecdir,
2303 install : true,
2304 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002305 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002306
2307 meson.add_install_script('sh', '-c',
2308 mkdir_p.format(binfmtdir))
2309 meson.add_install_script('sh', '-c',
2310 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2311endif
2312
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002313if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002314 executable('systemd-vconsole-setup',
2315 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002316 include_directories : includes,
2317 link_with : [libshared],
2318 install_rpath : rootlibexecdir,
2319 install : true,
2320 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002321endif
2322
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002323if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002324 executable('systemd-random-seed',
2325 'src/random-seed/random-seed.c',
2326 include_directories : includes,
2327 link_with : [libshared],
2328 install_rpath : rootlibexecdir,
2329 install : true,
2330 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002331endif
2332
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002333if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002334 executable('systemd-firstboot',
2335 'src/firstboot/firstboot.c',
2336 include_directories : includes,
2337 link_with : [libshared],
2338 dependencies : [libcrypt],
2339 install_rpath : rootlibexecdir,
2340 install : true,
2341 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002342endif
2343
2344executable('systemd-remount-fs',
2345 'src/remount-fs/remount-fs.c',
2346 'src/core/mount-setup.c',
2347 'src/core/mount-setup.h',
2348 include_directories : includes,
2349 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002350 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002351 install : true,
2352 install_dir : rootlibexecdir)
2353
2354executable('systemd-machine-id-setup',
2355 'src/machine-id-setup/machine-id-setup-main.c',
2356 'src/core/machine-id-setup.c',
2357 'src/core/machine-id-setup.h',
2358 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002359 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002360 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002361 install : true,
2362 install_dir : rootbindir)
2363
2364executable('systemd-fsck',
2365 'src/fsck/fsck.c',
2366 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002367 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002368 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002369 install : true,
2370 install_dir : rootlibexecdir)
2371
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002372executable('systemd-growfs',
2373 'src/partition/growfs.c',
2374 include_directories : includes,
2375 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002376 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002377 install_rpath : rootlibexecdir,
2378 install : true,
2379 install_dir : rootlibexecdir)
2380
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002381executable('systemd-makefs',
2382 'src/partition/makefs.c',
2383 include_directories : includes,
2384 link_with : [libshared],
2385 install_rpath : rootlibexecdir,
2386 install : true,
2387 install_dir : rootlibexecdir)
2388
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002389executable('systemd-sleep',
2390 'src/sleep/sleep.c',
2391 include_directories : includes,
2392 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002393 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002394 install : true,
2395 install_dir : rootlibexecdir)
2396
Yu Watanabed25e1272019-01-03 02:32:57 +09002397install_data('src/sleep/sleep.conf',
2398 install_dir : pkgsysconfdir)
2399
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002400exe = executable('systemd-sysctl',
2401 'src/sysctl/sysctl.c',
2402 include_directories : includes,
2403 link_with : [libshared],
2404 install_rpath : rootlibexecdir,
2405 install : true,
2406 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002407public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002408
2409executable('systemd-ac-power',
2410 'src/ac-power/ac-power.c',
2411 include_directories : includes,
2412 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002413 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002414 install : true,
2415 install_dir : rootlibexecdir)
2416
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002417exe = executable('systemd-detect-virt',
2418 'src/detect-virt/detect-virt.c',
2419 include_directories : includes,
2420 link_with : [libshared],
2421 install_rpath : rootlibexecdir,
2422 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002423public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002424
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002425exe = executable('systemd-delta',
2426 'src/delta/delta.c',
2427 include_directories : includes,
2428 link_with : [libshared],
2429 install_rpath : rootlibexecdir,
2430 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002431public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002432
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002433exe = executable('systemd-escape',
2434 'src/escape/escape.c',
2435 include_directories : includes,
2436 link_with : [libshared],
2437 install_rpath : rootlibexecdir,
2438 install : true,
2439 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002440public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002441
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002442exe = executable('systemd-notify',
2443 'src/notify/notify.c',
2444 include_directories : includes,
2445 link_with : [libshared],
2446 install_rpath : rootlibexecdir,
2447 install : true,
2448 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002449public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002450
2451executable('systemd-volatile-root',
2452 'src/volatile-root/volatile-root.c',
2453 include_directories : includes,
2454 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002455 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002456 install : true,
2457 install_dir : rootlibexecdir)
2458
2459executable('systemd-cgroups-agent',
2460 'src/cgroups-agent/cgroups-agent.c',
2461 include_directories : includes,
2462 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002463 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002464 install : true,
2465 install_dir : rootlibexecdir)
2466
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002467exe = executable('systemd-id128',
2468 'src/id128/id128.c',
2469 include_directories : includes,
2470 link_with : [libshared],
2471 install_rpath : rootlibexecdir,
2472 install : true)
2473public_programs += exe
2474
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002475exe = executable('systemd-path',
2476 'src/path/path.c',
2477 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002478 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002479 install_rpath : rootlibexecdir,
2480 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002481public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002482
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002483exe = executable('systemd-ask-password',
2484 'src/ask-password/ask-password.c',
2485 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002486 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002487 install_rpath : rootlibexecdir,
2488 install : true,
2489 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002490public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002491
2492executable('systemd-reply-password',
2493 'src/reply-password/reply-password.c',
2494 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002495 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002496 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002497 install : true,
2498 install_dir : rootlibexecdir)
2499
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002500exe = executable('systemd-tty-ask-password-agent',
2501 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2502 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002503 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002504 install_rpath : rootlibexecdir,
2505 install : true,
2506 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002507public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002508
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002509exe = executable('systemd-cgls',
2510 'src/cgls/cgls.c',
2511 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002512 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002513 install_rpath : rootlibexecdir,
2514 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002515public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002516
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002517exe = executable('systemd-cgtop',
2518 'src/cgtop/cgtop.c',
2519 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002520 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002521 install_rpath : rootlibexecdir,
2522 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002523public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002524
2525executable('systemd-initctl',
2526 'src/initctl/initctl.c',
2527 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002528 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002529 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002530 install : true,
2531 install_dir : rootlibexecdir)
2532
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002533exe = executable('systemd-mount',
2534 'src/mount/mount-tool.c',
2535 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002536 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002537 install_rpath : rootlibexecdir,
2538 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002539public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002540
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002541meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002542 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002543
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002544exe = executable('systemd-run',
2545 'src/run/run.c',
2546 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002547 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002548 install_rpath : rootlibexecdir,
2549 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002550public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002551
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002552exe = executable('systemd-stdio-bridge',
2553 'src/stdio-bridge/stdio-bridge.c',
2554 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002555 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002556 install_rpath : rootlibexecdir,
2557 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002558public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002559
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002560exe = executable('busctl',
2561 'src/busctl/busctl.c',
2562 'src/busctl/busctl-introspect.c',
2563 'src/busctl/busctl-introspect.h',
2564 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002565 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002566 install_rpath : rootlibexecdir,
2567 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002568public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002569
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002570if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002571 exe = executable('systemd-sysusers',
2572 'src/sysusers/sysusers.c',
2573 include_directories : includes,
2574 link_with : [libshared],
2575 install_rpath : rootlibexecdir,
2576 install : true,
2577 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002578 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002579endif
2580
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002581if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002582 exe = executable('systemd-tmpfiles',
2583 'src/tmpfiles/tmpfiles.c',
2584 include_directories : includes,
2585 link_with : [libshared],
2586 dependencies : [libacl],
2587 install_rpath : rootlibexecdir,
2588 install : true,
2589 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002590 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002591
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002592 if want_tests != 'false'
2593 test('test-systemd-tmpfiles',
2594 test_systemd_tmpfiles_py,
2595 # https://github.com/mesonbuild/meson/issues/2681
2596 args : exe.full_path())
2597 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002598endif
2599
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002600if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002601 exe = executable('systemd-hwdb',
2602 'src/hwdb/hwdb.c',
2603 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2604 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002605 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002606 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002607 install : true,
2608 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002609 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002610endif
2611
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002612if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002613 executable('systemd-quotacheck',
2614 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002615 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002616 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002617 install_rpath : rootlibexecdir,
2618 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002619 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002620endif
2621
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002622exe = executable('systemd-socket-proxyd',
2623 'src/socket-proxy/socket-proxyd.c',
2624 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002625 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002626 dependencies : [threads],
2627 install_rpath : rootlibexecdir,
2628 install : true,
2629 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002630public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002631
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002632exe = executable('systemd-udevd',
2633 systemd_udevd_sources,
2634 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002635 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002636 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002637 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002638 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002639 dependencies : [threads,
2640 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002641 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002642 libacl,
2643 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002644 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002645 install : true,
2646 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002647public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002648
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002649exe = executable('udevadm',
2650 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002651 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002652 include_directories : includes,
2653 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002654 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002655 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002656 dependencies : [threads,
2657 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002658 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002659 libacl,
2660 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002661 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002662 install : true,
2663 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002664public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002665
2666executable('systemd-shutdown',
2667 systemd_shutdown_sources,
2668 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002669 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002670 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002671 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002672 install : true,
2673 install_dir : rootlibexecdir)
2674
2675executable('systemd-update-done',
2676 'src/update-done/update-done.c',
2677 include_directories : includes,
2678 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002679 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002680 install : true,
2681 install_dir : rootlibexecdir)
2682
2683executable('systemd-update-utmp',
2684 'src/update-utmp/update-utmp.c',
2685 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002686 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002687 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002688 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002689 install : true,
2690 install_dir : rootlibexecdir)
2691
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002692if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002693 executable('systemd-modules-load',
2694 'src/modules-load/modules-load.c',
2695 include_directories : includes,
2696 link_with : [libshared],
2697 dependencies : [libkmod],
2698 install_rpath : rootlibexecdir,
2699 install : true,
2700 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002701
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002702 meson.add_install_script('sh', '-c',
2703 mkdir_p.format(modulesloaddir))
2704 meson.add_install_script('sh', '-c',
2705 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002706endif
2707
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002708exe = executable('systemd-nspawn',
2709 systemd_nspawn_sources,
2710 'src/core/mount-setup.c', # FIXME: use a variable?
2711 'src/core/mount-setup.h',
2712 'src/core/loopback-setup.c',
2713 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002714 include_directories : includes,
2715 link_with : [libnspawn_core,
2716 libshared],
2717 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002718 install_rpath : rootlibexecdir,
2719 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002720public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002721
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002722if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002723 executable('systemd-networkd',
2724 systemd_networkd_sources,
2725 include_directories : includes,
2726 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002727 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002728 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002729 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002730 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002731 install_rpath : rootlibexecdir,
2732 install : true,
2733 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002734
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002735 executable('systemd-networkd-wait-online',
2736 systemd_networkd_wait_online_sources,
2737 include_directories : includes,
2738 link_with : [libnetworkd_core,
2739 libshared],
2740 install_rpath : rootlibexecdir,
2741 install : true,
2742 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002743
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002744 exe = executable('networkctl',
2745 networkctl_sources,
2746 include_directories : includes,
2747 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002748 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002749 install_rpath : rootlibexecdir,
2750 install : true,
2751 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002752 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002753endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002754
2755executable('systemd-sulogin-shell',
2756 ['src/sulogin-shell/sulogin-shell.c'],
2757 include_directories : includes,
2758 link_with : [libshared],
2759 install_rpath : rootlibexecdir,
2760 install : true,
2761 install_dir : rootlibexecdir)
2762
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002763############################################################
2764
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002765custom_target(
2766 'systemd-runtest.env',
2767 output : 'systemd-runtest.env',
2768 command : ['sh', '-c', '{ ' +
2769 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(meson.current_source_dir(), 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002770 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002771 '} >@OUTPUT@'],
2772 build_by_default : true)
2773
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002774foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002775 sources = tuple[0]
2776 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2777 dependencies = tuple[2]
2778 condition = tuple.length() >= 4 ? tuple[3] : ''
2779 type = tuple.length() >= 5 ? tuple[4] : ''
2780 defs = tuple.length() >= 6 ? tuple[5] : []
2781 incs = tuple.length() >= 7 ? tuple[6] : includes
2782 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002783
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002784 name = sources[0].split('/')[-1].split('.')[0]
2785 if type.startswith('timeout=')
2786 timeout = type.split('=')[1].to_int()
2787 type = ''
2788 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002789
2790 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002791 exe = executable(
2792 name,
2793 sources,
2794 include_directories : incs,
2795 link_with : link_with,
2796 dependencies : dependencies,
2797 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002798 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002799 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002800 install : install_tests,
2801 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002802
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002803 if type == 'manual'
2804 message('@0@ is a manual test'.format(name))
2805 elif type == 'unsafe' and want_tests != 'unsafe'
2806 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002807 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002808 test(name, exe,
2809 env : test_env,
2810 timeout : timeout)
2811 endif
2812 else
2813 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2814 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002815endforeach
2816
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002817exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002818 'test-libsystemd-sym',
2819 test_libsystemd_sym_c,
2820 include_directories : includes,
2821 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002822 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002823 install : install_tests,
2824 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002825if want_tests != 'false'
2826 test('test-libsystemd-sym', exe)
2827endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002828
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002829exe = executable(
2830 'test-libsystemd-static-sym',
2831 test_libsystemd_sym_c,
2832 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002833 link_with : [install_libsystemd_static],
2834 dependencies : [threads], # threads is already included in dependencies on the library,
2835 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002836 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002837 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002838 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002839if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002840 test('test-libsystemd-static-sym', exe)
2841endif
2842
2843exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002844 'test-libudev-sym',
2845 test_libudev_sym_c,
2846 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002847 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002848 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002849 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002850 install : install_tests,
2851 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002852if want_tests != 'false'
2853 test('test-libudev-sym', exe)
2854endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002855
2856exe = executable(
2857 'test-libudev-static-sym',
2858 test_libudev_sym_c,
2859 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002860 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002861 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002862 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002863 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002864 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002865if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002866 test('test-libudev-static-sym', exe)
2867endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002868
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002869############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002870
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002871fuzzer_exes = []
2872
Michael Olbrich59967402018-11-11 11:27:35 +01002873if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002874foreach tuple : fuzzers
2875 sources = tuple[0]
2876 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2877 dependencies = tuple[2]
2878 defs = tuple.length() >= 4 ? tuple[3] : []
2879 incs = tuple.length() >= 5 ? tuple[4] : includes
2880
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002881 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002882 dependencies += fuzzing_engine
2883 else
2884 sources += 'src/fuzz/fuzz-main.c'
2885 endif
2886
2887 name = sources[0].split('/')[-1].split('.')[0]
2888
2889 fuzzer_exes += executable(
2890 name,
2891 sources,
2892 include_directories : [incs, include_directories('src/fuzz')],
2893 link_with : link_with,
2894 dependencies : dependencies,
2895 c_args : defs,
2896 install : false)
2897endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002898endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002899
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01002900run_target('fuzzers',
2901 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002902 command : ['true'])
2903
2904############################################################
2905
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002906make_directive_index_py = find_program('tools/make-directive-index.py')
2907make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002908xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002909hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002910
2911subdir('units')
2912subdir('sysctl.d')
2913subdir('sysusers.d')
2914subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002915subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002916subdir('hwdb')
2917subdir('network')
2918subdir('man')
2919subdir('shell-completion/bash')
2920subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002921subdir('docs/sysvinit')
2922subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002923
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002924install_subdir('factory/etc',
2925 install_dir : factorydir)
2926
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002927install_data('xorg/50-systemd-user.sh',
2928 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002929install_data('modprobe.d/systemd.conf',
2930 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002931install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002932 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002933 'NEWS',
2934 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302935 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002936 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002937 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302938 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002939 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002940 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002941 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002942 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2943 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002944
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002945meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2946meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2947
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002948############################################################
2949
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002950meson_check_help = find_program('tools/meson-check-help.sh')
2951
2952foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002953 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002954 if want_tests != 'false'
2955 test('check-help-' + name,
2956 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002957 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002958 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002959endforeach
2960
2961############################################################
2962
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002963# Enable tests for all supported sanitizers
2964foreach tuple : sanitizers
2965 sanitizer = tuple[0]
2966 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002967
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002968 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002969 prev = ''
2970 foreach p : fuzz_regression_tests
2971 b = p.split('/')[-2]
2972 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002973
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002974 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002975
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002976 if name != prev
2977 if want_tests == 'false'
2978 message('Not compiling @0@ because tests is set to false'.format(name))
2979 elif slow_tests
2980 exe = custom_target(
2981 name,
2982 output : name,
2983 depends : build,
2984 command : [env, 'ln', '-fs',
2985 join_paths(build.full_path(), b),
2986 '@OUTPUT@'],
2987 build_by_default : true)
2988 else
2989 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2990 endif
2991 endif
2992 prev = name
2993
2994 if want_tests != 'false' and slow_tests
2995 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2996 env,
2997 args : [exe.full_path(),
Zbigniew Jędrzejewski-Szmeke6bad672018-08-10 17:15:05 +02002998 join_paths(meson.source_root(), p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002999 endif
3000 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003001 endif
3002endforeach
3003
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003004
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003005############################################################
3006
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003007if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003008 all_files = run_command(
3009 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003010 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003011 'ls-files',
3012 ':/*.[ch]'])
3013 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003014
userwithuide85a6902017-08-09 13:41:44 +00003015 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003016 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003017 output : 'tags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003018 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.source_root())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003019 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003020 'ctags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003021 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.source_root())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003022endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003023
3024if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003025 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003026 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003027 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003028 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003029endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003030
3031if git.found()
3032 git_head = run_command(
3033 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003034 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003035 'rev-parse', 'HEAD']).stdout().strip()
3036 git_head_short = run_command(
3037 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003038 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003039 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3040
3041 run_target(
3042 'git-snapshot',
3043 command : ['git', 'archive',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003044 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.source_root(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003045 git_head_short),
3046 '--prefix', 'systemd-@0@/'.format(git_head),
3047 'HEAD'])
3048endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003049
3050############################################################
3051
Lennart Poettering51b13862017-12-20 12:51:14 +01003052meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3053run_target(
3054 'check-api-docs',
3055 depends : [man, libsystemd, libudev],
3056 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3057
3058############################################################
3059
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003060status = [
3061 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3062
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003063 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003064 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003065 'prefix directory: @0@'.format(prefixdir),
3066 'rootprefix directory: @0@'.format(rootprefixdir),
3067 'sysconf directory: @0@'.format(sysconfdir),
3068 'include directory: @0@'.format(includedir),
3069 'lib directory: @0@'.format(libdir),
3070 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003071 'SysV init scripts: @0@'.format(sysvinit_path),
3072 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003073 'PAM modules directory: @0@'.format(pamlibdir),
3074 'PAM configuration directory: @0@'.format(pamconfdir),
3075 'RPM macros directory: @0@'.format(rpmmacrosdir),
3076 'modprobe.d directory: @0@'.format(modprobedir),
3077 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3078 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3079 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3080 'bash completions directory: @0@'.format(bashcompletiondir),
3081 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003082 'extra start script: @0@'.format(get_option('rc-local')),
3083 'extra stop script: @0@'.format(get_option('halt-local')),
3084 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3085 get_option('debug-tty')),
3086 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003087 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003088 'maximum system UID: @0@'.format(system_uid_max),
3089 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003090 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3091 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3092 'minimum container UID base: @0@'.format(container_uid_base_min),
3093 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003094 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003095 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003096 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003097 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003098 'nobody user name: @0@'.format(nobody_user),
3099 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003100 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003101 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003102
3103 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003104 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003105 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003106 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003107 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
3108 'default locale: @0@'.format(default_locale)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003109
3110alt_dns_servers = '\n '.join(dns_servers.split(' '))
3111alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3112status += [
3113 'default DNS servers: @0@'.format(alt_dns_servers),
3114 'default NTP servers: @0@'.format(alt_ntp_servers)]
3115
3116alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3117 '@@0@'.format(time_epoch)).stdout().strip()
3118status += [
3119 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3120
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003121status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003122 'static libsystemd: @0@'.format(static_libsystemd),
3123 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003124
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003125# TODO:
3126# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3127# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3128# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3129
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003130if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003131 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003132
3133 if have_gnu_efi
3134 status += [
3135 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003136 'EFI CC @0@'.format(' '.join(efi_cc)),
Yu Watanabe359b4962017-11-25 20:35:24 +09003137 'EFI lib directory: @0@'.format(efi_libdir),
3138 'EFI lds directory: @0@'.format(efi_ldsdir),
3139 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003140 endif
3141endif
3142
3143found = []
3144missing = []
3145
3146foreach tuple : [
3147 ['libcryptsetup'],
3148 ['PAM'],
3149 ['AUDIT'],
3150 ['IMA'],
3151 ['AppArmor'],
3152 ['SELinux'],
3153 ['SECCOMP'],
3154 ['SMACK'],
3155 ['zlib'],
3156 ['xz'],
3157 ['lz4'],
3158 ['bzip2'],
3159 ['ACL'],
3160 ['gcrypt'],
3161 ['qrencode'],
3162 ['microhttpd'],
3163 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003164 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003165 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003166 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003167 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003168 ['libidn'],
3169 ['libiptc'],
3170 ['elfutils'],
3171 ['binfmt'],
3172 ['vconsole'],
3173 ['quotacheck'],
3174 ['tmpfiles'],
3175 ['environment.d'],
3176 ['sysusers'],
3177 ['firstboot'],
3178 ['randomseed'],
3179 ['backlight'],
3180 ['rfkill'],
3181 ['logind'],
3182 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003183 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003184 ['importd'],
3185 ['hostnamed'],
3186 ['timedated'],
3187 ['timesyncd'],
3188 ['localed'],
3189 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003190 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003191 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3192 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003193 ['coredump'],
3194 ['polkit'],
3195 ['legacy pkla', install_polkit_pkla],
3196 ['efi'],
3197 ['gnu-efi', have_gnu_efi],
3198 ['kmod'],
3199 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003200 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003201 ['blkid'],
3202 ['dbus'],
3203 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003204 ['nss-myhostname'],
3205 ['nss-mymachines'],
3206 ['nss-resolve'],
3207 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003208 ['hwdb'],
3209 ['tpm'],
3210 ['man pages', want_man],
3211 ['html pages', want_html],
3212 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003213 ['SysV compat'],
3214 ['utmp'],
3215 ['ldconfig'],
3216 ['hibernate'],
3217 ['adm group', get_option('adm-group')],
3218 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003219 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003220 ['debug hashmap'],
3221 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003222 ['debug siphash'],
Yu Watanabe20e97dd2018-11-23 00:28:27 +09003223 ['debug udev'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003224 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003225 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003226 ['link-udev-shared', get_option('link-udev-shared')],
3227 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003228]
3229
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003230 if tuple.length() >= 2
3231 cond = tuple[1]
3232 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003233 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3234 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003235 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003236 endif
3237 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003238 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003239 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003240 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003241 endif
3242endforeach
3243
3244status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003245 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003246 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003247 '',
3248 'disabled features: @0@'.format(', '.join(missing)),
3249 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003250message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003251
3252if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003253 warning('\n' +
3254 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3255 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3256 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003257endif