blob: 2a530654708f027f851304838a2fb7ad2ba6941b [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
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500362# the oss-fuzz fuzzers are not built with -fPIE, so don't
363# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500364if not fuzzer_build
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900365 possible_cc_flags += '-fPIE'
366 possible_link_flags += '-pie'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500367endif
368
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900369if cc.get_id() == 'clang'
370 possible_cc_flags += [
371 '-Wno-typedef-redefinition',
372 '-Wno-gnu-variable-sized-type-not-at-end',
373 ]
374endif
375
376if get_option('buildtype') != 'debug'
377 possible_cc_flags += [
378 '-ffunction-sections',
379 '-fdata-sections',
380 ]
381
382 possible_link_flags += '-Wl,--gc-sections'
383endif
384
385add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900386add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900387
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800388if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400389 #include <time.h>
390 #include <inttypes.h>
391 typedef uint64_t usec_t;
392 usec_t now(clockid_t clock);
393 int main(void) {
394 struct timespec now;
395 return 0;
396 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100397''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400398 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400399endif
400
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200401cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400402
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400403#####################################################################
404# compilation result tests
405
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400406conf.set('_GNU_SOURCE', true)
407conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400408
409conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
410conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
411conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
412conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
413conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
414conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
415conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
416
417decl_headers = '''
418#include <uchar.h>
419#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000420#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100421#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400422'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400423
424foreach decl : ['char16_t',
425 'char32_t',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000426 'struct fib_rule_uid_range',
Susant Sahani926062f2018-11-27 10:58:54 +0530427 'struct fib_rule_port_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100428 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400429 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400430
431 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200432 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
433
434 if decl == 'struct statx'
435 if have
436 want_linux_stat_h = false
437 else
438 have = cc.sizeof(decl,
439 prefix : decl_headers + '#include <linux/stat.h>',
440 args : '-D_GNU_SOURCE') > 0
441 want_linux_stat_h = have
442 endif
443 endif
444
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200445 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400446endforeach
447
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200448conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700449
Yu Watanabe9714c022018-12-02 16:27:02 +0100450foreach decl : [['ETHTOOL_LINK_MODE_10baseT_Half_BIT', 'linux/ethtool.h'],
Yu Watanabe8a716f22018-11-17 23:42:27 +0900451 ['ETHTOOL_LINK_MODE_25000baseCR_Full_BIT', 'linux/ethtool.h'],
452 ['ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT', 'linux/ethtool.h'],
453 ['ETHTOOL_LINK_MODE_1000baseX_Full_BIT', 'linux/ethtool.h'],
454 ['ETHTOOL_LINK_MODE_2500baseT_Full_BIT', 'linux/ethtool.h'],
455 ['ETHTOOL_LINK_MODE_FEC_NONE_BIT', 'linux/ethtool.h'],
Yu Watanabeb6459df2018-12-04 01:28:23 +0100456 ['FRA_TUN_ID', 'linux/fib_rules.h'],
457 ['FRA_SUPPRESS_PREFIXLEN', 'linux/fib_rules.h'],
Yu Watanabe9714c022018-12-02 16:27:02 +0100458 ['FRA_PAD', 'linux/fib_rules.h'],
459 ['FRA_L3MDEV', 'linux/fib_rules.h'],
460 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
461 ['FRA_DPORT_RANGE', 'linux/fib_rules.h'],
462 ['FOU_ATTR_REMCSUM_NOPARTIAL', 'linux/fou.h'],
463 ['FOU_CMD_GET', 'linux/fou.h'],
464 ['IFA_FLAGS', 'linux/if_addr.h'],
465 ['IFLA_BRIDGE_VLAN_TUNNEL_INFO', 'linux/if_bridge.h'],
466 ['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
467 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
468 ['IN6_ADDR_GEN_MODE_RANDOM', 'linux/if_link.h'],
469 ['IFLA_IPVLAN_MODE', 'linux/if_link.h'],
470 ['IPVLAN_MODE_L3S', 'linux/if_link.h'],
471 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
472 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
473 ['IFLA_CARRIER_CHANGES', 'linux/if_link.h'],
474 ['IFLA_PHYS_SWITCH_ID', 'linux/if_link.h'],
475 ['IFLA_LINK_NETNSID', 'linux/if_link.h'],
476 ['IFLA_PHYS_PORT_NAME', 'linux/if_link.h'],
477 ['IFLA_PROTO_DOWN', 'linux/if_link.h'],
478 ['IFLA_GSO_MAX_SIZE', 'linux/if_link.h'],
479 ['IFLA_PAD', 'linux/if_link.h'],
480 ['IFLA_XDP', 'linux/if_link.h'],
481 ['IFLA_EVENT', 'linux/if_link.h'],
482 ['IFLA_IF_NETNSID', 'linux/if_link.h'],
483 ['IFLA_TARGET_NETNSID', 'linux/if_link.h'],
484 ['IFLA_NEW_IFINDEX', 'linux/if_link.h'],
485 ['IFLA_MAX_MTU', 'linux/if_link.h'],
486 ['IFLA_BOND_ACTIVE_SLAVE', 'linux/if_link.h'],
487 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
488 ['IFLA_BOND_AD_ACTOR_SYSTEM', 'linux/if_link.h'],
489 ['IFLA_BOND_TLB_DYNAMIC_LB', 'linux/if_link.h'],
490 ['IFLA_VXLAN_UDP_ZERO_CSUM6_RX', 'linux/if_link.h'],
491 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
492 ['IFLA_VXLAN_COLLECT_METADATA', 'linux/if_link.h'],
493 ['IFLA_VXLAN_LABEL', 'linux/if_link.h'],
494 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
495 ['IFLA_VXLAN_TTL_INHERIT', 'linux/if_link.h'],
496 ['IFLA_GENEVE_TOS', 'linux/if_link.h'],
497 ['IFLA_GENEVE_COLLECT_METADATA', 'linux/if_link.h'],
498 ['IFLA_GENEVE_REMOTE6', 'linux/if_link.h'],
499 ['IFLA_GENEVE_UDP_ZERO_CSUM6_RX', 'linux/if_link.h'],
500 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
501 ['IFLA_GENEVE_TTL_INHERIT', 'linux/if_link.h'],
502 ['IFLA_BR_MAX_AGE', 'linux/if_link.h'],
503 ['IFLA_BR_PRIORITY', 'linux/if_link.h'],
504 ['IFLA_BR_VLAN_PROTOCOL', 'linux/if_link.h'],
505 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
506 ['IFLA_BR_VLAN_STATS_ENABLED', 'linux/if_link.h'],
507 ['IFLA_BR_MCAST_STATS_ENABLED', 'linux/if_link.h'],
508 ['IFLA_BR_MCAST_MLD_VERSION', 'linux/if_link.h'],
509 ['IFLA_BR_VLAN_STATS_PER_PORT', 'linux/if_link.h'],
510 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
511 ['IFLA_BRPORT_PROXYARP_WIFI', 'linux/if_link.h'],
512 ['IFLA_BRPORT_MULTICAST_ROUTER', 'linux/if_link.h'],
513 ['IFLA_BRPORT_PAD', 'linux/if_link.h'],
514 ['IFLA_BRPORT_MCAST_FLOOD', 'linux/if_link.h'],
515 ['IFLA_BRPORT_VLAN_TUNNEL', 'linux/if_link.h'],
516 ['IFLA_BRPORT_BCAST_FLOOD', 'linux/if_link.h'],
517 ['IFLA_BRPORT_NEIGH_SUPPRESS', 'linux/if_link.h'],
518 ['IFLA_BRPORT_ISOLATED', 'linux/if_link.h'],
519 ['IFLA_BRPORT_BACKUP_PORT', 'linux/if_link.h'],
520 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
521 # if_tunnel.h is buggy and cannot be included on its own
522 ['IFLA_VTI_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
523 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
524 ['IFLA_IPTUN_COLLECT_METADATA', 'linux/if_tunnel.h', '#include <net/if.h>'],
525 ['IFLA_IPTUN_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
526 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
527 ['IFLA_GRE_COLLECT_METADATA', 'linux/if_tunnel.h', '#include <net/if.h>'],
528 ['IFLA_GRE_IGNORE_DF', 'linux/if_tunnel.h', '#include <net/if.h>'],
529 ['IFLA_GRE_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
530 ['IFLA_GRE_ERSPAN_INDEX', 'linux/if_tunnel.h', '#include <net/if.h>'],
531 ['IFLA_GRE_ERSPAN_HWID', 'linux/if_tunnel.h', '#include <net/if.h>'],
532 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400533 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400534 prefix = decl.length() > 2 ? decl[2] : ''
535 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200536 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400537endforeach
538
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400539foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200540 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400541endforeach
542
543foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100544 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100545 ['gettid', '''#include <sys/types.h>
546 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100547 ['pivot_root', '''#include <stdlib.h>
548 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100549 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400550 #include <sys/stat.h>
551 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100552 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100553 ['renameat2', '''#include <stdio.h>
554 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400555 ['kcmp', '''#include <linux/kcmp.h>'''],
556 ['keyctl', '''#include <sys/types.h>
557 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100558 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400559 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200560 ['bpf', '''#include <sys/syscall.h>
561 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100562 ['statx', '''#include <sys/types.h>
563 #include <sys/stat.h>
564 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100565 ['explicit_bzero' , '''#include <string.h>'''],
566 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400567]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400568
Lennart Poettering85db59b2017-12-25 12:01:14 +0100569 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200570 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400571endforeach
572
Lennart Poettering85db59b2017-12-25 12:01:14 +0100573if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200574 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200575 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400576else
577 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200578 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200579 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400580endif
581
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400582#####################################################################
583
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100584vcs_tagger = [meson.source_root() + '/tools/meson-vcs-tag.sh',
Zbigniew Jędrzejewski-Szmeke4d57532018-12-19 13:25:07 +0100585 meson.source_root(),
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100586 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100587 meson.project_version()]
588
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400589sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400590awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400591m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400592stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400593git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100594env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100595perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400596
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400597meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400598mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400599test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
600splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400601
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400602# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
603# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500604progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400605 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400606 ['kmod', '/usr/bin/kmod' ],
607 ['kexec', '/usr/sbin/kexec' ],
608 ['sulogin', '/usr/sbin/sulogin' ],
609 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
610 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
611 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
612 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
613 ]
614foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400615 path = get_option(prog[0] + '-path')
616 if path != ''
617 message('Using @1@ for @0@'.format(prog[0], path))
618 else
619 exe = find_program(prog[0],
620 '/usr/sbin/' + prog[0],
621 '/sbin/' + prog[0],
622 required: false)
623 path = exe.found() ? exe.path() : prog[1]
624 endif
625 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
626 conf.set_quoted(name, path)
627 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400628endforeach
629
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500630conf.set_quoted('TELINIT', get_option('telinit-path'))
631
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400632if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100633 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400634endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400635
636############################################################
637
638gperf = find_program('gperf')
639
640gperf_test_format = '''
641#include <string.h>
642const char * in_word_set(const char *, @0@);
643@1@
644'''
645gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
646gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
647gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
648if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400649 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400650else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400651 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
652 if cc.compiles(gperf_test)
653 gperf_len_type = 'unsigned'
654 else
655 error('unable to determine gperf len type')
656 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400657endif
658message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400659conf.set('GPERF_LEN_TYPE', gperf_len_type,
660 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400661
662############################################################
663
664if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400665 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400666endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100667foreach header : ['crypt.h',
Yu Watanabeb9683ba2018-12-04 07:46:59 +0100668 'linux/btrfs_tree.h',
Yu Watanabe80df8f22018-10-21 18:35:46 +0900669 'linux/fou.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400670 'linux/memfd.h',
671 'linux/vm_sockets.h',
Yu Watanabe9714c022018-12-02 16:27:02 +0100672 'linux/can/vxcan.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200673 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400674 'valgrind/memcheck.h',
675 'valgrind/valgrind.h',
676 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400677
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200678 conf.set10('HAVE_' + header.underscorify().to_upper(),
679 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400680endforeach
681
682############################################################
683
684conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400685conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
686gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400687
688default_hierarchy = get_option('default-hierarchy')
689conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
690 description : 'default cgroup hierarchy as string')
691if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400692 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400693elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400694 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400695else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400696 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400697endif
698
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100699default_net_naming_scheme = get_option('default-net-naming-scheme')
700conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
701
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400702time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900703if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400704 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900705 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400706endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400707conf.set('TIME_EPOCH', time_epoch)
708
709system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900710if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400711 system_uid_max = run_command(
712 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800713 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
714 '/etc/login.defs').stdout().strip()
715 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900716 system_uid_max = 999
717 else
718 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800719 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400720endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400721conf.set('SYSTEM_UID_MAX', system_uid_max)
722substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400723
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400724system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900725if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400726 system_gid_max = run_command(
727 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800728 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
729 '/etc/login.defs').stdout().strip()
730 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900731 system_gid_max = 999
732 else
733 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800734 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400735endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400736conf.set('SYSTEM_GID_MAX', system_gid_max)
737substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400738
Yu Watanabeac093402018-05-10 16:04:16 +0900739dynamic_uid_min = get_option('dynamic-uid-min')
740dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100741conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
742conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
743substs.set('dynamicuidmin', dynamic_uid_min)
744substs.set('dynamicuidmax', dynamic_uid_max)
745
Yu Watanabeac093402018-05-10 16:04:16 +0900746container_uid_base_min = get_option('container-uid-base-min')
747container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100748conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
749conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
750substs.set('containeruidbasemin', container_uid_base_min)
751substs.set('containeruidbasemax', container_uid_base_max)
752
Lennart Poetteringafde4572017-12-05 11:00:24 +0100753nobody_user = get_option('nobody-user')
754nobody_group = get_option('nobody-group')
755
Chen Qi2484bff2018-07-23 14:53:09 +0800756if not meson.is_cross_build()
757 getent_result = run_command('getent', 'passwd', '65534')
758 if getent_result.returncode() == 0
759 name = getent_result.stdout().split(':')[0]
760 if name != nobody_user
761 warning('\n' +
762 '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) +
763 'Your build will result in an user table setup that is incompatible with the local system.')
764 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100765 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800766 id_result = run_command('id', '-u', nobody_user)
767 if id_result.returncode() == 0
768 id = id_result.stdout().to_int()
769 if id != 65534
770 warning('\n' +
771 '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) +
772 'Your build will result in an user table setup that is incompatible with the local system.')
773 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100774 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100775
Chen Qi2484bff2018-07-23 14:53:09 +0800776 getent_result = run_command('getent', 'group', '65534')
777 if getent_result.returncode() == 0
778 name = getent_result.stdout().split(':')[0]
779 if name != nobody_group
780 warning('\n' +
781 '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) +
782 'Your build will result in an group table setup that is incompatible with the local system.')
783 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100784 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800785 id_result = run_command('id', '-g', nobody_group)
786 if id_result.returncode() == 0
787 id = id_result.stdout().to_int()
788 if id != 65534
789 warning('\n' +
790 '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) +
791 'Your build will result in an group table setup that is incompatible with the local system.')
792 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100793 endif
794endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900795if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900796 warning('\n' +
797 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
798 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900799endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100800
801conf.set_quoted('NOBODY_USER_NAME', nobody_user)
802conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900803substs.set('NOBODY_USER_NAME', nobody_user)
804substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100805
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400806tty_gid = get_option('tty-gid')
807conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400808substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400809
Ikey Doherty84786b82017-12-03 12:28:23 +0000810# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900811users_gid = get_option('users-gid')
812substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000813
Yu Watanabe348b4432018-05-07 18:17:35 +0900814conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
815conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400816
Michael Bieblace5e312018-07-13 23:36:13 +0200817dev_kvm_mode = get_option('dev-kvm-mode')
818substs.set('DEV_KVM_MODE', dev_kvm_mode)
819conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Tom Stellard4e15a732017-10-31 08:46:24 -0700820substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400821
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400822kill_user_processes = get_option('default-kill-user-processes')
823conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100824conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400825substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400826
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400827dns_servers = get_option('dns-servers')
828conf.set_quoted('DNS_SERVERS', dns_servers)
829substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400830
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400831ntp_servers = get_option('ntp-servers')
832conf.set_quoted('NTP_SERVERS', ntp_servers)
833substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400834
Dave Reisner8ca9e922018-12-28 07:38:36 -0500835default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900836if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800837 if not meson.is_cross_build()
838 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
839 default_locale = run_command(choose_default_locale_sh).stdout().strip()
840 else
841 default_locale = 'C.UTF-8'
842 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900843endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500844conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
845
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400846conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
847
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400848substs.set('SUSHELL', get_option('debug-shell'))
849substs.set('DEBUGTTY', get_option('debug-tty'))
850
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200851enable_debug_hashmap = false
852enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900853enable_debug_siphash = false
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900854enable_debug_udev = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200855foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900856 if name == 'hashmap'
857 enable_debug_hashmap = true
858 elif name == 'mmap-cache'
859 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900860 elif name == 'siphash'
861 enable_debug_siphash = true
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900862 elif name == 'udev'
863 enable_debug_udev = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900864 else
865 message('unknown debug option "@0@", ignoring'.format(name))
866 endif
867endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200868conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
869conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900870conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900871conf.set10('ENABLE_DEBUG_UDEV', enable_debug_udev)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400872
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200873conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200874conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200875
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400876#####################################################################
877
878threads = dependency('threads')
879librt = cc.find_library('rt')
880libm = cc.find_library('m')
881libdl = cc.find_library('dl')
882libcrypt = cc.find_library('crypt')
883
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400884libcap = dependency('libcap', required : false)
885if not libcap.found()
886 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
887 libcap = cc.find_library('cap')
888endif
889
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400890libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100891 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400892
893want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500894if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400895 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400896 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400897 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200898 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400899else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200900 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400901 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400902endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200903conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400904
905want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500906if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400907 libselinux = dependency('libselinux',
908 version : '>= 2.1.9',
909 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200910 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400911else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200912 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400913 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400914endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200915conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400916
917want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500918if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400919 libapparmor = dependency('libapparmor',
920 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200921 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400922else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200923 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400924 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400925endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200926conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400927
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400928smack_run_label = get_option('smack-run-label')
929if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400930 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400931endif
932
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400933want_polkit = get_option('polkit')
934install_polkit = false
935install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500936if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400937 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400938
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400939 libpolkit = dependency('polkit-gobject-1',
940 required : false)
941 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
942 message('Old polkit detected, will install pkla files')
943 install_polkit_pkla = true
944 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400945endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200946conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400947
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400948want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500949if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400950 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200951 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400952else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200953 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400954 libacl = []
955endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200956conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400957
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400958want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500959if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400960 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200961 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400962else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200963 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400964 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400965endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200966conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400967
968want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500969if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400970 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200971 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400972else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200973 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400974 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400975endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200976conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400977
978want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500979if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400980 libkmod = dependency('libkmod',
981 version : '>= 15',
982 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200983 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400984else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200985 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400986 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400987endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200988conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400989
990want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500991if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400992 libpam = cc.find_library('pam', required : want_pam == 'true')
993 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200994 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400995else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200996 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400997 libpam = []
998 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400999endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001000conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001001
1002want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001003if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001004 libmicrohttpd = dependency('libmicrohttpd',
1005 version : '>= 0.9.33',
1006 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001007 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001008else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001009 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001010 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001011endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001012conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001013
1014want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001015if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001016 libcryptsetup = dependency('libcryptsetup',
1017 version : '>= 1.6.0',
1018 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001019 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001020 have_sector = cc.has_member(
1021 'struct crypt_params_plain',
1022 'sector_size',
1023 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001024else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001025 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001026 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001027 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001028endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001029conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001030conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001031
1032want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001033if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001034 libcurl = dependency('libcurl',
1035 version : '>= 7.32.0',
1036 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001037 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001038else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001039 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001040 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001041endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001042conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001043
1044want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001045want_libidn2 = get_option('libidn2')
1046if want_libidn == 'true' and want_libidn2 == 'true'
1047 error('libidn and libidn2 cannot be requested simultaneously')
1048endif
1049
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001050if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001051 libidn = dependency('libidn',
1052 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001053 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001054else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001055 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001056 libidn = []
1057endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001058conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001059if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001060 # libidn is used for both libidn and libidn2 objects
1061 libidn = dependency('libidn2',
1062 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001063 have = libidn.found()
1064else
1065 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001066endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001067conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001068
1069want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001070if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001071 libiptc = dependency('libiptc',
1072 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001073 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001074else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001075 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001076 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001077endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001078conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001079
1080want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001081if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001082 libqrencode = dependency('libqrencode',
1083 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001084 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001085else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001086 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001087 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001088endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001089conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001090
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001091want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001092if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001093 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1094 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001095 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001096else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001097 have = false
1098endif
1099if not have
1100 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001101 libgcrypt = []
1102 libgpg_error = []
1103endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001104conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001105
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001106want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001107if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001108 libgnutls = dependency('gnutls',
1109 version : '>= 3.1.4',
1110 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001111 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001112else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001113 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001114 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001115endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001116conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001117
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001118want_openssl = get_option('openssl')
1119if want_openssl != 'false' and not fuzzer_build
1120 libopenssl = dependency('openssl',
1121 version : '>= 1.1.0',
1122 required : want_openssl == 'true')
1123 have = libopenssl.found()
1124else
1125 have = false
1126 libopenssl = []
1127endif
1128conf.set10('HAVE_OPENSSL', have)
1129
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001130want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001131if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001132 libdw = dependency('libdw',
1133 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001134 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001135else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001136 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001137 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001138endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001139conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001140
1141want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001142if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001143 libz = dependency('zlib',
1144 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001145 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001146else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001147 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001148 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001149endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001150conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001151
1152want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001153if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001154 libbzip2 = cc.find_library('bz2',
1155 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001156 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001157else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001158 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001159 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001160endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001161conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001162
1163want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001164if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001165 libxz = dependency('liblzma',
1166 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001167 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001168else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001169 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001170 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001171endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001172conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001173
1174want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001175if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001176 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001177 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001178 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001179 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001180else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001181 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001182 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001183endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001184conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001185
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001186want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001187if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001188 libxkbcommon = dependency('xkbcommon',
1189 version : '>= 0.3.0',
1190 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001191 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001192else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001193 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001194 libxkbcommon = []
1195endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001196conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001197
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001198want_pcre2 = get_option('pcre2')
1199if want_pcre2 != 'false'
1200 libpcre2 = dependency('libpcre2-8',
1201 required : want_pcre2 == 'true')
1202 have = libpcre2.found()
1203else
1204 have = false
1205 libpcre2 = []
1206endif
1207conf.set10('HAVE_PCRE2', have)
1208
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001209want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001210if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001211 libglib = dependency('glib-2.0',
1212 version : '>= 2.22.0',
1213 required : want_glib == 'true')
1214 libgobject = dependency('gobject-2.0',
1215 version : '>= 2.22.0',
1216 required : want_glib == 'true')
1217 libgio = dependency('gio-2.0',
1218 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001219 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001220else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001221 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001222 libglib = []
1223 libgobject = []
1224 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001225endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001226conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001227
1228want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001229if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001230 libdbus = dependency('dbus-1',
1231 version : '>= 1.3.2',
1232 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001233 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001234else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001235 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001236 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001237endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001238conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001239
Yu Watanabe42303dc2017-06-18 05:22:32 +09001240default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001241if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001242 default_dnssec = 'no'
1243endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001244if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001245 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1246 default_dnssec = 'no'
1247endif
1248conf.set('DEFAULT_DNSSEC_MODE',
1249 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1250substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1251
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001252dns_over_tls = get_option('dns-over-tls')
1253if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001254 if dns_over_tls == 'openssl'
1255 have_gnutls = false
1256 else
1257 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1258 if dns_over_tls == 'gnutls' and not have_gnutls
1259 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1260 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001261 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001262 if dns_over_tls == 'gnutls' or have_gnutls
1263 have_openssl = false
1264 else
1265 have_openssl = conf.get('HAVE_OPENSSL') == 1
1266 if dns_over_tls != 'auto' and not have_openssl
1267 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
1268 error('DNS-over-TLS support was requested$0$, but dependencies are not available'.format(str))
1269 endif
1270 endif
1271 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001272else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001273 have = false
1274 have_gnutls = false
1275 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001276endif
1277conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001278conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1279conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001280
Iwan Timmerc9299be2018-06-13 20:26:24 +02001281default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001282if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001283 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001284endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001285if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1286 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 +02001287 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001288endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001289conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1290 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1291substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001292
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001293want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001294if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001295 have = (conf.get('HAVE_LIBCURL') == 1 and
1296 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001297 conf.get('HAVE_XZ') == 1 and
1298 conf.get('HAVE_GCRYPT') == 1)
1299 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001300 error('importd support was requested, but dependencies are not available')
1301 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001302else
1303 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001304endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001305conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001306
1307want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001308if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001309 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1310 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001311 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1312 # it's possible to build one without the other. Complain only if
1313 # support was explictly requested. The auxiliary files like sysusers
1314 # config should be installed when any of the programs are built.
1315 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1316 error('remote support was requested, but dependencies are not available')
1317 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001318 have = have_deps[0] or have_deps[1]
1319else
1320 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001321endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001322conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001323
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001324foreach term : ['utmp',
1325 'hibernate',
1326 'environment-d',
1327 'binfmt',
1328 'coredump',
1329 'resolve',
1330 'logind',
1331 'hostnamed',
1332 'localed',
1333 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001334 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001335 'networkd',
1336 'timedated',
1337 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001338 'firstboot',
1339 'randomseed',
1340 'backlight',
1341 'vconsole',
1342 'quotacheck',
1343 'sysusers',
1344 'tmpfiles',
1345 'hwdb',
1346 'rfkill',
1347 'ldconfig',
1348 'efi',
1349 'tpm',
1350 'ima',
1351 'smack',
1352 'gshadow',
1353 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001354 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001355 'nss-systemd']
1356 have = get_option(term)
1357 name = 'ENABLE_' + term.underscorify().to_upper()
1358 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001359endforeach
1360
Yu Watanabe08540a92018-07-18 09:25:57 +09001361foreach tuple : [['nss-mymachines', 'machined'],
1362 ['nss-resolve', 'resolve']]
1363 want = get_option(tuple[0])
1364 if want != 'false'
1365 have = get_option(tuple[1])
1366 if want == 'true' and not have
1367 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1368 endif
1369 else
1370 have = false
1371 endif
1372 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1373 conf.set10(name, have)
1374endforeach
1375
1376enable_nss = false
1377foreach term : ['ENABLE_NSS_MYHOSTNAME',
1378 'ENABLE_NSS_MYMACHINES',
1379 'ENABLE_NSS_RESOLVE',
1380 'ENABLE_NSS_SYSTEMD']
1381 if conf.get(term) == 1
1382 enable_nss = true
1383 endif
1384endforeach
1385conf.set10('ENABLE_NSS', enable_nss)
1386
Yu Watanabe348b4432018-05-07 18:17:35 +09001387conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001388
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001389tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001390fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001391
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001392conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001393
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001394#####################################################################
1395
1396if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001397 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001398
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001399 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001400 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001401 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001402 elif efi_arch == 'x86_64'
1403 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001404 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001405 elif efi_arch == 'arm'
1406 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001407 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001408 elif efi_arch == 'aarch64'
1409 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001410 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001411 else
1412 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001413 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001414 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001415
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001416 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001417 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001418
Yu Watanabeac093402018-05-10 16:04:16 +09001419 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001420else
1421 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001422endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001423conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001424
1425#####################################################################
1426
1427config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001428 output : 'config.h',
1429 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001430
Yu Watanabe348b4432018-05-07 18:17:35 +09001431meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1432
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001433includes = include_directories('src/basic',
1434 'src/shared',
1435 'src/systemd',
1436 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001437 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001438 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001439 'src/resolve',
1440 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001441 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001442 'src/login',
1443 'src/udev',
1444 'src/libudev',
1445 'src/core',
1446 'src/libsystemd/sd-bus',
1447 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001448 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001449 'src/libsystemd/sd-hwdb',
1450 'src/libsystemd/sd-id128',
1451 'src/libsystemd/sd-netlink',
1452 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001453 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001454 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001455 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001456
1457add_project_arguments('-include', 'config.h', language : 'c')
1458
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001459generate_gperfs = find_program('tools/generate-gperfs.py')
1460
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001461subdir('po')
1462subdir('catalog')
1463subdir('src/systemd')
1464subdir('src/basic')
1465subdir('src/libsystemd')
1466subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001467subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001468subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001469
1470libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001471 'journal-core',
1472 libjournal_core_sources,
1473 journald_gperf_c,
1474 include_directories : includes,
1475 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001476
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001477libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001478libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001479 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001480 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001481 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001482 include_directories : includes,
1483 link_args : ['-shared',
1484 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001485 link_with : [libbasic,
1486 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001487 link_whole : [libsystemd_static,
1488 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001489 dependencies : [threads,
1490 librt,
1491 libxz,
1492 liblz4],
1493 link_depends : libsystemd_sym,
1494 install : true,
1495 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001496
Davide Cavalca70848ec2018-04-09 02:43:35 -07001497static_libsystemd = get_option('static-libsystemd')
1498static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1499
1500install_libsystemd_static = static_library(
1501 'systemd',
1502 libsystemd_sources,
1503 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001504 basic_sources,
1505 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001506 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001507 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001508 build_by_default : static_libsystemd != 'false',
1509 install : static_libsystemd != 'false',
1510 install_dir : rootlibdir,
1511 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1512 dependencies : [threads,
1513 librt,
1514 libxz,
1515 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001516 libcap,
1517 libblkid,
1518 libmount,
1519 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001520 libgcrypt],
1521 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1522
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001523############################################################
1524
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001525# binaries that have --help and are intended for use by humans,
1526# usually, but not always, installed in /bin.
1527public_programs = []
1528
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001529subdir('src/libudev')
1530subdir('src/shared')
1531subdir('src/core')
1532subdir('src/udev')
1533subdir('src/network')
1534
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001535subdir('src/analyze')
1536subdir('src/journal-remote')
1537subdir('src/coredump')
1538subdir('src/hostname')
1539subdir('src/import')
1540subdir('src/kernel-install')
1541subdir('src/locale')
1542subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001543subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001544subdir('src/nspawn')
1545subdir('src/resolve')
1546subdir('src/timedate')
1547subdir('src/timesync')
1548subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001549subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001550
1551subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001552subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001553subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001554subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001555
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001556############################################################
1557
1558# only static linking apart from libdl, to make sure that the
1559# module is linked to all libraries that it uses.
1560test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001561 'test-dlopen',
1562 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001563 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001564 include_directories : includes,
1565 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001566 dependencies : [libdl],
1567 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001568
Yu Watanabe08540a92018-07-18 09:25:57 +09001569foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001570 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001571 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1572 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001573
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001574 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001575 if condition
1576 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001577
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001578 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001579 version_script_arg = join_paths(meson.source_root(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001580
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001581 nss = shared_library(
1582 'nss_' + module,
1583 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001584 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001585 version : '2',
1586 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001587 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1588 link_args : ['-Wl,-z,nodelete',
1589 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001590 '-Wl,--version-script=' + version_script_arg,
1591 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001592 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001593 libbasic],
1594 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001595 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001596 link_depends : sym,
1597 install : true,
1598 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001599
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001600 # We cannot use shared_module because it does not support version suffix.
1601 # Unfortunately shared_library insists on creating the symlink…
1602 meson.add_install_script('sh', '-c',
1603 'rm $DESTDIR@0@/libnss_@1@.so'
1604 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001605
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001606 if want_tests != 'false'
1607 test('dlopen-nss_' + module,
1608 test_dlopen,
1609 # path to dlopen must include a slash
1610 args : nss.full_path())
1611 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001612 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001613endforeach
1614
1615############################################################
1616
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001617executable('systemd',
1618 systemd_sources,
1619 include_directories : includes,
1620 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001621 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001622 dependencies : [threads,
1623 librt,
1624 libseccomp,
1625 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001626 libmount,
1627 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001628 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001629 install : true,
1630 install_dir : rootlibexecdir)
1631
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001632meson.add_install_script(meson_make_symlink,
1633 join_paths(rootlibexecdir, 'systemd'),
1634 join_paths(rootsbindir, 'init'))
1635
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001636exe = executable('systemd-analyze',
1637 systemd_analyze_sources,
1638 include_directories : includes,
1639 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001640 libshared],
1641 dependencies : [threads,
1642 librt,
1643 libseccomp,
1644 libselinux,
1645 libmount,
1646 libblkid],
1647 install_rpath : rootlibexecdir,
1648 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001649public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001650
1651executable('systemd-journald',
1652 systemd_journald_sources,
1653 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001654 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001655 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001656 dependencies : [threads,
1657 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001658 liblz4,
1659 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001660 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001661 install : true,
1662 install_dir : rootlibexecdir)
1663
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001664exe = executable('systemd-cat',
1665 systemd_cat_sources,
1666 include_directories : includes,
1667 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001668 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001669 dependencies : [threads],
1670 install_rpath : rootlibexecdir,
1671 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001672public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001673
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001674exe = executable('journalctl',
1675 journalctl_sources,
1676 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001677 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001678 dependencies : [threads,
1679 libqrencode,
1680 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001681 liblz4,
1682 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001683 install_rpath : rootlibexecdir,
1684 install : true,
1685 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001686public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001687
1688executable('systemd-getty-generator',
1689 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001690 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001691 link_with : [libshared],
1692 install_rpath : rootlibexecdir,
1693 install : true,
1694 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001695
1696executable('systemd-debug-generator',
1697 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001698 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001699 link_with : [libshared],
1700 install_rpath : rootlibexecdir,
1701 install : true,
1702 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001703
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001704executable('systemd-run-generator',
1705 'src/run-generator/run-generator.c',
1706 include_directories : includes,
1707 link_with : [libshared],
1708 install_rpath : rootlibexecdir,
1709 install : true,
1710 install_dir : systemgeneratordir)
1711
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001712executable('systemd-fstab-generator',
1713 'src/fstab-generator/fstab-generator.c',
1714 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001715 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001716 link_with : [libshared],
1717 install_rpath : rootlibexecdir,
1718 install : true,
1719 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001720
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001721if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001722 executable('30-systemd-environment-d-generator',
1723 'src/environment-d-generator/environment-d-generator.c',
1724 include_directories : includes,
1725 link_with : [libshared],
1726 install_rpath : rootlibexecdir,
1727 install : true,
1728 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001729
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001730 meson.add_install_script(meson_make_symlink,
1731 join_paths(sysconfdir, 'environment'),
1732 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001733endif
1734
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001735if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001736 executable('systemd-hibernate-resume-generator',
1737 'src/hibernate-resume/hibernate-resume-generator.c',
1738 include_directories : includes,
1739 link_with : [libshared],
1740 install_rpath : rootlibexecdir,
1741 install : true,
1742 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001743
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001744 executable('systemd-hibernate-resume',
1745 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001746 include_directories : includes,
1747 link_with : [libshared],
1748 install_rpath : rootlibexecdir,
1749 install : true,
1750 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001751endif
1752
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001753if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001754 executable('systemd-gpt-auto-generator',
1755 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001756 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001757 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001758 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001759 dependencies : libblkid,
1760 install_rpath : rootlibexecdir,
1761 install : true,
1762 install_dir : systemgeneratordir)
1763
1764 exe = executable('systemd-dissect',
1765 'src/dissect/dissect.c',
1766 include_directories : includes,
1767 link_with : [libshared],
1768 install_rpath : rootlibexecdir,
1769 install : true,
1770 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001771 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001772endif
1773
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001774if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001775 executable('systemd-resolved',
1776 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001777 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001778 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001779 libbasic_gcrypt,
1780 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001781 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001782 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001783 install : true,
1784 install_dir : rootlibexecdir)
1785
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001786 exe = executable('resolvectl',
1787 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001788 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001789 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001790 libbasic_gcrypt,
1791 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001792 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001793 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001794 libm,
1795 libidn],
1796 install_rpath : rootlibexecdir,
1797 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001798 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001799
1800 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001801 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001802 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001803
1804 meson.add_install_script(meson_make_symlink,
1805 join_paths(bindir, 'resolvectl'),
1806 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001807endif
1808
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001809if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001810 executable('systemd-logind',
1811 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001812 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001813 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001814 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001815 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001816 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001817 install_rpath : rootlibexecdir,
1818 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001819 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001820
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001821 exe = executable('loginctl',
1822 loginctl_sources,
1823 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001824 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001825 dependencies : [threads,
1826 liblz4,
1827 libxz],
1828 install_rpath : rootlibexecdir,
1829 install : true,
1830 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001831 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001832
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001833 exe = executable('systemd-inhibit',
1834 'src/login/inhibit.c',
1835 include_directories : includes,
1836 link_with : [libshared],
1837 install_rpath : rootlibexecdir,
1838 install : true,
1839 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001840 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001841
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001842 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001843 version_script_arg = join_paths(meson.source_root(), pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001844 pam_systemd = shared_library(
1845 'pam_systemd',
1846 pam_systemd_c,
1847 name_prefix : '',
1848 include_directories : includes,
1849 link_args : ['-shared',
1850 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001851 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001852 libshared_static],
1853 dependencies : [threads,
1854 libpam,
1855 libpam_misc],
1856 link_depends : pam_systemd_sym,
1857 install : true,
1858 install_dir : pamlibdir)
1859
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001860 if want_tests != 'false'
1861 test('dlopen-pam_systemd',
1862 test_dlopen,
1863 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001864 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001865 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001866 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001867
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001868 executable('systemd-user-runtime-dir',
1869 user_runtime_dir_sources,
1870 include_directories : includes,
1871 link_with : [libshared],
1872 install_rpath : rootlibexecdir,
1873 install : true,
1874 install_dir : rootlibexecdir)
1875endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001876
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001877if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001878 executable('systemd-user-sessions',
1879 'src/user-sessions/user-sessions.c',
1880 include_directories : includes,
1881 link_with : [libshared],
1882 install_rpath : rootlibexecdir,
1883 install : true,
1884 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001885endif
1886
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001887if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001888 exe = executable('bootctl',
1889 'src/boot/bootctl.c',
1890 include_directories : includes,
1891 link_with : [libshared],
1892 dependencies : [libblkid],
1893 install_rpath : rootlibexecdir,
1894 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001895 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001896
1897 executable('systemd-bless-boot',
1898 'src/boot/bless-boot.c',
1899 include_directories : includes,
1900 link_with : [libshared],
1901 dependencies : [libblkid],
1902 install_rpath : rootlibexecdir,
1903 install : true,
1904 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001905
1906 executable('systemd-bless-boot-generator',
1907 'src/boot/bless-boot-generator.c',
1908 include_directories : includes,
1909 link_with : [libshared],
1910 install_rpath : rootlibexecdir,
1911 install : true,
1912 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001913endif
1914
Lennart Poetteringf876f532018-06-25 16:07:33 +02001915executable('systemd-boot-check-no-failures',
1916 'src/boot/boot-check-no-failures.c',
1917 include_directories : includes,
1918 link_with : [libshared],
1919 dependencies : [libblkid],
1920 install_rpath : rootlibexecdir,
1921 install : true,
1922 install_dir : rootlibexecdir)
1923
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001924exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1925 include_directories : includes,
1926 link_with : [libshared],
1927 dependencies : [threads],
1928 install_rpath : rootlibexecdir,
1929 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001930public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001931
Felipe Satelerf3794362018-05-22 15:08:57 -04001932
1933if get_option('link-systemctl-shared')
1934 systemctl_link_with = [libshared]
1935else
1936 systemctl_link_with = [libsystemd_static,
1937 libshared_static,
1938 libjournal_client,
1939 libbasic_gcrypt]
1940endif
1941
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001942exe = executable('systemctl', 'src/systemctl/systemctl.c',
1943 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001944 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001945 dependencies : [threads,
1946 libcap,
1947 libselinux,
1948 libxz,
1949 liblz4],
1950 install_rpath : rootlibexecdir,
1951 install : true,
1952 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001953public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001954
Lennart Poettering61d05782018-04-16 21:41:40 +02001955if conf.get('ENABLE_PORTABLED') == 1
1956 executable('systemd-portabled',
1957 systemd_portabled_sources,
1958 include_directories : includes,
1959 link_with : [libshared],
1960 dependencies : [threads],
1961 install_rpath : rootlibexecdir,
1962 install : true,
1963 install_dir : rootlibexecdir)
1964
1965 exe = executable('portablectl', 'src/portable/portablectl.c',
1966 include_directories : includes,
1967 link_with : [libshared],
1968 dependencies : [threads],
1969 install_rpath : rootlibexecdir,
1970 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001971 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001972 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001973endif
1974
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001975foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1976 meson.add_install_script(meson_make_symlink,
1977 join_paths(rootbindir, 'systemctl'),
1978 join_paths(rootsbindir, alias))
1979endforeach
1980
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001981if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001982 executable('systemd-backlight',
1983 'src/backlight/backlight.c',
1984 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001985 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001986 install_rpath : rootlibexecdir,
1987 install : true,
1988 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001989endif
1990
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001991if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001992 executable('systemd-rfkill',
1993 'src/rfkill/rfkill.c',
1994 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001995 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001996 install_rpath : rootlibexecdir,
1997 install : true,
1998 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001999endif
2000
2001executable('systemd-system-update-generator',
2002 'src/system-update-generator/system-update-generator.c',
2003 include_directories : includes,
2004 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002005 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002006 install : true,
2007 install_dir : systemgeneratordir)
2008
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002009if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002010 executable('systemd-cryptsetup',
2011 'src/cryptsetup/cryptsetup.c',
2012 include_directories : includes,
2013 link_with : [libshared],
2014 dependencies : [libcryptsetup],
2015 install_rpath : rootlibexecdir,
2016 install : true,
2017 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002018
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002019 executable('systemd-cryptsetup-generator',
2020 'src/cryptsetup/cryptsetup-generator.c',
2021 include_directories : includes,
2022 link_with : [libshared],
2023 dependencies : [libcryptsetup],
2024 install_rpath : rootlibexecdir,
2025 install : true,
2026 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002027
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002028 executable('systemd-veritysetup',
2029 'src/veritysetup/veritysetup.c',
2030 include_directories : includes,
2031 link_with : [libshared],
2032 dependencies : [libcryptsetup],
2033 install_rpath : rootlibexecdir,
2034 install : true,
2035 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002036
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002037 executable('systemd-veritysetup-generator',
2038 'src/veritysetup/veritysetup-generator.c',
2039 include_directories : includes,
2040 link_with : [libshared],
2041 dependencies : [libcryptsetup],
2042 install_rpath : rootlibexecdir,
2043 install : true,
2044 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002045endif
2046
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002047if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002048 executable('systemd-sysv-generator',
2049 'src/sysv-generator/sysv-generator.c',
2050 include_directories : includes,
2051 link_with : [libshared],
2052 install_rpath : rootlibexecdir,
2053 install : true,
2054 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002055
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002056 executable('systemd-rc-local-generator',
2057 'src/rc-local-generator/rc-local-generator.c',
2058 include_directories : includes,
2059 link_with : [libshared],
2060 install_rpath : rootlibexecdir,
2061 install : true,
2062 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002063endif
2064
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002065if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002066 executable('systemd-hostnamed',
2067 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002068 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002069 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002070 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002071 install : true,
2072 install_dir : rootlibexecdir)
2073
2074 exe = executable('hostnamectl',
2075 'src/hostname/hostnamectl.c',
2076 include_directories : includes,
2077 link_with : [libshared],
2078 install_rpath : rootlibexecdir,
2079 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002080 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002081endif
2082
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002083if conf.get('ENABLE_LOCALED') == 1
2084 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002085 # logind will load libxkbcommon.so dynamically on its own
2086 deps = [libdl]
2087 else
2088 deps = []
2089 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002090
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002091 executable('systemd-localed',
2092 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002093 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002094 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002095 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002096 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002097 install : true,
2098 install_dir : rootlibexecdir)
2099
2100 exe = executable('localectl',
2101 localectl_sources,
2102 include_directories : includes,
2103 link_with : [libshared],
2104 install_rpath : rootlibexecdir,
2105 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002106 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002107endif
2108
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002109if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002110 executable('systemd-timedated',
2111 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002112 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002113 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002114 install_rpath : rootlibexecdir,
2115 install : true,
2116 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002117endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002118
Yu Watanabe6129ec82018-05-03 18:07:43 +09002119if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002120 exe = executable('timedatectl',
2121 'src/timedate/timedatectl.c',
2122 include_directories : includes,
2123 install_rpath : rootlibexecdir,
2124 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002125 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002126 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002127 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002128endif
2129
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002130if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002131 executable('systemd-timesyncd',
2132 systemd_timesyncd_sources,
2133 include_directories : includes,
2134 link_with : [libshared],
2135 dependencies : [threads,
2136 libm],
2137 install_rpath : rootlibexecdir,
2138 install : true,
2139 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002140
2141 executable('systemd-time-wait-sync',
2142 'src/time-wait-sync/time-wait-sync.c',
2143 include_directories : includes,
2144 link_with : [libshared],
2145 install_rpath : rootlibexecdir,
2146 install : true,
2147 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002148endif
2149
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002150if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002151 executable('systemd-machined',
2152 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002153 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002154 link_with : [libmachine_core,
2155 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002156 install_rpath : rootlibexecdir,
2157 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002158 install_dir : rootlibexecdir)
2159
2160 exe = executable('machinectl',
2161 'src/machine/machinectl.c',
2162 include_directories : includes,
2163 link_with : [libshared],
2164 dependencies : [threads,
2165 libxz,
2166 liblz4],
2167 install_rpath : rootlibexecdir,
2168 install : true,
2169 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002170 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002171endif
2172
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002173if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002174 executable('systemd-importd',
2175 systemd_importd_sources,
2176 include_directories : includes,
2177 link_with : [libshared],
2178 dependencies : [threads],
2179 install_rpath : rootlibexecdir,
2180 install : true,
2181 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002182
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002183 systemd_pull = executable('systemd-pull',
2184 systemd_pull_sources,
2185 include_directories : includes,
2186 link_with : [libshared],
2187 dependencies : [libcurl,
2188 libz,
2189 libbzip2,
2190 libxz,
2191 libgcrypt],
2192 install_rpath : rootlibexecdir,
2193 install : true,
2194 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002195
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002196 systemd_import = executable('systemd-import',
2197 systemd_import_sources,
2198 include_directories : includes,
2199 link_with : [libshared],
2200 dependencies : [libcurl,
2201 libz,
2202 libbzip2,
2203 libxz],
2204 install_rpath : rootlibexecdir,
2205 install : true,
2206 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002207
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002208 systemd_import_fs = executable('systemd-import-fs',
2209 systemd_import_fs_sources,
2210 include_directories : includes,
2211 link_with : [libshared],
2212 install_rpath : rootlibexecdir,
2213 install : true,
2214 install_dir : rootlibexecdir)
2215
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002216 systemd_export = executable('systemd-export',
2217 systemd_export_sources,
2218 include_directories : includes,
2219 link_with : [libshared],
2220 dependencies : [libcurl,
2221 libz,
2222 libbzip2,
2223 libxz],
2224 install_rpath : rootlibexecdir,
2225 install : true,
2226 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002227
2228 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002229endif
2230
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002231if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002232 exe = executable('systemd-journal-upload',
2233 systemd_journal_upload_sources,
2234 include_directories : includes,
2235 link_with : [libshared],
2236 dependencies : [threads,
2237 libcurl,
2238 libgnutls,
2239 libxz,
2240 liblz4],
2241 install_rpath : rootlibexecdir,
2242 install : true,
2243 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002244 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002245endif
2246
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002247if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002248 s_j_remote = executable('systemd-journal-remote',
2249 systemd_journal_remote_sources,
2250 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002251 link_with : [libshared,
2252 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002253 dependencies : [threads,
2254 libmicrohttpd,
2255 libgnutls,
2256 libxz,
2257 liblz4],
2258 install_rpath : rootlibexecdir,
2259 install : true,
2260 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002261
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002262 s_j_gatewayd = executable('systemd-journal-gatewayd',
2263 systemd_journal_gatewayd_sources,
2264 include_directories : includes,
2265 link_with : [libshared],
2266 dependencies : [threads,
2267 libmicrohttpd,
2268 libgnutls,
2269 libxz,
2270 liblz4],
2271 install_rpath : rootlibexecdir,
2272 install : true,
2273 install_dir : rootlibexecdir)
2274 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002275endif
2276
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002277if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002278 executable('systemd-coredump',
2279 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002280 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002281 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002282 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002283 libacl,
2284 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002285 libxz,
2286 liblz4],
2287 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002288 install : true,
2289 install_dir : rootlibexecdir)
2290
2291 exe = executable('coredumpctl',
2292 coredumpctl_sources,
2293 include_directories : includes,
2294 link_with : [libshared],
2295 dependencies : [threads,
2296 libxz,
2297 liblz4],
2298 install_rpath : rootlibexecdir,
2299 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002300 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002301endif
2302
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002303if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002304 exe = executable('systemd-binfmt',
2305 'src/binfmt/binfmt.c',
2306 include_directories : includes,
2307 link_with : [libshared],
2308 install_rpath : rootlibexecdir,
2309 install : true,
2310 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002311 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002312
2313 meson.add_install_script('sh', '-c',
2314 mkdir_p.format(binfmtdir))
2315 meson.add_install_script('sh', '-c',
2316 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2317endif
2318
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002319if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002320 executable('systemd-vconsole-setup',
2321 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002322 include_directories : includes,
2323 link_with : [libshared],
2324 install_rpath : rootlibexecdir,
2325 install : true,
2326 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002327endif
2328
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002329if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002330 executable('systemd-random-seed',
2331 'src/random-seed/random-seed.c',
2332 include_directories : includes,
2333 link_with : [libshared],
2334 install_rpath : rootlibexecdir,
2335 install : true,
2336 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002337endif
2338
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002339if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002340 executable('systemd-firstboot',
2341 'src/firstboot/firstboot.c',
2342 include_directories : includes,
2343 link_with : [libshared],
2344 dependencies : [libcrypt],
2345 install_rpath : rootlibexecdir,
2346 install : true,
2347 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002348endif
2349
2350executable('systemd-remount-fs',
2351 'src/remount-fs/remount-fs.c',
2352 'src/core/mount-setup.c',
2353 'src/core/mount-setup.h',
2354 include_directories : includes,
2355 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002356 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002357 install : true,
2358 install_dir : rootlibexecdir)
2359
2360executable('systemd-machine-id-setup',
2361 'src/machine-id-setup/machine-id-setup-main.c',
2362 'src/core/machine-id-setup.c',
2363 'src/core/machine-id-setup.h',
2364 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002365 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002366 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002367 install : true,
2368 install_dir : rootbindir)
2369
2370executable('systemd-fsck',
2371 'src/fsck/fsck.c',
2372 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002373 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002374 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002375 install : true,
2376 install_dir : rootlibexecdir)
2377
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002378executable('systemd-growfs',
2379 'src/partition/growfs.c',
2380 include_directories : includes,
2381 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002382 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002383 install_rpath : rootlibexecdir,
2384 install : true,
2385 install_dir : rootlibexecdir)
2386
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002387executable('systemd-makefs',
2388 'src/partition/makefs.c',
2389 include_directories : includes,
2390 link_with : [libshared],
2391 install_rpath : rootlibexecdir,
2392 install : true,
2393 install_dir : rootlibexecdir)
2394
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002395executable('systemd-sleep',
2396 'src/sleep/sleep.c',
2397 include_directories : includes,
2398 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002399 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002400 install : true,
2401 install_dir : rootlibexecdir)
2402
Yu Watanabed25e1272019-01-03 02:32:57 +09002403install_data('src/sleep/sleep.conf',
2404 install_dir : pkgsysconfdir)
2405
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002406exe = executable('systemd-sysctl',
2407 'src/sysctl/sysctl.c',
2408 include_directories : includes,
2409 link_with : [libshared],
2410 install_rpath : rootlibexecdir,
2411 install : true,
2412 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002413public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002414
2415executable('systemd-ac-power',
2416 'src/ac-power/ac-power.c',
2417 include_directories : includes,
2418 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002419 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002420 install : true,
2421 install_dir : rootlibexecdir)
2422
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002423exe = executable('systemd-detect-virt',
2424 'src/detect-virt/detect-virt.c',
2425 include_directories : includes,
2426 link_with : [libshared],
2427 install_rpath : rootlibexecdir,
2428 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002429public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002430
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002431exe = executable('systemd-delta',
2432 'src/delta/delta.c',
2433 include_directories : includes,
2434 link_with : [libshared],
2435 install_rpath : rootlibexecdir,
2436 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002437public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002438
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002439exe = executable('systemd-escape',
2440 'src/escape/escape.c',
2441 include_directories : includes,
2442 link_with : [libshared],
2443 install_rpath : rootlibexecdir,
2444 install : true,
2445 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002446public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002447
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002448exe = executable('systemd-notify',
2449 'src/notify/notify.c',
2450 include_directories : includes,
2451 link_with : [libshared],
2452 install_rpath : rootlibexecdir,
2453 install : true,
2454 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002455public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002456
2457executable('systemd-volatile-root',
2458 'src/volatile-root/volatile-root.c',
2459 include_directories : includes,
2460 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002461 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002462 install : true,
2463 install_dir : rootlibexecdir)
2464
2465executable('systemd-cgroups-agent',
2466 'src/cgroups-agent/cgroups-agent.c',
2467 include_directories : includes,
2468 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002469 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002470 install : true,
2471 install_dir : rootlibexecdir)
2472
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002473exe = executable('systemd-id128',
2474 'src/id128/id128.c',
2475 include_directories : includes,
2476 link_with : [libshared],
2477 install_rpath : rootlibexecdir,
2478 install : true)
2479public_programs += exe
2480
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002481exe = executable('systemd-path',
2482 'src/path/path.c',
2483 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002484 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002485 install_rpath : rootlibexecdir,
2486 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002487public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002488
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002489exe = executable('systemd-ask-password',
2490 'src/ask-password/ask-password.c',
2491 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002492 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002493 install_rpath : rootlibexecdir,
2494 install : true,
2495 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002496public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002497
2498executable('systemd-reply-password',
2499 'src/reply-password/reply-password.c',
2500 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002501 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002502 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002503 install : true,
2504 install_dir : rootlibexecdir)
2505
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002506exe = executable('systemd-tty-ask-password-agent',
2507 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2508 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002509 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002510 install_rpath : rootlibexecdir,
2511 install : true,
2512 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002513public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002514
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002515exe = executable('systemd-cgls',
2516 'src/cgls/cgls.c',
2517 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002518 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002519 install_rpath : rootlibexecdir,
2520 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002521public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002522
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002523exe = executable('systemd-cgtop',
2524 'src/cgtop/cgtop.c',
2525 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002526 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002527 install_rpath : rootlibexecdir,
2528 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002529public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002530
2531executable('systemd-initctl',
2532 'src/initctl/initctl.c',
2533 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002534 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002535 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002536 install : true,
2537 install_dir : rootlibexecdir)
2538
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002539exe = executable('systemd-mount',
2540 'src/mount/mount-tool.c',
2541 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002542 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002543 install_rpath : rootlibexecdir,
2544 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002545public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002546
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002547meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002548 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002549
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002550exe = executable('systemd-run',
2551 'src/run/run.c',
2552 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002553 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002554 install_rpath : rootlibexecdir,
2555 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002556public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002557
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002558exe = executable('systemd-stdio-bridge',
2559 'src/stdio-bridge/stdio-bridge.c',
2560 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002561 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002562 install_rpath : rootlibexecdir,
2563 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002564public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002565
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002566exe = executable('busctl',
2567 'src/busctl/busctl.c',
2568 'src/busctl/busctl-introspect.c',
2569 'src/busctl/busctl-introspect.h',
2570 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002571 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002572 install_rpath : rootlibexecdir,
2573 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002574public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002575
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002576if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002577 exe = executable('systemd-sysusers',
2578 'src/sysusers/sysusers.c',
2579 include_directories : includes,
2580 link_with : [libshared],
2581 install_rpath : rootlibexecdir,
2582 install : true,
2583 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002584 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002585endif
2586
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002587if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002588 exe = executable('systemd-tmpfiles',
2589 'src/tmpfiles/tmpfiles.c',
2590 include_directories : includes,
2591 link_with : [libshared],
2592 dependencies : [libacl],
2593 install_rpath : rootlibexecdir,
2594 install : true,
2595 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002596 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002597
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002598 if want_tests != 'false'
2599 test('test-systemd-tmpfiles',
2600 test_systemd_tmpfiles_py,
2601 # https://github.com/mesonbuild/meson/issues/2681
2602 args : exe.full_path())
2603 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002604endif
2605
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002606if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002607 exe = executable('systemd-hwdb',
2608 'src/hwdb/hwdb.c',
2609 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2610 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002611 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002612 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002613 install : true,
2614 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002615 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002616endif
2617
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002618if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002619 executable('systemd-quotacheck',
2620 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002621 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002622 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002623 install_rpath : rootlibexecdir,
2624 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002625 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002626endif
2627
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002628exe = executable('systemd-socket-proxyd',
2629 'src/socket-proxy/socket-proxyd.c',
2630 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002631 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002632 dependencies : [threads],
2633 install_rpath : rootlibexecdir,
2634 install : true,
2635 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002636public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002637
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002638exe = executable('systemd-udevd',
2639 systemd_udevd_sources,
2640 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002641 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002642 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002643 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002644 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002645 dependencies : [threads,
2646 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002647 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002648 libacl,
2649 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002650 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002651 install : true,
2652 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002653public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002654
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002655exe = executable('udevadm',
2656 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002657 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002658 include_directories : includes,
2659 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002660 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002661 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002662 dependencies : [threads,
2663 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002664 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002665 libacl,
2666 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002667 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002668 install : true,
2669 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002670public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002671
2672executable('systemd-shutdown',
2673 systemd_shutdown_sources,
2674 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002675 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002676 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002677 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002678 install : true,
2679 install_dir : rootlibexecdir)
2680
2681executable('systemd-update-done',
2682 'src/update-done/update-done.c',
2683 include_directories : includes,
2684 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002685 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002686 install : true,
2687 install_dir : rootlibexecdir)
2688
2689executable('systemd-update-utmp',
2690 'src/update-utmp/update-utmp.c',
2691 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002692 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002693 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002694 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002695 install : true,
2696 install_dir : rootlibexecdir)
2697
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002698if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002699 executable('systemd-modules-load',
2700 'src/modules-load/modules-load.c',
2701 include_directories : includes,
2702 link_with : [libshared],
2703 dependencies : [libkmod],
2704 install_rpath : rootlibexecdir,
2705 install : true,
2706 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002707
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002708 meson.add_install_script('sh', '-c',
2709 mkdir_p.format(modulesloaddir))
2710 meson.add_install_script('sh', '-c',
2711 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002712endif
2713
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002714exe = executable('systemd-nspawn',
2715 systemd_nspawn_sources,
2716 'src/core/mount-setup.c', # FIXME: use a variable?
2717 'src/core/mount-setup.h',
2718 'src/core/loopback-setup.c',
2719 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002720 include_directories : includes,
2721 link_with : [libnspawn_core,
2722 libshared],
2723 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002724 install_rpath : rootlibexecdir,
2725 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002726public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002727
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002728if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002729 executable('systemd-networkd',
2730 systemd_networkd_sources,
2731 include_directories : includes,
2732 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002733 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002734 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002735 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002736 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002737 install_rpath : rootlibexecdir,
2738 install : true,
2739 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002740
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002741 executable('systemd-networkd-wait-online',
2742 systemd_networkd_wait_online_sources,
2743 include_directories : includes,
2744 link_with : [libnetworkd_core,
2745 libshared],
2746 install_rpath : rootlibexecdir,
2747 install : true,
2748 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002749
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002750 exe = executable('networkctl',
2751 networkctl_sources,
2752 include_directories : includes,
2753 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002754 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002755 install_rpath : rootlibexecdir,
2756 install : true,
2757 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002758 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002759endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002760
2761executable('systemd-sulogin-shell',
2762 ['src/sulogin-shell/sulogin-shell.c'],
2763 include_directories : includes,
2764 link_with : [libshared],
2765 install_rpath : rootlibexecdir,
2766 install : true,
2767 install_dir : rootlibexecdir)
2768
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002769############################################################
2770
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002771custom_target(
2772 'systemd-runtest.env',
2773 output : 'systemd-runtest.env',
2774 command : ['sh', '-c', '{ ' +
2775 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(meson.current_source_dir(), 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002776 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002777 '} >@OUTPUT@'],
2778 build_by_default : true)
2779
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002780foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002781 sources = tuple[0]
2782 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2783 dependencies = tuple[2]
2784 condition = tuple.length() >= 4 ? tuple[3] : ''
2785 type = tuple.length() >= 5 ? tuple[4] : ''
2786 defs = tuple.length() >= 6 ? tuple[5] : []
2787 incs = tuple.length() >= 7 ? tuple[6] : includes
2788 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002789
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002790 name = sources[0].split('/')[-1].split('.')[0]
2791 if type.startswith('timeout=')
2792 timeout = type.split('=')[1].to_int()
2793 type = ''
2794 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002795
2796 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002797 exe = executable(
2798 name,
2799 sources,
2800 include_directories : incs,
2801 link_with : link_with,
2802 dependencies : dependencies,
2803 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002804 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002805 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002806 install : install_tests,
2807 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002808
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002809 if type == 'manual'
2810 message('@0@ is a manual test'.format(name))
2811 elif type == 'unsafe' and want_tests != 'unsafe'
2812 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002813 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002814 test(name, exe,
2815 env : test_env,
2816 timeout : timeout)
2817 endif
2818 else
2819 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2820 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002821endforeach
2822
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002823exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002824 'test-libsystemd-sym',
2825 test_libsystemd_sym_c,
2826 include_directories : includes,
2827 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002828 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002829 install : install_tests,
2830 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002831if want_tests != 'false'
2832 test('test-libsystemd-sym', exe)
2833endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002834
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002835exe = executable(
2836 'test-libsystemd-static-sym',
2837 test_libsystemd_sym_c,
2838 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002839 link_with : [install_libsystemd_static],
2840 dependencies : [threads], # threads is already included in dependencies on the library,
2841 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002842 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002843 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002844 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002845if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002846 test('test-libsystemd-static-sym', exe)
2847endif
2848
2849exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002850 'test-libudev-sym',
2851 test_libudev_sym_c,
2852 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002853 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002854 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002855 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002856 install : install_tests,
2857 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002858if want_tests != 'false'
2859 test('test-libudev-sym', exe)
2860endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002861
2862exe = executable(
2863 'test-libudev-static-sym',
2864 test_libudev_sym_c,
2865 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002866 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002867 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002868 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002869 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002870 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002871if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002872 test('test-libudev-static-sym', exe)
2873endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002874
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002875############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002876
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002877fuzzer_exes = []
2878
Michael Olbrich59967402018-11-11 11:27:35 +01002879if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002880foreach tuple : fuzzers
2881 sources = tuple[0]
2882 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2883 dependencies = tuple[2]
2884 defs = tuple.length() >= 4 ? tuple[3] : []
2885 incs = tuple.length() >= 5 ? tuple[4] : includes
2886
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002887 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002888 dependencies += fuzzing_engine
2889 else
2890 sources += 'src/fuzz/fuzz-main.c'
2891 endif
2892
2893 name = sources[0].split('/')[-1].split('.')[0]
2894
2895 fuzzer_exes += executable(
2896 name,
2897 sources,
2898 include_directories : [incs, include_directories('src/fuzz')],
2899 link_with : link_with,
2900 dependencies : dependencies,
2901 c_args : defs,
2902 install : false)
2903endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002904endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002905
Zbigniew Jędrzejewski-Szmek0c2e93b2018-12-20 22:33:24 +01002906run_target(
2907 'fuzzers',
2908 depends : [fuzzer_exes, version_h],
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002909 command : ['true'])
2910
2911############################################################
2912
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002913make_directive_index_py = find_program('tools/make-directive-index.py')
2914make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002915xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002916hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002917
2918subdir('units')
2919subdir('sysctl.d')
2920subdir('sysusers.d')
2921subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002922subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002923subdir('hwdb')
2924subdir('network')
2925subdir('man')
2926subdir('shell-completion/bash')
2927subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002928subdir('docs/sysvinit')
2929subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002930
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002931install_subdir('factory/etc',
2932 install_dir : factorydir)
2933
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002934install_data('xorg/50-systemd-user.sh',
2935 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002936install_data('modprobe.d/systemd.conf',
2937 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002938install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002939 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002940 'NEWS',
2941 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302942 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002943 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002944 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302945 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002946 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002947 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002948 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002949 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2950 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002951
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002952meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2953meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2954
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002955############################################################
2956
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002957meson_check_help = find_program('tools/meson-check-help.sh')
2958
2959foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002960 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002961 if want_tests != 'false'
2962 test('check-help-' + name,
2963 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002964 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002965 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002966endforeach
2967
2968############################################################
2969
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002970# Enable tests for all supported sanitizers
2971foreach tuple : sanitizers
2972 sanitizer = tuple[0]
2973 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002974
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002975 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002976 prev = ''
2977 foreach p : fuzz_regression_tests
2978 b = p.split('/')[-2]
2979 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002980
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002981 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002982
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002983 if name != prev
2984 if want_tests == 'false'
2985 message('Not compiling @0@ because tests is set to false'.format(name))
2986 elif slow_tests
2987 exe = custom_target(
2988 name,
2989 output : name,
2990 depends : build,
2991 command : [env, 'ln', '-fs',
2992 join_paths(build.full_path(), b),
2993 '@OUTPUT@'],
2994 build_by_default : true)
2995 else
2996 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2997 endif
2998 endif
2999 prev = name
3000
3001 if want_tests != 'false' and slow_tests
3002 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3003 env,
3004 args : [exe.full_path(),
Zbigniew Jędrzejewski-Szmeke6bad672018-08-10 17:15:05 +02003005 join_paths(meson.source_root(), p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003006 endif
3007 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003008 endif
3009endforeach
3010
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003011
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003012############################################################
3013
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003014if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003015 all_files = run_command(
3016 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003017 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003018 'ls-files',
3019 ':/*.[ch]'])
3020 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003021
userwithuide85a6902017-08-09 13:41:44 +00003022 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003023 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003024 output : 'tags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003025 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.source_root())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003026 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003027 'ctags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003028 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.source_root())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003029endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003030
3031if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003032 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003033 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003034 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003035 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003036endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003037
3038if git.found()
3039 git_head = run_command(
3040 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003041 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003042 'rev-parse', 'HEAD']).stdout().strip()
3043 git_head_short = run_command(
3044 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003045 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003046 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3047
3048 run_target(
3049 'git-snapshot',
3050 command : ['git', 'archive',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003051 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.source_root(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003052 git_head_short),
3053 '--prefix', 'systemd-@0@/'.format(git_head),
3054 'HEAD'])
3055endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003056
3057############################################################
3058
Lennart Poettering51b13862017-12-20 12:51:14 +01003059meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3060run_target(
3061 'check-api-docs',
3062 depends : [man, libsystemd, libudev],
3063 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3064
3065############################################################
3066
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003067status = [
3068 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3069
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003070 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003071 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003072 'prefix directory: @0@'.format(prefixdir),
3073 'rootprefix directory: @0@'.format(rootprefixdir),
3074 'sysconf directory: @0@'.format(sysconfdir),
3075 'include directory: @0@'.format(includedir),
3076 'lib directory: @0@'.format(libdir),
3077 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003078 'SysV init scripts: @0@'.format(sysvinit_path),
3079 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003080 'PAM modules directory: @0@'.format(pamlibdir),
3081 'PAM configuration directory: @0@'.format(pamconfdir),
3082 'RPM macros directory: @0@'.format(rpmmacrosdir),
3083 'modprobe.d directory: @0@'.format(modprobedir),
3084 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3085 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3086 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3087 'bash completions directory: @0@'.format(bashcompletiondir),
3088 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003089 'extra start script: @0@'.format(get_option('rc-local')),
3090 'extra stop script: @0@'.format(get_option('halt-local')),
3091 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3092 get_option('debug-tty')),
3093 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003094 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003095 'maximum system UID: @0@'.format(system_uid_max),
3096 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003097 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3098 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3099 'minimum container UID base: @0@'.format(container_uid_base_min),
3100 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003101 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003102 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003103 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003104 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003105 'nobody user name: @0@'.format(nobody_user),
3106 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003107 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003108 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003109
3110 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003111 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003112 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003113 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003114 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
3115 'default locale: @0@'.format(default_locale)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003116
3117alt_dns_servers = '\n '.join(dns_servers.split(' '))
3118alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3119status += [
3120 'default DNS servers: @0@'.format(alt_dns_servers),
3121 'default NTP servers: @0@'.format(alt_ntp_servers)]
3122
3123alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3124 '@@0@'.format(time_epoch)).stdout().strip()
3125status += [
3126 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3127
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003128status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003129 'static libsystemd: @0@'.format(static_libsystemd),
3130 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003131
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003132# TODO:
3133# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3134# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3135# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3136
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003137if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003138 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003139
3140 if have_gnu_efi
3141 status += [
3142 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003143 'EFI CC @0@'.format(' '.join(efi_cc)),
Yu Watanabe359b4962017-11-25 20:35:24 +09003144 'EFI lib directory: @0@'.format(efi_libdir),
3145 'EFI lds directory: @0@'.format(efi_ldsdir),
3146 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003147 endif
3148endif
3149
3150found = []
3151missing = []
3152
3153foreach tuple : [
3154 ['libcryptsetup'],
3155 ['PAM'],
3156 ['AUDIT'],
3157 ['IMA'],
3158 ['AppArmor'],
3159 ['SELinux'],
3160 ['SECCOMP'],
3161 ['SMACK'],
3162 ['zlib'],
3163 ['xz'],
3164 ['lz4'],
3165 ['bzip2'],
3166 ['ACL'],
3167 ['gcrypt'],
3168 ['qrencode'],
3169 ['microhttpd'],
3170 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003171 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003172 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003173 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003174 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003175 ['libidn'],
3176 ['libiptc'],
3177 ['elfutils'],
3178 ['binfmt'],
3179 ['vconsole'],
3180 ['quotacheck'],
3181 ['tmpfiles'],
3182 ['environment.d'],
3183 ['sysusers'],
3184 ['firstboot'],
3185 ['randomseed'],
3186 ['backlight'],
3187 ['rfkill'],
3188 ['logind'],
3189 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003190 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003191 ['importd'],
3192 ['hostnamed'],
3193 ['timedated'],
3194 ['timesyncd'],
3195 ['localed'],
3196 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003197 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003198 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3199 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003200 ['coredump'],
3201 ['polkit'],
3202 ['legacy pkla', install_polkit_pkla],
3203 ['efi'],
3204 ['gnu-efi', have_gnu_efi],
3205 ['kmod'],
3206 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003207 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003208 ['blkid'],
3209 ['dbus'],
3210 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003211 ['nss-myhostname'],
3212 ['nss-mymachines'],
3213 ['nss-resolve'],
3214 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003215 ['hwdb'],
3216 ['tpm'],
3217 ['man pages', want_man],
3218 ['html pages', want_html],
3219 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003220 ['SysV compat'],
3221 ['utmp'],
3222 ['ldconfig'],
3223 ['hibernate'],
3224 ['adm group', get_option('adm-group')],
3225 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003226 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003227 ['debug hashmap'],
3228 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003229 ['debug siphash'],
Yu Watanabe20e97dd2018-11-23 00:28:27 +09003230 ['debug udev'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003231 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003232 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003233 ['link-udev-shared', get_option('link-udev-shared')],
3234 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003235]
3236
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003237 if tuple.length() >= 2
3238 cond = tuple[1]
3239 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003240 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3241 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003242 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003243 endif
3244 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003245 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003246 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003247 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003248 endif
3249endforeach
3250
3251status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003252 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003253 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003254 '',
3255 'disabled features: @0@'.format(', '.join(missing)),
3256 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003257message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003258
3259if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003260 warning('\n' +
3261 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3262 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3263 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003264endif