blob: a72b00fdaf2e1027c118e3f7b6d9c5c1a6ccc0de [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 == ''
837 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
838 default_locale = run_command(choose_default_locale_sh).stdout().strip()
839endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500840conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
841
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400842conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
843
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400844substs.set('SUSHELL', get_option('debug-shell'))
845substs.set('DEBUGTTY', get_option('debug-tty'))
846
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200847enable_debug_hashmap = false
848enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900849enable_debug_siphash = false
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900850enable_debug_udev = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200851foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900852 if name == 'hashmap'
853 enable_debug_hashmap = true
854 elif name == 'mmap-cache'
855 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900856 elif name == 'siphash'
857 enable_debug_siphash = true
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900858 elif name == 'udev'
859 enable_debug_udev = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900860 else
861 message('unknown debug option "@0@", ignoring'.format(name))
862 endif
863endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200864conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
865conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900866conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900867conf.set10('ENABLE_DEBUG_UDEV', enable_debug_udev)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400868
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200869conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200870conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200871
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400872#####################################################################
873
874threads = dependency('threads')
875librt = cc.find_library('rt')
876libm = cc.find_library('m')
877libdl = cc.find_library('dl')
878libcrypt = cc.find_library('crypt')
879
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400880libcap = dependency('libcap', required : false)
881if not libcap.found()
882 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
883 libcap = cc.find_library('cap')
884endif
885
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400886libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100887 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400888
889want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500890if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400891 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400892 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400893 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200894 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400895else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200896 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400897 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400898endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200899conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400900
901want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500902if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400903 libselinux = dependency('libselinux',
904 version : '>= 2.1.9',
905 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200906 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400907else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200908 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400909 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400910endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200911conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400912
913want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500914if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400915 libapparmor = dependency('libapparmor',
916 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200917 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400918else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200919 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400920 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400921endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200922conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400923
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400924smack_run_label = get_option('smack-run-label')
925if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400926 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400927endif
928
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400929want_polkit = get_option('polkit')
930install_polkit = false
931install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500932if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400933 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400934
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400935 libpolkit = dependency('polkit-gobject-1',
936 required : false)
937 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
938 message('Old polkit detected, will install pkla files')
939 install_polkit_pkla = true
940 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400941endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200942conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400943
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400944want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500945if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400946 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200947 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400948else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200949 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400950 libacl = []
951endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200952conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400953
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400954want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500955if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400956 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200957 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400958else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200959 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400960 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400961endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200962conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400963
964want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500965if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400966 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200967 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400968else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200969 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400970 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400971endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200972conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400973
974want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500975if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400976 libkmod = dependency('libkmod',
977 version : '>= 15',
978 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200979 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400980else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200981 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400982 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400983endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200984conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400985
986want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500987if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400988 libpam = cc.find_library('pam', required : want_pam == 'true')
989 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200990 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400991else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200992 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400993 libpam = []
994 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400995endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200996conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400997
998want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500999if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001000 libmicrohttpd = dependency('libmicrohttpd',
1001 version : '>= 0.9.33',
1002 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001003 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001004else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001005 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001006 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001007endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001008conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001009
1010want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001011if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001012 libcryptsetup = dependency('libcryptsetup',
1013 version : '>= 1.6.0',
1014 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001015 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001016 have_sector = cc.has_member(
1017 'struct crypt_params_plain',
1018 'sector_size',
1019 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001020else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001021 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001022 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001023 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001024endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001025conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001026conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001027
1028want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001029if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001030 libcurl = dependency('libcurl',
1031 version : '>= 7.32.0',
1032 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001033 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001034else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001035 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001036 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001037endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001038conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001039
1040want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001041want_libidn2 = get_option('libidn2')
1042if want_libidn == 'true' and want_libidn2 == 'true'
1043 error('libidn and libidn2 cannot be requested simultaneously')
1044endif
1045
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001046if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001047 libidn = dependency('libidn',
1048 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001049 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001050else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001051 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001052 libidn = []
1053endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001054conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001055if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001056 # libidn is used for both libidn and libidn2 objects
1057 libidn = dependency('libidn2',
1058 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001059 have = libidn.found()
1060else
1061 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001062endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001063conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001064
1065want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001066if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001067 libiptc = dependency('libiptc',
1068 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001069 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001070else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001071 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001072 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001073endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001074conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001075
1076want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001077if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001078 libqrencode = dependency('libqrencode',
1079 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001080 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001081else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001082 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001083 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001084endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001085conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001086
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001087want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001088if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001089 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1090 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001091 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001092else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001093 have = false
1094endif
1095if not have
1096 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001097 libgcrypt = []
1098 libgpg_error = []
1099endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001100conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001101
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001102want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001103if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001104 libgnutls = dependency('gnutls',
1105 version : '>= 3.1.4',
1106 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001107 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001108else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001109 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001110 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001111endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001112conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001113
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001114want_openssl = get_option('openssl')
1115if want_openssl != 'false' and not fuzzer_build
1116 libopenssl = dependency('openssl',
1117 version : '>= 1.1.0',
1118 required : want_openssl == 'true')
1119 have = libopenssl.found()
1120else
1121 have = false
1122 libopenssl = []
1123endif
1124conf.set10('HAVE_OPENSSL', have)
1125
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001126want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001127if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001128 libdw = dependency('libdw',
1129 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001130 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001131else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001132 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001133 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001134endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001135conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001136
1137want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001138if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001139 libz = dependency('zlib',
1140 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001141 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001142else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001143 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001144 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001145endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001146conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001147
1148want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001149if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001150 libbzip2 = cc.find_library('bz2',
1151 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001152 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001153else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001154 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001155 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001156endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001157conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001158
1159want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001160if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001161 libxz = dependency('liblzma',
1162 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001163 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001164else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001165 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001166 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001167endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001168conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001169
1170want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001171if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001172 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001173 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001174 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001175 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001176else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001177 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001178 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001179endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001180conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001181
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001182want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001183if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001184 libxkbcommon = dependency('xkbcommon',
1185 version : '>= 0.3.0',
1186 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001187 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001188else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001189 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001190 libxkbcommon = []
1191endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001192conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001193
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001194want_pcre2 = get_option('pcre2')
1195if want_pcre2 != 'false'
1196 libpcre2 = dependency('libpcre2-8',
1197 required : want_pcre2 == 'true')
1198 have = libpcre2.found()
1199else
1200 have = false
1201 libpcre2 = []
1202endif
1203conf.set10('HAVE_PCRE2', have)
1204
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001205want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001206if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001207 libglib = dependency('glib-2.0',
1208 version : '>= 2.22.0',
1209 required : want_glib == 'true')
1210 libgobject = dependency('gobject-2.0',
1211 version : '>= 2.22.0',
1212 required : want_glib == 'true')
1213 libgio = dependency('gio-2.0',
1214 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001215 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001216else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001217 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001218 libglib = []
1219 libgobject = []
1220 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001221endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001222conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001223
1224want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001225if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001226 libdbus = dependency('dbus-1',
1227 version : '>= 1.3.2',
1228 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001229 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001230else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001231 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001232 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001233endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001234conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001235
Yu Watanabe42303dc2017-06-18 05:22:32 +09001236default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001237if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001238 default_dnssec = 'no'
1239endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001240if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001241 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1242 default_dnssec = 'no'
1243endif
1244conf.set('DEFAULT_DNSSEC_MODE',
1245 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1246substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1247
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001248dns_over_tls = get_option('dns-over-tls')
1249if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001250 if dns_over_tls == 'openssl'
1251 have_gnutls = false
1252 else
1253 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1254 if dns_over_tls == 'gnutls' and not have_gnutls
1255 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1256 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001257 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001258 if dns_over_tls == 'gnutls' or have_gnutls
1259 have_openssl = false
1260 else
1261 have_openssl = conf.get('HAVE_OPENSSL') == 1
1262 if dns_over_tls != 'auto' and not have_openssl
1263 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
1264 error('DNS-over-TLS support was requested$0$, but dependencies are not available'.format(str))
1265 endif
1266 endif
1267 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001268else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001269 have = false
1270 have_gnutls = false
1271 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001272endif
1273conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001274conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1275conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001276
Iwan Timmerc9299be2018-06-13 20:26:24 +02001277default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001278if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001279 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001280endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001281if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1282 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 +02001283 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001284endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001285conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1286 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1287substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001288
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001289want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001290if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001291 have = (conf.get('HAVE_LIBCURL') == 1 and
1292 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001293 conf.get('HAVE_XZ') == 1 and
1294 conf.get('HAVE_GCRYPT') == 1)
1295 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001296 error('importd support was requested, but dependencies are not available')
1297 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001298else
1299 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001300endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001301conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001302
1303want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001304if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001305 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1306 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001307 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1308 # it's possible to build one without the other. Complain only if
1309 # support was explictly requested. The auxiliary files like sysusers
1310 # config should be installed when any of the programs are built.
1311 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1312 error('remote support was requested, but dependencies are not available')
1313 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001314 have = have_deps[0] or have_deps[1]
1315else
1316 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001317endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001318conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001319
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001320foreach term : ['utmp',
1321 'hibernate',
1322 'environment-d',
1323 'binfmt',
1324 'coredump',
1325 'resolve',
1326 'logind',
1327 'hostnamed',
1328 'localed',
1329 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001330 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001331 'networkd',
1332 'timedated',
1333 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001334 'firstboot',
1335 'randomseed',
1336 'backlight',
1337 'vconsole',
1338 'quotacheck',
1339 'sysusers',
1340 'tmpfiles',
1341 'hwdb',
1342 'rfkill',
1343 'ldconfig',
1344 'efi',
1345 'tpm',
1346 'ima',
1347 'smack',
1348 'gshadow',
1349 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001350 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001351 'nss-systemd']
1352 have = get_option(term)
1353 name = 'ENABLE_' + term.underscorify().to_upper()
1354 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001355endforeach
1356
Yu Watanabe08540a92018-07-18 09:25:57 +09001357foreach tuple : [['nss-mymachines', 'machined'],
1358 ['nss-resolve', 'resolve']]
1359 want = get_option(tuple[0])
1360 if want != 'false'
1361 have = get_option(tuple[1])
1362 if want == 'true' and not have
1363 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1364 endif
1365 else
1366 have = false
1367 endif
1368 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1369 conf.set10(name, have)
1370endforeach
1371
1372enable_nss = false
1373foreach term : ['ENABLE_NSS_MYHOSTNAME',
1374 'ENABLE_NSS_MYMACHINES',
1375 'ENABLE_NSS_RESOLVE',
1376 'ENABLE_NSS_SYSTEMD']
1377 if conf.get(term) == 1
1378 enable_nss = true
1379 endif
1380endforeach
1381conf.set10('ENABLE_NSS', enable_nss)
1382
Yu Watanabe348b4432018-05-07 18:17:35 +09001383conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001384
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001385tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001386fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001387
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001388conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001389
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001390#####################################################################
1391
1392if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001393 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001394
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001395 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001396 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001397 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001398 elif efi_arch == 'x86_64'
1399 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001400 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001401 elif efi_arch == 'arm'
1402 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001403 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001404 elif efi_arch == 'aarch64'
1405 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001406 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001407 else
1408 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001409 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001410 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001411
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001412 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001413 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001414
Yu Watanabeac093402018-05-10 16:04:16 +09001415 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001416else
1417 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001418endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001419conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001420
1421#####################################################################
1422
1423config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001424 output : 'config.h',
1425 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001426
Yu Watanabe348b4432018-05-07 18:17:35 +09001427meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1428
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001429includes = include_directories('src/basic',
1430 'src/shared',
1431 'src/systemd',
1432 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001433 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001434 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001435 'src/resolve',
1436 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001437 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001438 'src/login',
1439 'src/udev',
1440 'src/libudev',
1441 'src/core',
1442 'src/libsystemd/sd-bus',
1443 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001444 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001445 'src/libsystemd/sd-hwdb',
1446 'src/libsystemd/sd-id128',
1447 'src/libsystemd/sd-netlink',
1448 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001449 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001450 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001451 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001452
1453add_project_arguments('-include', 'config.h', language : 'c')
1454
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001455generate_gperfs = find_program('tools/generate-gperfs.py')
1456
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001457subdir('po')
1458subdir('catalog')
1459subdir('src/systemd')
1460subdir('src/basic')
1461subdir('src/libsystemd')
1462subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001463subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001464subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001465
1466libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001467 'journal-core',
1468 libjournal_core_sources,
1469 journald_gperf_c,
1470 include_directories : includes,
1471 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001472
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001473libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001474libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001475 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001476 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001477 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001478 include_directories : includes,
1479 link_args : ['-shared',
1480 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001481 link_with : [libbasic,
1482 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001483 link_whole : [libsystemd_static,
1484 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001485 dependencies : [threads,
1486 librt,
1487 libxz,
1488 liblz4],
1489 link_depends : libsystemd_sym,
1490 install : true,
1491 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001492
Davide Cavalca70848ec2018-04-09 02:43:35 -07001493static_libsystemd = get_option('static-libsystemd')
1494static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1495
1496install_libsystemd_static = static_library(
1497 'systemd',
1498 libsystemd_sources,
1499 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001500 basic_sources,
1501 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001502 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001503 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001504 build_by_default : static_libsystemd != 'false',
1505 install : static_libsystemd != 'false',
1506 install_dir : rootlibdir,
1507 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1508 dependencies : [threads,
1509 librt,
1510 libxz,
1511 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001512 libcap,
1513 libblkid,
1514 libmount,
1515 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001516 libgcrypt],
1517 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1518
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001519############################################################
1520
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001521# binaries that have --help and are intended for use by humans,
1522# usually, but not always, installed in /bin.
1523public_programs = []
1524
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001525subdir('src/libudev')
1526subdir('src/shared')
1527subdir('src/core')
1528subdir('src/udev')
1529subdir('src/network')
1530
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001531subdir('src/analyze')
1532subdir('src/journal-remote')
1533subdir('src/coredump')
1534subdir('src/hostname')
1535subdir('src/import')
1536subdir('src/kernel-install')
1537subdir('src/locale')
1538subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001539subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001540subdir('src/nspawn')
1541subdir('src/resolve')
1542subdir('src/timedate')
1543subdir('src/timesync')
1544subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001545subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001546
1547subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001548subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001549subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001550subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001551
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001552############################################################
1553
1554# only static linking apart from libdl, to make sure that the
1555# module is linked to all libraries that it uses.
1556test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001557 'test-dlopen',
1558 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001559 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001560 include_directories : includes,
1561 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001562 dependencies : [libdl],
1563 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001564
Yu Watanabe08540a92018-07-18 09:25:57 +09001565foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001566 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001567 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1568 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001569
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001570 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001571 if condition
1572 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001573
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001574 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001575 version_script_arg = join_paths(meson.source_root(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001576
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001577 nss = shared_library(
1578 'nss_' + module,
1579 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001580 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001581 version : '2',
1582 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001583 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1584 link_args : ['-Wl,-z,nodelete',
1585 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001586 '-Wl,--version-script=' + version_script_arg,
1587 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001588 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001589 libbasic],
1590 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001591 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001592 link_depends : sym,
1593 install : true,
1594 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001595
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001596 # We cannot use shared_module because it does not support version suffix.
1597 # Unfortunately shared_library insists on creating the symlink…
1598 meson.add_install_script('sh', '-c',
1599 'rm $DESTDIR@0@/libnss_@1@.so'
1600 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001601
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001602 if want_tests != 'false'
1603 test('dlopen-nss_' + module,
1604 test_dlopen,
1605 # path to dlopen must include a slash
1606 args : nss.full_path())
1607 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001608 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001609endforeach
1610
1611############################################################
1612
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001613executable('systemd',
1614 systemd_sources,
1615 include_directories : includes,
1616 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001617 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001618 dependencies : [threads,
1619 librt,
1620 libseccomp,
1621 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001622 libmount,
1623 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001624 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001625 install : true,
1626 install_dir : rootlibexecdir)
1627
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001628meson.add_install_script(meson_make_symlink,
1629 join_paths(rootlibexecdir, 'systemd'),
1630 join_paths(rootsbindir, 'init'))
1631
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001632exe = executable('systemd-analyze',
1633 systemd_analyze_sources,
1634 include_directories : includes,
1635 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001636 libshared],
1637 dependencies : [threads,
1638 librt,
1639 libseccomp,
1640 libselinux,
1641 libmount,
1642 libblkid],
1643 install_rpath : rootlibexecdir,
1644 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001645public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001646
1647executable('systemd-journald',
1648 systemd_journald_sources,
1649 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001650 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001651 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001652 dependencies : [threads,
1653 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001654 liblz4,
1655 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001656 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001657 install : true,
1658 install_dir : rootlibexecdir)
1659
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001660exe = executable('systemd-cat',
1661 systemd_cat_sources,
1662 include_directories : includes,
1663 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001664 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001665 dependencies : [threads],
1666 install_rpath : rootlibexecdir,
1667 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001668public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001669
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001670exe = executable('journalctl',
1671 journalctl_sources,
1672 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001673 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001674 dependencies : [threads,
1675 libqrencode,
1676 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001677 liblz4,
1678 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001679 install_rpath : rootlibexecdir,
1680 install : true,
1681 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001682public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001683
1684executable('systemd-getty-generator',
1685 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001686 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001687 link_with : [libshared],
1688 install_rpath : rootlibexecdir,
1689 install : true,
1690 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001691
1692executable('systemd-debug-generator',
1693 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001694 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001695 link_with : [libshared],
1696 install_rpath : rootlibexecdir,
1697 install : true,
1698 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001699
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001700executable('systemd-run-generator',
1701 'src/run-generator/run-generator.c',
1702 include_directories : includes,
1703 link_with : [libshared],
1704 install_rpath : rootlibexecdir,
1705 install : true,
1706 install_dir : systemgeneratordir)
1707
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001708executable('systemd-fstab-generator',
1709 'src/fstab-generator/fstab-generator.c',
1710 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001711 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001712 link_with : [libshared],
1713 install_rpath : rootlibexecdir,
1714 install : true,
1715 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001716
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001717if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001718 executable('30-systemd-environment-d-generator',
1719 'src/environment-d-generator/environment-d-generator.c',
1720 include_directories : includes,
1721 link_with : [libshared],
1722 install_rpath : rootlibexecdir,
1723 install : true,
1724 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001725
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001726 meson.add_install_script(meson_make_symlink,
1727 join_paths(sysconfdir, 'environment'),
1728 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001729endif
1730
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001731if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001732 executable('systemd-hibernate-resume-generator',
1733 'src/hibernate-resume/hibernate-resume-generator.c',
1734 include_directories : includes,
1735 link_with : [libshared],
1736 install_rpath : rootlibexecdir,
1737 install : true,
1738 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001739
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001740 executable('systemd-hibernate-resume',
1741 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001742 include_directories : includes,
1743 link_with : [libshared],
1744 install_rpath : rootlibexecdir,
1745 install : true,
1746 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001747endif
1748
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001749if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001750 executable('systemd-gpt-auto-generator',
1751 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001752 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001753 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001754 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001755 dependencies : libblkid,
1756 install_rpath : rootlibexecdir,
1757 install : true,
1758 install_dir : systemgeneratordir)
1759
1760 exe = executable('systemd-dissect',
1761 'src/dissect/dissect.c',
1762 include_directories : includes,
1763 link_with : [libshared],
1764 install_rpath : rootlibexecdir,
1765 install : true,
1766 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001767 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001768endif
1769
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001770if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001771 executable('systemd-resolved',
1772 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001773 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001774 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001775 libbasic_gcrypt,
1776 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001777 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001778 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001779 install : true,
1780 install_dir : rootlibexecdir)
1781
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001782 exe = executable('resolvectl',
1783 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001784 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001785 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001786 libbasic_gcrypt,
1787 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001788 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001789 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001790 libm,
1791 libidn],
1792 install_rpath : rootlibexecdir,
1793 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001794 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001795
1796 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001797 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001798 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001799
1800 meson.add_install_script(meson_make_symlink,
1801 join_paths(bindir, 'resolvectl'),
1802 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001803endif
1804
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001805if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001806 executable('systemd-logind',
1807 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001808 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001809 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001810 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001811 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001812 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001813 install_rpath : rootlibexecdir,
1814 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001815 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001816
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001817 exe = executable('loginctl',
1818 loginctl_sources,
1819 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001820 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001821 dependencies : [threads,
1822 liblz4,
1823 libxz],
1824 install_rpath : rootlibexecdir,
1825 install : true,
1826 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001827 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001828
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001829 exe = executable('systemd-inhibit',
1830 'src/login/inhibit.c',
1831 include_directories : includes,
1832 link_with : [libshared],
1833 install_rpath : rootlibexecdir,
1834 install : true,
1835 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001836 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001837
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001838 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001839 version_script_arg = join_paths(meson.source_root(), pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001840 pam_systemd = shared_library(
1841 'pam_systemd',
1842 pam_systemd_c,
1843 name_prefix : '',
1844 include_directories : includes,
1845 link_args : ['-shared',
1846 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001847 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001848 libshared_static],
1849 dependencies : [threads,
1850 libpam,
1851 libpam_misc],
1852 link_depends : pam_systemd_sym,
1853 install : true,
1854 install_dir : pamlibdir)
1855
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001856 if want_tests != 'false'
1857 test('dlopen-pam_systemd',
1858 test_dlopen,
1859 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001860 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001861 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001862 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001863
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001864 executable('systemd-user-runtime-dir',
1865 user_runtime_dir_sources,
1866 include_directories : includes,
1867 link_with : [libshared],
1868 install_rpath : rootlibexecdir,
1869 install : true,
1870 install_dir : rootlibexecdir)
1871endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001872
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001873if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001874 executable('systemd-user-sessions',
1875 'src/user-sessions/user-sessions.c',
1876 include_directories : includes,
1877 link_with : [libshared],
1878 install_rpath : rootlibexecdir,
1879 install : true,
1880 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001881endif
1882
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001883if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001884 exe = executable('bootctl',
1885 'src/boot/bootctl.c',
1886 include_directories : includes,
1887 link_with : [libshared],
1888 dependencies : [libblkid],
1889 install_rpath : rootlibexecdir,
1890 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001891 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001892
1893 executable('systemd-bless-boot',
1894 'src/boot/bless-boot.c',
1895 include_directories : includes,
1896 link_with : [libshared],
1897 dependencies : [libblkid],
1898 install_rpath : rootlibexecdir,
1899 install : true,
1900 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001901
1902 executable('systemd-bless-boot-generator',
1903 'src/boot/bless-boot-generator.c',
1904 include_directories : includes,
1905 link_with : [libshared],
1906 install_rpath : rootlibexecdir,
1907 install : true,
1908 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001909endif
1910
Lennart Poetteringf876f532018-06-25 16:07:33 +02001911executable('systemd-boot-check-no-failures',
1912 'src/boot/boot-check-no-failures.c',
1913 include_directories : includes,
1914 link_with : [libshared],
1915 dependencies : [libblkid],
1916 install_rpath : rootlibexecdir,
1917 install : true,
1918 install_dir : rootlibexecdir)
1919
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001920exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1921 include_directories : includes,
1922 link_with : [libshared],
1923 dependencies : [threads],
1924 install_rpath : rootlibexecdir,
1925 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001926public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001927
Felipe Satelerf3794362018-05-22 15:08:57 -04001928
1929if get_option('link-systemctl-shared')
1930 systemctl_link_with = [libshared]
1931else
1932 systemctl_link_with = [libsystemd_static,
1933 libshared_static,
1934 libjournal_client,
1935 libbasic_gcrypt]
1936endif
1937
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001938exe = executable('systemctl', 'src/systemctl/systemctl.c',
1939 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001940 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001941 dependencies : [threads,
1942 libcap,
1943 libselinux,
1944 libxz,
1945 liblz4],
1946 install_rpath : rootlibexecdir,
1947 install : true,
1948 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001949public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001950
Lennart Poettering61d05782018-04-16 21:41:40 +02001951if conf.get('ENABLE_PORTABLED') == 1
1952 executable('systemd-portabled',
1953 systemd_portabled_sources,
1954 include_directories : includes,
1955 link_with : [libshared],
1956 dependencies : [threads],
1957 install_rpath : rootlibexecdir,
1958 install : true,
1959 install_dir : rootlibexecdir)
1960
1961 exe = executable('portablectl', 'src/portable/portablectl.c',
1962 include_directories : includes,
1963 link_with : [libshared],
1964 dependencies : [threads],
1965 install_rpath : rootlibexecdir,
1966 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001967 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001968 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001969endif
1970
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001971foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1972 meson.add_install_script(meson_make_symlink,
1973 join_paths(rootbindir, 'systemctl'),
1974 join_paths(rootsbindir, alias))
1975endforeach
1976
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001977if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001978 executable('systemd-backlight',
1979 'src/backlight/backlight.c',
1980 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001981 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001982 install_rpath : rootlibexecdir,
1983 install : true,
1984 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001985endif
1986
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001987if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001988 executable('systemd-rfkill',
1989 'src/rfkill/rfkill.c',
1990 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001991 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001992 install_rpath : rootlibexecdir,
1993 install : true,
1994 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001995endif
1996
1997executable('systemd-system-update-generator',
1998 'src/system-update-generator/system-update-generator.c',
1999 include_directories : includes,
2000 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002001 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002002 install : true,
2003 install_dir : systemgeneratordir)
2004
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002005if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002006 executable('systemd-cryptsetup',
2007 'src/cryptsetup/cryptsetup.c',
2008 include_directories : includes,
2009 link_with : [libshared],
2010 dependencies : [libcryptsetup],
2011 install_rpath : rootlibexecdir,
2012 install : true,
2013 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002014
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002015 executable('systemd-cryptsetup-generator',
2016 'src/cryptsetup/cryptsetup-generator.c',
2017 include_directories : includes,
2018 link_with : [libshared],
2019 dependencies : [libcryptsetup],
2020 install_rpath : rootlibexecdir,
2021 install : true,
2022 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002023
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002024 executable('systemd-veritysetup',
2025 'src/veritysetup/veritysetup.c',
2026 include_directories : includes,
2027 link_with : [libshared],
2028 dependencies : [libcryptsetup],
2029 install_rpath : rootlibexecdir,
2030 install : true,
2031 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002032
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002033 executable('systemd-veritysetup-generator',
2034 'src/veritysetup/veritysetup-generator.c',
2035 include_directories : includes,
2036 link_with : [libshared],
2037 dependencies : [libcryptsetup],
2038 install_rpath : rootlibexecdir,
2039 install : true,
2040 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002041endif
2042
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002043if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002044 executable('systemd-sysv-generator',
2045 'src/sysv-generator/sysv-generator.c',
2046 include_directories : includes,
2047 link_with : [libshared],
2048 install_rpath : rootlibexecdir,
2049 install : true,
2050 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002051
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002052 executable('systemd-rc-local-generator',
2053 'src/rc-local-generator/rc-local-generator.c',
2054 include_directories : includes,
2055 link_with : [libshared],
2056 install_rpath : rootlibexecdir,
2057 install : true,
2058 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002059endif
2060
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002061if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002062 executable('systemd-hostnamed',
2063 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002064 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002065 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002066 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002067 install : true,
2068 install_dir : rootlibexecdir)
2069
2070 exe = executable('hostnamectl',
2071 'src/hostname/hostnamectl.c',
2072 include_directories : includes,
2073 link_with : [libshared],
2074 install_rpath : rootlibexecdir,
2075 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002076 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002077endif
2078
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002079if conf.get('ENABLE_LOCALED') == 1
2080 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002081 # logind will load libxkbcommon.so dynamically on its own
2082 deps = [libdl]
2083 else
2084 deps = []
2085 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002086
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002087 executable('systemd-localed',
2088 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002089 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002090 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002091 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002092 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002093 install : true,
2094 install_dir : rootlibexecdir)
2095
2096 exe = executable('localectl',
2097 localectl_sources,
2098 include_directories : includes,
2099 link_with : [libshared],
2100 install_rpath : rootlibexecdir,
2101 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002102 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002103endif
2104
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002105if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002106 executable('systemd-timedated',
2107 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002108 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002109 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002110 install_rpath : rootlibexecdir,
2111 install : true,
2112 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002113endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002114
Yu Watanabe6129ec82018-05-03 18:07:43 +09002115if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002116 exe = executable('timedatectl',
2117 'src/timedate/timedatectl.c',
2118 include_directories : includes,
2119 install_rpath : rootlibexecdir,
2120 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002121 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002122 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002123 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002124endif
2125
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002126if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002127 executable('systemd-timesyncd',
2128 systemd_timesyncd_sources,
2129 include_directories : includes,
2130 link_with : [libshared],
2131 dependencies : [threads,
2132 libm],
2133 install_rpath : rootlibexecdir,
2134 install : true,
2135 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002136
2137 executable('systemd-time-wait-sync',
2138 'src/time-wait-sync/time-wait-sync.c',
2139 include_directories : includes,
2140 link_with : [libshared],
2141 install_rpath : rootlibexecdir,
2142 install : true,
2143 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002144endif
2145
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002146if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002147 executable('systemd-machined',
2148 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002149 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002150 link_with : [libmachine_core,
2151 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002152 install_rpath : rootlibexecdir,
2153 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002154 install_dir : rootlibexecdir)
2155
2156 exe = executable('machinectl',
2157 'src/machine/machinectl.c',
2158 include_directories : includes,
2159 link_with : [libshared],
2160 dependencies : [threads,
2161 libxz,
2162 liblz4],
2163 install_rpath : rootlibexecdir,
2164 install : true,
2165 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002166 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002167endif
2168
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002169if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002170 executable('systemd-importd',
2171 systemd_importd_sources,
2172 include_directories : includes,
2173 link_with : [libshared],
2174 dependencies : [threads],
2175 install_rpath : rootlibexecdir,
2176 install : true,
2177 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002178
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002179 systemd_pull = executable('systemd-pull',
2180 systemd_pull_sources,
2181 include_directories : includes,
2182 link_with : [libshared],
2183 dependencies : [libcurl,
2184 libz,
2185 libbzip2,
2186 libxz,
2187 libgcrypt],
2188 install_rpath : rootlibexecdir,
2189 install : true,
2190 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002191
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002192 systemd_import = executable('systemd-import',
2193 systemd_import_sources,
2194 include_directories : includes,
2195 link_with : [libshared],
2196 dependencies : [libcurl,
2197 libz,
2198 libbzip2,
2199 libxz],
2200 install_rpath : rootlibexecdir,
2201 install : true,
2202 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002203
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002204 systemd_import_fs = executable('systemd-import-fs',
2205 systemd_import_fs_sources,
2206 include_directories : includes,
2207 link_with : [libshared],
2208 install_rpath : rootlibexecdir,
2209 install : true,
2210 install_dir : rootlibexecdir)
2211
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002212 systemd_export = executable('systemd-export',
2213 systemd_export_sources,
2214 include_directories : includes,
2215 link_with : [libshared],
2216 dependencies : [libcurl,
2217 libz,
2218 libbzip2,
2219 libxz],
2220 install_rpath : rootlibexecdir,
2221 install : true,
2222 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002223
2224 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002225endif
2226
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002227if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002228 exe = executable('systemd-journal-upload',
2229 systemd_journal_upload_sources,
2230 include_directories : includes,
2231 link_with : [libshared],
2232 dependencies : [threads,
2233 libcurl,
2234 libgnutls,
2235 libxz,
2236 liblz4],
2237 install_rpath : rootlibexecdir,
2238 install : true,
2239 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002240 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002241endif
2242
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002243if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002244 s_j_remote = executable('systemd-journal-remote',
2245 systemd_journal_remote_sources,
2246 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002247 link_with : [libshared,
2248 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002249 dependencies : [threads,
2250 libmicrohttpd,
2251 libgnutls,
2252 libxz,
2253 liblz4],
2254 install_rpath : rootlibexecdir,
2255 install : true,
2256 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002257
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002258 s_j_gatewayd = executable('systemd-journal-gatewayd',
2259 systemd_journal_gatewayd_sources,
2260 include_directories : includes,
2261 link_with : [libshared],
2262 dependencies : [threads,
2263 libmicrohttpd,
2264 libgnutls,
2265 libxz,
2266 liblz4],
2267 install_rpath : rootlibexecdir,
2268 install : true,
2269 install_dir : rootlibexecdir)
2270 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002271endif
2272
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002273if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002274 executable('systemd-coredump',
2275 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002276 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002277 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002278 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002279 libacl,
2280 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002281 libxz,
2282 liblz4],
2283 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002284 install : true,
2285 install_dir : rootlibexecdir)
2286
2287 exe = executable('coredumpctl',
2288 coredumpctl_sources,
2289 include_directories : includes,
2290 link_with : [libshared],
2291 dependencies : [threads,
2292 libxz,
2293 liblz4],
2294 install_rpath : rootlibexecdir,
2295 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002296 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002297endif
2298
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002299if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002300 exe = executable('systemd-binfmt',
2301 'src/binfmt/binfmt.c',
2302 include_directories : includes,
2303 link_with : [libshared],
2304 install_rpath : rootlibexecdir,
2305 install : true,
2306 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002307 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002308
2309 meson.add_install_script('sh', '-c',
2310 mkdir_p.format(binfmtdir))
2311 meson.add_install_script('sh', '-c',
2312 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2313endif
2314
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002315if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002316 executable('systemd-vconsole-setup',
2317 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002318 include_directories : includes,
2319 link_with : [libshared],
2320 install_rpath : rootlibexecdir,
2321 install : true,
2322 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002323endif
2324
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002325if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002326 executable('systemd-random-seed',
2327 'src/random-seed/random-seed.c',
2328 include_directories : includes,
2329 link_with : [libshared],
2330 install_rpath : rootlibexecdir,
2331 install : true,
2332 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002333endif
2334
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002335if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002336 executable('systemd-firstboot',
2337 'src/firstboot/firstboot.c',
2338 include_directories : includes,
2339 link_with : [libshared],
2340 dependencies : [libcrypt],
2341 install_rpath : rootlibexecdir,
2342 install : true,
2343 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002344endif
2345
2346executable('systemd-remount-fs',
2347 'src/remount-fs/remount-fs.c',
2348 'src/core/mount-setup.c',
2349 'src/core/mount-setup.h',
2350 include_directories : includes,
2351 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002352 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002353 install : true,
2354 install_dir : rootlibexecdir)
2355
2356executable('systemd-machine-id-setup',
2357 'src/machine-id-setup/machine-id-setup-main.c',
2358 'src/core/machine-id-setup.c',
2359 'src/core/machine-id-setup.h',
2360 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002361 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002362 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002363 install : true,
2364 install_dir : rootbindir)
2365
2366executable('systemd-fsck',
2367 'src/fsck/fsck.c',
2368 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002369 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002370 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002371 install : true,
2372 install_dir : rootlibexecdir)
2373
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002374executable('systemd-growfs',
2375 'src/partition/growfs.c',
2376 include_directories : includes,
2377 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002378 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002379 install_rpath : rootlibexecdir,
2380 install : true,
2381 install_dir : rootlibexecdir)
2382
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002383executable('systemd-makefs',
2384 'src/partition/makefs.c',
2385 include_directories : includes,
2386 link_with : [libshared],
2387 install_rpath : rootlibexecdir,
2388 install : true,
2389 install_dir : rootlibexecdir)
2390
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002391executable('systemd-sleep',
2392 'src/sleep/sleep.c',
2393 include_directories : includes,
2394 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002395 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002396 install : true,
2397 install_dir : rootlibexecdir)
2398
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002399exe = executable('systemd-sysctl',
2400 'src/sysctl/sysctl.c',
2401 include_directories : includes,
2402 link_with : [libshared],
2403 install_rpath : rootlibexecdir,
2404 install : true,
2405 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002406public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002407
2408executable('systemd-ac-power',
2409 'src/ac-power/ac-power.c',
2410 include_directories : includes,
2411 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002412 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002413 install : true,
2414 install_dir : rootlibexecdir)
2415
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002416exe = executable('systemd-detect-virt',
2417 'src/detect-virt/detect-virt.c',
2418 include_directories : includes,
2419 link_with : [libshared],
2420 install_rpath : rootlibexecdir,
2421 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002422public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002423
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002424exe = executable('systemd-delta',
2425 'src/delta/delta.c',
2426 include_directories : includes,
2427 link_with : [libshared],
2428 install_rpath : rootlibexecdir,
2429 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002430public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002431
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002432exe = executable('systemd-escape',
2433 'src/escape/escape.c',
2434 include_directories : includes,
2435 link_with : [libshared],
2436 install_rpath : rootlibexecdir,
2437 install : true,
2438 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002439public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002440
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002441exe = executable('systemd-notify',
2442 'src/notify/notify.c',
2443 include_directories : includes,
2444 link_with : [libshared],
2445 install_rpath : rootlibexecdir,
2446 install : true,
2447 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002448public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002449
2450executable('systemd-volatile-root',
2451 'src/volatile-root/volatile-root.c',
2452 include_directories : includes,
2453 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002454 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002455 install : true,
2456 install_dir : rootlibexecdir)
2457
2458executable('systemd-cgroups-agent',
2459 'src/cgroups-agent/cgroups-agent.c',
2460 include_directories : includes,
2461 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002462 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002463 install : true,
2464 install_dir : rootlibexecdir)
2465
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002466exe = executable('systemd-id128',
2467 'src/id128/id128.c',
2468 include_directories : includes,
2469 link_with : [libshared],
2470 install_rpath : rootlibexecdir,
2471 install : true)
2472public_programs += exe
2473
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002474exe = executable('systemd-path',
2475 'src/path/path.c',
2476 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002477 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002478 install_rpath : rootlibexecdir,
2479 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002480public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002481
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002482exe = executable('systemd-ask-password',
2483 'src/ask-password/ask-password.c',
2484 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002485 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002486 install_rpath : rootlibexecdir,
2487 install : true,
2488 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002489public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002490
2491executable('systemd-reply-password',
2492 'src/reply-password/reply-password.c',
2493 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002494 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002495 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002496 install : true,
2497 install_dir : rootlibexecdir)
2498
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002499exe = executable('systemd-tty-ask-password-agent',
2500 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2501 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002502 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002503 install_rpath : rootlibexecdir,
2504 install : true,
2505 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002506public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002507
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002508exe = executable('systemd-cgls',
2509 'src/cgls/cgls.c',
2510 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002511 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002512 install_rpath : rootlibexecdir,
2513 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002514public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002515
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002516exe = executable('systemd-cgtop',
2517 'src/cgtop/cgtop.c',
2518 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002519 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002520 install_rpath : rootlibexecdir,
2521 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002522public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002523
2524executable('systemd-initctl',
2525 'src/initctl/initctl.c',
2526 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002527 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002528 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002529 install : true,
2530 install_dir : rootlibexecdir)
2531
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002532exe = executable('systemd-mount',
2533 'src/mount/mount-tool.c',
2534 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002535 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002536 install_rpath : rootlibexecdir,
2537 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002538public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002539
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002540meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002541 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002542
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002543exe = executable('systemd-run',
2544 'src/run/run.c',
2545 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002546 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002547 install_rpath : rootlibexecdir,
2548 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002549public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002550
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002551exe = executable('systemd-stdio-bridge',
2552 'src/stdio-bridge/stdio-bridge.c',
2553 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002554 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002555 install_rpath : rootlibexecdir,
2556 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002557public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002558
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002559exe = executable('busctl',
2560 'src/busctl/busctl.c',
2561 'src/busctl/busctl-introspect.c',
2562 'src/busctl/busctl-introspect.h',
2563 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002564 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002565 install_rpath : rootlibexecdir,
2566 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002567public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002568
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002569if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002570 exe = executable('systemd-sysusers',
2571 'src/sysusers/sysusers.c',
2572 include_directories : includes,
2573 link_with : [libshared],
2574 install_rpath : rootlibexecdir,
2575 install : true,
2576 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002577 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002578endif
2579
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002580if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002581 exe = executable('systemd-tmpfiles',
2582 'src/tmpfiles/tmpfiles.c',
2583 include_directories : includes,
2584 link_with : [libshared],
2585 dependencies : [libacl],
2586 install_rpath : rootlibexecdir,
2587 install : true,
2588 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002589 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002590
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002591 if want_tests != 'false'
2592 test('test-systemd-tmpfiles',
2593 test_systemd_tmpfiles_py,
2594 # https://github.com/mesonbuild/meson/issues/2681
2595 args : exe.full_path())
2596 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002597endif
2598
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002599if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002600 exe = executable('systemd-hwdb',
2601 'src/hwdb/hwdb.c',
2602 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2603 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002604 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002605 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002606 install : true,
2607 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002608 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002609endif
2610
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002611if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002612 executable('systemd-quotacheck',
2613 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002614 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002615 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002616 install_rpath : rootlibexecdir,
2617 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002618 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002619endif
2620
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002621exe = executable('systemd-socket-proxyd',
2622 'src/socket-proxy/socket-proxyd.c',
2623 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002624 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002625 dependencies : [threads],
2626 install_rpath : rootlibexecdir,
2627 install : true,
2628 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002629public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002630
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002631exe = executable('systemd-udevd',
2632 systemd_udevd_sources,
2633 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002634 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002635 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002636 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002637 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002638 dependencies : [threads,
2639 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002640 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002641 libacl,
2642 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002643 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002644 install : true,
2645 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002646public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002647
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002648exe = executable('udevadm',
2649 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002650 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002651 include_directories : includes,
2652 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002653 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002654 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002655 dependencies : [threads,
2656 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002657 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002658 libacl,
2659 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002660 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002661 install : true,
2662 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002663public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002664
2665executable('systemd-shutdown',
2666 systemd_shutdown_sources,
2667 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002668 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002669 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002670 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002671 install : true,
2672 install_dir : rootlibexecdir)
2673
2674executable('systemd-update-done',
2675 'src/update-done/update-done.c',
2676 include_directories : includes,
2677 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002678 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002679 install : true,
2680 install_dir : rootlibexecdir)
2681
2682executable('systemd-update-utmp',
2683 'src/update-utmp/update-utmp.c',
2684 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002685 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002686 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002687 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002688 install : true,
2689 install_dir : rootlibexecdir)
2690
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002691if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002692 executable('systemd-modules-load',
2693 'src/modules-load/modules-load.c',
2694 include_directories : includes,
2695 link_with : [libshared],
2696 dependencies : [libkmod],
2697 install_rpath : rootlibexecdir,
2698 install : true,
2699 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002700
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002701 meson.add_install_script('sh', '-c',
2702 mkdir_p.format(modulesloaddir))
2703 meson.add_install_script('sh', '-c',
2704 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002705endif
2706
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002707exe = executable('systemd-nspawn',
2708 systemd_nspawn_sources,
2709 'src/core/mount-setup.c', # FIXME: use a variable?
2710 'src/core/mount-setup.h',
2711 'src/core/loopback-setup.c',
2712 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002713 include_directories : includes,
2714 link_with : [libnspawn_core,
2715 libshared],
2716 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002717 install_rpath : rootlibexecdir,
2718 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002719public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002720
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002721if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002722 executable('systemd-networkd',
2723 systemd_networkd_sources,
2724 include_directories : includes,
2725 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002726 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002727 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002728 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002729 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002730 install_rpath : rootlibexecdir,
2731 install : true,
2732 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002733
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002734 executable('systemd-networkd-wait-online',
2735 systemd_networkd_wait_online_sources,
2736 include_directories : includes,
2737 link_with : [libnetworkd_core,
2738 libshared],
2739 install_rpath : rootlibexecdir,
2740 install : true,
2741 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002742
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002743 exe = executable('networkctl',
2744 networkctl_sources,
2745 include_directories : includes,
2746 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002747 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002748 install_rpath : rootlibexecdir,
2749 install : true,
2750 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002751 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002752endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002753
2754executable('systemd-sulogin-shell',
2755 ['src/sulogin-shell/sulogin-shell.c'],
2756 include_directories : includes,
2757 link_with : [libshared],
2758 install_rpath : rootlibexecdir,
2759 install : true,
2760 install_dir : rootlibexecdir)
2761
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002762############################################################
2763
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002764custom_target(
2765 'systemd-runtest.env',
2766 output : 'systemd-runtest.env',
2767 command : ['sh', '-c', '{ ' +
2768 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(meson.current_source_dir(), 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002769 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002770 '} >@OUTPUT@'],
2771 build_by_default : true)
2772
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002773foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002774 sources = tuple[0]
2775 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2776 dependencies = tuple[2]
2777 condition = tuple.length() >= 4 ? tuple[3] : ''
2778 type = tuple.length() >= 5 ? tuple[4] : ''
2779 defs = tuple.length() >= 6 ? tuple[5] : []
2780 incs = tuple.length() >= 7 ? tuple[6] : includes
2781 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002782
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002783 name = sources[0].split('/')[-1].split('.')[0]
2784 if type.startswith('timeout=')
2785 timeout = type.split('=')[1].to_int()
2786 type = ''
2787 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002788
2789 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002790 exe = executable(
2791 name,
2792 sources,
2793 include_directories : incs,
2794 link_with : link_with,
2795 dependencies : dependencies,
2796 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002797 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002798 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002799 install : install_tests,
2800 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002801
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002802 if type == 'manual'
2803 message('@0@ is a manual test'.format(name))
2804 elif type == 'unsafe' and want_tests != 'unsafe'
2805 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002806 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002807 test(name, exe,
2808 env : test_env,
2809 timeout : timeout)
2810 endif
2811 else
2812 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2813 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002814endforeach
2815
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002816exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002817 'test-libsystemd-sym',
2818 test_libsystemd_sym_c,
2819 include_directories : includes,
2820 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002821 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002822 install : install_tests,
2823 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002824if want_tests != 'false'
2825 test('test-libsystemd-sym', exe)
2826endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002827
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002828exe = executable(
2829 'test-libsystemd-static-sym',
2830 test_libsystemd_sym_c,
2831 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002832 link_with : [install_libsystemd_static],
2833 dependencies : [threads], # threads is already included in dependencies on the library,
2834 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002835 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002836 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002837 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002838if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002839 test('test-libsystemd-static-sym', exe)
2840endif
2841
2842exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002843 'test-libudev-sym',
2844 test_libudev_sym_c,
2845 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002846 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002847 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002848 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002849 install : install_tests,
2850 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002851if want_tests != 'false'
2852 test('test-libudev-sym', exe)
2853endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002854
2855exe = executable(
2856 'test-libudev-static-sym',
2857 test_libudev_sym_c,
2858 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002859 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002860 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002861 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002862 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002863 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002864if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002865 test('test-libudev-static-sym', exe)
2866endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002867
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002868############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002869
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002870fuzzer_exes = []
2871
Michael Olbrich59967402018-11-11 11:27:35 +01002872if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002873foreach tuple : fuzzers
2874 sources = tuple[0]
2875 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2876 dependencies = tuple[2]
2877 defs = tuple.length() >= 4 ? tuple[3] : []
2878 incs = tuple.length() >= 5 ? tuple[4] : includes
2879
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002880 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002881 dependencies += fuzzing_engine
2882 else
2883 sources += 'src/fuzz/fuzz-main.c'
2884 endif
2885
2886 name = sources[0].split('/')[-1].split('.')[0]
2887
2888 fuzzer_exes += executable(
2889 name,
2890 sources,
2891 include_directories : [incs, include_directories('src/fuzz')],
2892 link_with : link_with,
2893 dependencies : dependencies,
2894 c_args : defs,
2895 install : false)
2896endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002897endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002898
Zbigniew Jędrzejewski-Szmek0c2e93b2018-12-20 22:33:24 +01002899run_target(
2900 'fuzzers',
2901 depends : [fuzzer_exes, version_h],
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002902 command : ['true'])
2903
2904############################################################
2905
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002906make_directive_index_py = find_program('tools/make-directive-index.py')
2907make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002908xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002909hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002910
2911subdir('units')
2912subdir('sysctl.d')
2913subdir('sysusers.d')
2914subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002915subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002916subdir('hwdb')
2917subdir('network')
2918subdir('man')
2919subdir('shell-completion/bash')
2920subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002921subdir('docs/sysvinit')
2922subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002923
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002924install_subdir('factory/etc',
2925 install_dir : factorydir)
2926
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002927install_data('xorg/50-systemd-user.sh',
2928 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002929install_data('modprobe.d/systemd.conf',
2930 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002931install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002932 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002933 'NEWS',
2934 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302935 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002936 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002937 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302938 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002939 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002940 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002941 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002942 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2943 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002944
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002945meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2946meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2947
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002948############################################################
2949
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002950meson_check_help = find_program('tools/meson-check-help.sh')
2951
2952foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002953 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002954 if want_tests != 'false'
2955 test('check-help-' + name,
2956 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002957 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002958 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002959endforeach
2960
2961############################################################
2962
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002963# Enable tests for all supported sanitizers
2964foreach tuple : sanitizers
2965 sanitizer = tuple[0]
2966 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002967
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002968 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002969 prev = ''
2970 foreach p : fuzz_regression_tests
2971 b = p.split('/')[-2]
2972 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002973
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002974 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002975
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002976 if name != prev
2977 if want_tests == 'false'
2978 message('Not compiling @0@ because tests is set to false'.format(name))
2979 elif slow_tests
2980 exe = custom_target(
2981 name,
2982 output : name,
2983 depends : build,
2984 command : [env, 'ln', '-fs',
2985 join_paths(build.full_path(), b),
2986 '@OUTPUT@'],
2987 build_by_default : true)
2988 else
2989 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2990 endif
2991 endif
2992 prev = name
2993
2994 if want_tests != 'false' and slow_tests
2995 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2996 env,
2997 args : [exe.full_path(),
Zbigniew Jędrzejewski-Szmeke6bad672018-08-10 17:15:05 +02002998 join_paths(meson.source_root(), p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002999 endif
3000 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003001 endif
3002endforeach
3003
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003004
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003005############################################################
3006
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003007if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003008 all_files = run_command(
3009 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003010 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003011 'ls-files',
3012 ':/*.[ch]'])
3013 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003014
userwithuide85a6902017-08-09 13:41:44 +00003015 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003016 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003017 output : 'tags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003018 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.source_root())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003019 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003020 'ctags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003021 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.source_root())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003022endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003023
3024if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003025 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003026 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003027 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003028 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003029endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003030
3031if git.found()
3032 git_head = run_command(
3033 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003034 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003035 'rev-parse', 'HEAD']).stdout().strip()
3036 git_head_short = run_command(
3037 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003038 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003039 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3040
3041 run_target(
3042 'git-snapshot',
3043 command : ['git', 'archive',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003044 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.source_root(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003045 git_head_short),
3046 '--prefix', 'systemd-@0@/'.format(git_head),
3047 'HEAD'])
3048endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003049
3050############################################################
3051
Lennart Poettering51b13862017-12-20 12:51:14 +01003052meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3053run_target(
3054 'check-api-docs',
3055 depends : [man, libsystemd, libudev],
3056 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3057
Lennart Poettering0bc7a222018-10-02 09:53:05 +02003058run_target(
3059 'make-index-md',
3060 command : ['sh', '@0@/tools/make-index-md.sh'.format(meson.source_root()), meson.source_root()])
3061
Lennart Poettering51b13862017-12-20 12:51:14 +01003062############################################################
3063
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003064status = [
3065 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3066
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003067 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003068 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003069 'prefix directory: @0@'.format(prefixdir),
3070 'rootprefix directory: @0@'.format(rootprefixdir),
3071 'sysconf directory: @0@'.format(sysconfdir),
3072 'include directory: @0@'.format(includedir),
3073 'lib directory: @0@'.format(libdir),
3074 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003075 'SysV init scripts: @0@'.format(sysvinit_path),
3076 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003077 'PAM modules directory: @0@'.format(pamlibdir),
3078 'PAM configuration directory: @0@'.format(pamconfdir),
3079 'RPM macros directory: @0@'.format(rpmmacrosdir),
3080 'modprobe.d directory: @0@'.format(modprobedir),
3081 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3082 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3083 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3084 'bash completions directory: @0@'.format(bashcompletiondir),
3085 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003086 'extra start script: @0@'.format(get_option('rc-local')),
3087 'extra stop script: @0@'.format(get_option('halt-local')),
3088 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3089 get_option('debug-tty')),
3090 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003091 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003092 'maximum system UID: @0@'.format(system_uid_max),
3093 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003094 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3095 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3096 'minimum container UID base: @0@'.format(container_uid_base_min),
3097 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003098 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003099 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003100 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003101 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003102 'nobody user name: @0@'.format(nobody_user),
3103 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003104 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003105 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003106
3107 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003108 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003109 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003110 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003111 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
3112 'default locale: @0@'.format(default_locale)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003113
3114alt_dns_servers = '\n '.join(dns_servers.split(' '))
3115alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3116status += [
3117 'default DNS servers: @0@'.format(alt_dns_servers),
3118 'default NTP servers: @0@'.format(alt_ntp_servers)]
3119
3120alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3121 '@@0@'.format(time_epoch)).stdout().strip()
3122status += [
3123 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3124
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003125status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003126 'static libsystemd: @0@'.format(static_libsystemd),
3127 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003128
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003129# TODO:
3130# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3131# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3132# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3133
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003134if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003135 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003136
3137 if have_gnu_efi
3138 status += [
3139 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003140 'EFI CC @0@'.format(' '.join(efi_cc)),
Yu Watanabe359b4962017-11-25 20:35:24 +09003141 'EFI lib directory: @0@'.format(efi_libdir),
3142 'EFI lds directory: @0@'.format(efi_ldsdir),
3143 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003144 endif
3145endif
3146
3147found = []
3148missing = []
3149
3150foreach tuple : [
3151 ['libcryptsetup'],
3152 ['PAM'],
3153 ['AUDIT'],
3154 ['IMA'],
3155 ['AppArmor'],
3156 ['SELinux'],
3157 ['SECCOMP'],
3158 ['SMACK'],
3159 ['zlib'],
3160 ['xz'],
3161 ['lz4'],
3162 ['bzip2'],
3163 ['ACL'],
3164 ['gcrypt'],
3165 ['qrencode'],
3166 ['microhttpd'],
3167 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003168 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003169 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003170 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003171 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003172 ['libidn'],
3173 ['libiptc'],
3174 ['elfutils'],
3175 ['binfmt'],
3176 ['vconsole'],
3177 ['quotacheck'],
3178 ['tmpfiles'],
3179 ['environment.d'],
3180 ['sysusers'],
3181 ['firstboot'],
3182 ['randomseed'],
3183 ['backlight'],
3184 ['rfkill'],
3185 ['logind'],
3186 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003187 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003188 ['importd'],
3189 ['hostnamed'],
3190 ['timedated'],
3191 ['timesyncd'],
3192 ['localed'],
3193 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003194 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003195 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3196 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003197 ['coredump'],
3198 ['polkit'],
3199 ['legacy pkla', install_polkit_pkla],
3200 ['efi'],
3201 ['gnu-efi', have_gnu_efi],
3202 ['kmod'],
3203 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003204 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003205 ['blkid'],
3206 ['dbus'],
3207 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003208 ['nss-myhostname'],
3209 ['nss-mymachines'],
3210 ['nss-resolve'],
3211 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003212 ['hwdb'],
3213 ['tpm'],
3214 ['man pages', want_man],
3215 ['html pages', want_html],
3216 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003217 ['SysV compat'],
3218 ['utmp'],
3219 ['ldconfig'],
3220 ['hibernate'],
3221 ['adm group', get_option('adm-group')],
3222 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003223 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003224 ['debug hashmap'],
3225 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003226 ['debug siphash'],
Yu Watanabe20e97dd2018-11-23 00:28:27 +09003227 ['debug udev'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003228 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003229 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003230 ['link-udev-shared', get_option('link-udev-shared')],
3231 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003232]
3233
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003234 if tuple.length() >= 2
3235 cond = tuple[1]
3236 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003237 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3238 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003239 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003240 endif
3241 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003242 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003243 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003244 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003245 endif
3246endforeach
3247
3248status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003249 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003250 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003251 '',
3252 'disabled features: @0@'.format(', '.join(missing)),
3253 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003254message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003255
3256if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003257 warning('\n' +
3258 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3259 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3260 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003261endif